2011-01-28 50 views
13

Chúng tôi có một ứng dụng Java EE (EAR tệp được triển khai trên JBoss, MySQL, MongoDB) mà chúng tôi muốn triển khai trên một phiên bản EC2 của Amazon. Tôi có một số câu hỏi liên quan đến việc triển khai các phương pháp hay nhất.Triển khai ứng dụng Java EE trên Amazon EC2

  1. gì là phổ biến nhất được sử dụng Linux AMI mà chúng ta có thể dựa vào đó để triển khai mạnh mẽ (Có rất nhiều Linux biến thể, và tôi không chắc chắn mà AMI thường được sử dụng, nó là Fedora, CentOS, Red Hat , SUSE ...)
  2. Làm cách nào để chúng tôi xử lý các nâng cấp sản xuất (sửa đổi tệp EAR hoặc nâng cấp lược đồ). Có bất kỳ công cụ nào có sẵn để xử lý cài đặt này hoặc khôi phục các thay đổi này hay không.
  3. Khả năng sao lưu dữ liệu nào có sẵn cho cơ sở dữ liệu?
  4. Tôi có nên dựa vào Amazon RDS để được hỗ trợ MySQL không?
  5. Tôi nên xử lý hỗ trợ cho MongoDB bằng cách nào?

Đây là lần đầu tiên, tôi lưu trữ ứng dụng web và sẽ đánh giá cao một số yếu tố đầu vào về cách quản lý trường hợp sản xuất.

Trả lời

4

Câu hỏi hay!

1) Tôi khuyên bạn nên sử dụng bất kỳ biến thể Linux nào bạn cảm thấy thoải mái nhất. Nếu bạn có một người thực sự quan tâm đến CentOS, hãy đi với điều đó. Một khi bạn đã chọn AMI của bạn, lấy nó và tùy chỉnh nó bằng cách cấu hình như thế nào bạn muốn nó. Sau đó lưu rằng AMI làm bố cục cơ sở của bạn. Nó sẽ làm cho ra các máy mới dễ dàng hơn nhiều và tiết kiệm thịt xông khói của bạn nếu EC2 đi xuống.

2) Nâng cấp bằng EC2 có thể được làm mát. Thay vì nâng cấp một hệ thống trực tiếp, hãy lấy AMI được cấu hình sẵn của bạn, cập nhật và lưu AMI đó là myAMI-1.1 (hoặc bất kỳ thứ gì). Bằng cách đó, bạn có thể lật qua hệ thống mới gần như ngay lập tức VÀ quay trở lại phiên bản trước đó trong trường hợp có sự cố xảy ra. Bạn cũng có thể sao lưu các cá thể DB sang S3. Giá rẻ khoảng $ 0,10/GB/Tháng.

3) Tùy thuộc vào vị trí lưu trữ DB của bạn. Nếu bạn đang lưu trữ nó trên trường hợp EC2 của bạn, bạn đang gặp rắc rối. Các phiên bản EC2 không có lưu trữ liên tục. Vì vậy, nếu máy của bạn bị treo, bạn sẽ mất mọi thứ. Tôi không quen thuộc với hệ thống Amazon DB nhưng bạn cũng nên nhìn vào Elastic Block Store. Về cơ bản nó là một ổ đĩa cứng thực sự mà bạn có thể viết. Khi bạn muốn nâng cấp lược đồ của mình, hãy đổ DB đầy đủ sang S3 và sau đó thực hiện nâng cấp lược đồ thực tế của bạn. Nếu xảy ra sự cố, bạn có thể kéo phiên bản trước đó ra khỏi S3.

4) & 5) Tôi chưa bao giờ sử dụng chúng để tôi không thể giúp bạn.

