Làm thế nào để bạn tự động hóa failover trên EC2?


13

Trong số những người quản lý các cụm riêng của họ (nghĩa là không sử dụng / thanh toán cho Amazon Autoscale, Rightscale, Scalr, v.v.), bạn quản lý các phiên bản của mình trên EC2 và xử lý (ví dụ) như thế nào? Tôi tự hỏi liệu hầu hết mọi người cuối cùng chỉ viết ra các tập lệnh kịch bản riêng của họ chống lại API EC2, như tôi nghi ngờ.

Đó chắc chắn là cách tiếp cận của chúng tôi: đánh dấu daemon giám sát / khởi động lại dựa trên Python Boto của chúng tôi chạy ngoài trang web, lắng nghe những người giữ UDP từ các phiên bản của chúng tôi. Khi thất bại, chúng tôi chụp nhanh khối lượng, đăng ký hình ảnh, bắt đầu phiên bản mới, xóa khối lượng cũ, v.v.

Thông thường, khi hack các tập lệnh của chúng tôi, tôi nghĩ rằng phải có một số công cụ nguồn mở ngoài kia đã xử lý các vấn đề này và không có ràng buộc nào về (nói) Scalr, nhưng tôi luôn quay lại từ Google tay không. (Những thứ như Scalr khá hạn chế trong bộ / phiên bản / cấu hình phần mềm được hỗ trợ và có các cách chuyên dụng và IMO rườm rà để thao tác các thiết lập này.)

Ngoài ra, hệ sinh thái Linux-HA / Pacemaker (Heartbeat, ldirectord, v.v.) nghe có vẻ không thực sự phù hợp với EC2 . (Nhưng sau đó tôi đã tìm thấy điều này - mặc dù tôi không chắc đây thực sự là một giải pháp chất lượng cao).

Câu trả lời:


5

Chà, tôi không có ý chỉ nói rõ ràng, nhưng ý tưởng chung là đẩy sự phức tạp này vào các dịch vụ do Amazon quản lý.

Vì vậy, trên frontend, bạn sẽ sử dụng Cân bằng tải đàn hồi của Amazon (ELB) để cung cấp cân bằng tải khả dụng cao. Ở phía sau, bạn sử dụng Dịch vụ cơ sở dữ liệu quan hệ của Amazon (MySQL được lưu trữ), SimpleDB và S3 để lưu trữ. Tất cả những thứ này được quản lý bởi Amazon và chứa một số loại xử lý chuyển đổi dự phòng / tính sẵn sàng cao.

Điều này thường rời khỏi các máy chủ ứng dụng web của bạn và bất kỳ loại máy chủ phổ biến nào bạn có thể đang sử dụng (kết xuất máy chủ, tự lưu trữ dữ liệu NoQuery, v.v.).

Các máy chủ Webapp thường được xử lý đủ tốt với các kiểm tra sức khỏe được tích hợp trong ELB. Bạn có thể chấp nhận sự suy giảm hiệu suất nhỏ khi một máy chủ webapp ngừng hoạt động hoặc cung cấp máy chủ +1 liên tục nhiều hơn mức bạn cần. Hoặc nếu cấu hình của bạn đơn giản, thì khi máy chủ webapp bị lỗi, ELB cùng với Cloudwatch có thể tự động tạo ra một máy chủ webapp mới cho bạn.

Máy chủ tùy chỉnh của riêng bạn là một vấn đề khác. Đối với những điều này là sự thật, bạn tự mình làm và sẽ cần phải thực hiện với các phương thức tích hợp trong ứng dụng hoặc nối băng keo với nhau một cái gì đó với các tập lệnh tùy chỉnh / công cụ HA nguồn mở.

Mua giải pháp của Rightscale có thể quá đắt. Nhưng các công cụ rẻ hơn của Amazon như ELB, cảnh báo CloudWatch cơ bản (hiện miễn phí ở độ phân giải 5 phút) hoặc AutoScale rất đáng giá nếu bạn cần tính sẵn sàng cao.


