Trong công việc của tôi, tôi cần di chuyển một số ứng dụng Java Enterprise Enterprise hiện có sang AWS. Tôi đã trải qua nhiều trang trên aws.amazon.com và cũng đủ googled. Ngoài ra, tôi đã cố gắng đi qua tất cả các câu hỏi liên quan tại stackoverflow. Tất cả những điều này làm cho nhiều điều rõ ràng, tuy nhiên, tôi vẫn còn có một số nhầm lẫn. Đây là cấu trúc ứng dụng của chúng tôi:Cấu hình Amazon Cloud cho ứng dụng web Java EE với MySQL
- Ứng dụng dựa trên Spring sử dụng Spring MVC làm lớp trình bày và Giao diện Java đơn giản và Lớp học để xử lý doanh nghiệp và logic dữ liệu.
- MySQL được sử dụng để kiên trì.
Vì vậy, kiến trúc ứng dụng đủ đơn giản. Tuy nhiên, bắt là chúng ta cần triển khai nhiều phiên bản của ứng dụng này. Số lượng này hiện là 15 và có thể vượt quá 30. Một điểm nữa là tất cả các trường hợp này đều dùng chung một cơ sở dữ liệu chung.
Bây giờ đây là những gì chúng ta cần phải đạt được bằng cách di chuyển đến AWS:
fault tolerance- cao hơn cho ứng dụng. Gần đây chúng tôi phải đối mặt với một máy chủ/mất điện trong lưu trữ dành riêng gây ra một số giờ xuống thời gian.
- Hiệu suất cao hơn cho tất cả phiên bản ứng dụng về thời gian phản hồi và thông lượng.
- Dung sai lỗi cao hơn đối với MySQL. Trường hợp ứng dụng đã đi xuống trên một trong các máy chủ của chúng tôi gần đây do một số phần cứng (Hard Drive) mà về cơ bản đã khiến MySQL dừng đột ngột. Toàn bộ hệ thống tệp trên ổ cứng chỉ đọc mà gây ra sự cố cho các cá thể ứng dụng được lưu trữ trên máy chủ đó.
- Rõ ràng là giảm tổng chi phí và chi phí quản lý cơ sở hạ tầng.
Theo như tôi có thể hiểu được cơ sở hạ tầng AWS cho đến bây giờ, đây là những gì chúng ta cần trong AWS cho các thiết lập của chúng tôi:
- 4 trường hợp, mỗi lưu trữ khoảng 10 trường hợp ứng dụng, một số EBS dựa trên LINUX AMI với Tomcat và MySQL được cài đặt trên đó.
- Tôi đoán rằng chúng tôi cũng sẽ cần 1 trường hợp cho khả năng chịu lỗi cho mỗi trong số 4 trường hợp đó tổng cộng 8 trường hợp trong tất cả.
- Tất cả các phiên bản máy chủ sẽ có khoảng 160GB EBS.
- 4 Elastic IP
- 4 tải cân bằng đàn hồi
- thứ khác như ảnh chụp vv
Bây giờ đây là những câu hỏi của tôi:
Tôi có thực sự cần phải có mà thêm ví dụ máy chủ (đối với dung sai lỗi) cho mỗi trường hợp máy chủ chính, xem xét khuôn mặt mà EBS được tự động sao lưu bởi AWS và họ sẽ cung cấp EBS mới với cùng một dữ liệu trong trường hợp lỗi phần cứng?
Làm cách nào để chia sẻ cơ sở dữ liệu giữa tất cả các phiên bản máy chủ (4x2) trong trường hợp trên? Một tùy chọn mà tôi thấy là triển khai thực hiện phân cụm MySQL giữa các cá thể máy chủ đó. Cho phép nói, cụm MySQL sẽ chứa 1 nút quản lý, 3 nút SQL và 4 nút dữ liệu.Tuy nhiên, trong trường hợp này, việc duy trì cụm sẽ là chi phí bổ sung cho chúng tôi và điều này có thể không được chấp nhận vì chúng tôi muốn loại bỏ quản lý cơ sở hạ tầng.
Tôi có cần phải có RDS để thay thế cho cơ sở dữ liệu và xóa các phiên bản MySQL khỏi tất cả các trường hợp máy chủ (4x2) không? Nếu có, tôi có cần phải mua các trường hợp RDS ngoài các trường hợp EC2 (tôi nghĩ, nếu tôi cần mua các trường hợp riêng biệt cho RDS thì chi phí của tổng số cơ sở hạ tầng sẽ tăng ít nhất 75%.) Hoặc các trường hợp RDS cũng cung cấp cho các đơn vị tính toán để phát triển ứng dụng, do đó làm giảm tổng số trường hợp triển khai ứng dụng?
Trong trường hợp triển khai RDS, có thực sự cần các phiên bản EC2 dựa trên EBS không? Nếu chúng ta có thể loại bỏ yêu cầu EBS từ các cá thể EC2 với các cá thể RDS tại chỗ, chúng ta có thể giảm tổng chi phí.
Bất kỳ trợ giúp nào sẽ được đánh giá cao và vui lòng cho tôi biết nếu tôi không rõ ràng để xác định sự cố của mình và cần làm rõ thêm bất kỳ điểm nào.
Tôi sẽ cần ít nhất 4 máy chủ để chịu lỗi vì chúng tôi sẽ có 4 IP khác nhau cho 4 máy chủ chính vì chúng sẽ lưu trữ các phiên bản ứng dụng khác nhau và sau đó mỗi máy chủ sẽ cần ít nhất một trường hợp chịu lỗi hoặc không có lỗi khoan dung chút nào. Và đối với RDS, tôi cũng đang xem xét 2 trường hợp nhỏ với triển khai Multi-AZ. – vikas
OK. Vì bạn dường như có 4 địa chỉ IP "bên ngoài", bạn có thể cấu hình 4 trường hợp ELB (cân bằng tải đàn hồi), một trong số đó lưu trữ từng địa chỉ IP, và sau đó thêm khả năng chịu lỗi theo yêu cầu, bằng cách thêm nhiều hơn một nút tính toán EC2 cho mỗi ELB khi cần thiết.Về RDS, thiết lập đó có vẻ tốt, và Multi-AZ chắc chắn là con đường để đi. Nếu ứng dụng của bạn có quá nhiều lần đọc DB, bạn cũng có thể cấu hình thêm một số Bản sao Đọc nữa. – Viccari