9
  1. Tôi đồng ý với câu trả lời của Mark Robinson: Sử dụng bất kỳ biến thể Unix nào bạn cảm thấy thoải mái nhất. Nó có thể trả tiền để chọn một với sự hỗ trợ đám mây phong nha. Đối với trang web của tôi, tôi sử dụng Ubuntu.
  2. Tôi có một hình ảnh chung là nền tảng của mọi phiên bản triển khai tôi làm. Tôi có www.mysite.com trỏ đến một IP đàn hồi để tôi có thể quyết định trường hợp nó đi đến. Các hình ảnh phổ biến có tất cả các phần mềm tôi cần cài đặt (Postgres/Postgis/Tomcat/etc) nhưng cơ sở dữ liệu và các thư mục dữ liệu máy chủ web và symlinked để Elastic Block Store (EBS) trường hợp.

    Khi đến lúc triển khai, tôi bắt đầu một phiên bản mới, đóng băng và chụp nhanh các tập EBS về sản xuất và tạo các tập mới. Tôi chỉ ra ví dụ mới của mình ở tập mới và sau đó cài đặt bất cứ thứ gì tôi cần vào đó.Một khi tôi đã hút thuốc thử nghiệm tất cả mọi thứ thành công tôi có thể chuyển đổi IP đàn hồi để trỏ đến trường hợp mới và tất cả mọi thứ tiếp tục đi.

    Tôi sẽ lưu ý rằng hiện tại tôi có lợi thế mà chỉ tôi mới có thể sửa đổi cơ sở dữ liệu; không người dùng nào có thể. Điều này sẽ sớm trở thành vấn đề.

  3. Nếu bạn sử dụng hệ thống tệp XFS ở đầu khối lượng EBS thì bạn có thể yêu cầu XFS đóng băng hệ thống tệp (do đó không có cập nhật), hãy gọi EC2 api để chụp nhanh âm lượng rồi hủy hệ thống tệp. Kết quả là ảnh chụp nhanh được chụp nhanh và gửi đến S3. Tôi có một kịch bản hàng đêm mà thực hiện điều này.

  4. Nếu RDS có vẻ như nó sẽ phù hợp với nhu cầu của bạn thì hãy sử dụng nó. Amazon đang xây dựng rất nhiều công cụ vững chắc một cách nhanh chóng và điều này sẽ giảm bớt các vấn đề về khả năng mở rộng của bạn nếu bạn có bất kỳ vấn đề gì.

  5. Tôi xin lỗi, tôi không biết.

0
What is the most commonly used Linux AMI which we can rely on for a robust deployment (There are so many Linux variants, and I am not sure which AMI is commonly used, is it Fedora, CentOS, Red Hat, SUSE ...) 
How do we handle production upgrades (EAR file modifications or schema upgrades). Are there any tools which are available to handle this installation or rollback of these changes. 
What kind of data backup capability is available for the database? 
Should I rely on Amazon RDS for MySQL support? 
How should I handle support for MongoDB? 
  1. Bất kỳ Linux AMI sẽ thực hiện công việc, những gì bạn cần chỉ là một JRE. (giả định công việc phát triển không bắt buộc). Nếu bạn cần theo dõi hành vi JVM, sau đó cài đặt JConsole.
  2. Cách dễ nhất và không đau là SSH vào thư mục chính cục bộ, chuyển tệp lớp/tệp EAR đã cập nhật (tùy thuộc vào số lượng thay đổi được áp dụng) và sao chép và thay thế vào thư mục triển khai Tomcat, khởi động lại apache. (đảm bảo bạn đã thử nghiệm cục bộ trước khi tải lên sản xuất).
  3. Tùy thuộc vào cơ sở dữ liệu bạn đang sử dụng, nếu bạn đang sử dụng MySQL thì chỉ cần sao lưu theo lịch ghi vào thư mục chính của bạn để thỉnh thoảng bạn có thể SSH và tải xuống bản sao cho mục đích sao lưu. Tôi sẽ không xem xét trả lời trên Amazon RDS để hỗ trợ MySQL vì 2 lý do: MySQL đủ nhỏ và dễ quản lý, và tôi cũng muốn có toàn quyền kiểm soát cơ sở dữ liệu và tại sao phải trả thêm tiền khi bạn có thể tự mình làm điều đó FOC?
  4. Việc sử dụng MongoDB phải phù hợp với mục đích của đơn đăng ký và lợi ích bạn có được từ đó. Tôi khuyên bạn nên sử dụng MongoDB để truy xuất dữ liệu tĩnh như trạng thái, quốc gia, khu vực, v.v ... nơi mà MySQL chỉ được sử dụng cho dữ liệu giao dịch.
0

Nếu bạn có thể sống với việc triển khai ứng dụng Java EE của mình trên TomEE thay vì JBoss, Boxfuse thực hiện những gì bạn muốn.

Đối với bạn Java EE ứng dụng mà bạn theo nghĩa đen chỉ phải thực hiện (TomEE sử dụng các file chiến tranh thay vì file tai):

boxfuse run my-tomee-app-1.0.war -env=prod 

này sẽ

  1. Tạo AMI chứa TomEE và ứng dụng của bạn đã sẵn sàng để khởi động
  2. Tạo IP đàn hồi hoặc ELB
  3. Tạo nhóm bảo mật với đúng cổng được xác định
  4. Tạo một nhóm tự động mở rộng quy mô
  5. Khởi dụ của bạn (s)

Bất kỳ bản cập nhật tiếp theo sẽ được thực hiện như một triển khai không thời gian chết màu xanh/màu xanh lá cây.

Thông tin thêm: https://boxfuse.com/blog/javaee-aws

Các vấn đề liên quan