3
Chúng tôi đã quen thuộc với bộ tính năng AWS, cũng như các hạn chế của chúng. Lấy ví dụ đầu tiên của bạn, ELB được truy cập thông qua CNAME RR, không thể cùng tồn tại với RR RR và do đó không thể phục vụ TLD, cộng với không thể truy cập qua IP tĩnh - sự thất vọng vang vọng khắp các diễn đàn. Lấy ví dụ thứ hai của bạn, vâng, RDS là MySQL, đó là giới hạn khổng lồ. Có, chúng tôi quan tâm đến việc tự động chuyển đổi dự phòng các loại máy của chúng tôi. Có, triển khai đám mây riêng có liên quan đến chúng tôi. Vâng, tôi chỉ tò mò. V.v.
Yang

2
@Yang: Bạn nên đặt câu hỏi của bạn cẩn thận hơn và tiết kiệm cho tôi những rắc rối khi gõ câu trả lời của tôi. Không có giải pháp một kích cỡ phù hợp cho tất cả HA; nó phụ thuộc vào dịch vụ được đề cập, cách giữ trạng thái, thuộc tính chuyển đổi giao thức, v.v. Bạn nói đúng về những hạn chế / khó khăn khi sử dụng các công cụ HA cấp IP điển hình trên EC2. Nhưng không có câu trả lời duy nhất áp dụng chung cho "HA trên AWS".
Jesper M

0

RightScale có một số bài viết tuyệt vời về cách tự động chuyển đổi dự phòng trên EC2. Mặc dù hầu hết trong số chúng chỉ cho bạn cách thực hiện bằng chính RightScale, nhưng các nguyên tắc này rất chung chung và có thể hữu ích cho bất kỳ ai nghĩ đến cách thiết lập kiến ​​trúc chuyển đổi dự phòng trên EC2.


0

Các vấn đề bạn mô tả (HA, giám sát các máy chủ tùy chỉnh, dịch vụ 'khai thác ống dẫn') thường được xử lý bởi nhà cung cấp PaaS. Rightscale và Scalr đã được đề cập trong câu trả lời trước đó và có thêm các tùy chọn tốt (xem tại đây để biết một số tùy chọn PaaS:

/programming/9542784/looking-for-paas-providers-recommendations )

Bạn nên xem xét nhà cung cấp nào phù hợp nhất với những gì bạn cần.

Thông báo do: Tôi làm việc cho cloudify, một nhà cung cấp PaaS nguồn mở.


0

Gần đây tôi đã viết một bài đăng trên blog kỹ thuật của chúng tôi về cách sử dụng ELB kết hợp với Tự động nhân rộng để đạt được chuyển đổi dự phòng tự động cho bất kỳ loại ứng dụng nào. Nó bao gồm cách kiểm tra sức khỏe ELB có thể được sử dụng để ping trạng thái của ứng dụng của bạn và kích hoạt các hành động mở rộng tự động.


0

Bạn cài đặt nhịp tim trên cả hai máy chủ Bạn đính kèm IP đàn hồi vào máy chủ 'hoạt động' Bạn định cấu hình tập lệnh để thực hiện chuyển đổi dự phòng bằng cách khởi tạo yêu cầu API để lấy IP đàn hồi Ngay khi máy chủ 'chờ' có IP đàn hồi ( mất khoảng 30-60 giây) nó có thể là chủ / hoạt động.

Tôi không có chi tiết cụ thể để cung cấp ở đây.


-1

Amazon đã cung cấp Cân bằng tải đàn hồi ... Tại sao phải phát minh lại bánh xe?


3
Vì những hạn chế khác nhau của ELB? Bởi vì nó yêu cầu CNAME và không thể phục vụ cả foo.com và www.foo.com? Bởi vì tôi muốn thực hiện logic lập lịch tùy chỉnh? Bởi vì tôi chỉ tò mò về cách bạn tự triển khai ELB trong một cụm máy ảo không đáng tin cậy? Bạn chọn đi.
Dương

@Yang, bạn làm điều đó giống như bạn sẽ làm nếu chúng là máy chủ trong trung tâm dữ liệu của bạn. Không có sự khác biệt cơ bản, không có nước sốt kỳ diệu làm cho nó trở thành một môi trường đám mây.
Chris S
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.