Nhân rộng beanstalkd cho tính sẵn sàng cao


15

Tiêu đề nói lên tất cả.

Có ai biết một cách để sao chép beanstalkd để nếu một máy chủ beanstalk bị hỏng, những nô lệ khác có thể chiếm lấy?

Đây là một cách tiếp cận tôi nghĩ ra: Tôi có thể làm cho beanstalk viết binlog của nó (với -b) vào một vị trí được chia sẻ, và sau đó bằng cách nào đó có một máy chủ thứ cấp / dự phòng bắt đầu beanstalkd nếu lỗi chính.

Phải có một cách tốt hơn mặc dù.

Câu trả lời:


5

Vì nó đang ghi vào đĩa thông qua binlog, tôi nghĩ bạn có thể làm điều gì đó tương tự như những gì quản trị viên MySQL thường làm: heartbeat w / DRBD ( ví dụ ở đây).

Lần cuối cùng tôi thử sử dụng heartbeat, nó không hỗ trợ kiểm tra không đa hướng giữa các nút, nghĩa là ít nhiều không thể chạy trên cơ sở hạ tầng đám mây / VPS (AWS, Linode, Slicehost, v.v.). Trong thực tế, hầu hết các dịch vụ phân cụm sử dụng phát đa hướng. Điều này có thể không còn là trường hợp nữa, nhưng đó là điều cần phải biết. Bạn có thể sử dụng keepaliving để cung cấp chuyển đổi dự phòng dựa trên ip, cũng chỉ hỗ trợ multicast BUT có một bản vá có sẵn thông qua Willy Tarreau (tác giả của HAProxy ) để thêm hỗ trợ unicast . Cá nhân tôi đã thử nghiệm điều này trên một cặp máy chủ Linode VPS và được giữ lại có thể chuyển đổi địa chỉ IP được chia sẻ trong trường hợp máy chủ chính bị lỗi.

Một điều bạn có thể làm có lẽ ít tối ưu hơn là viết công việc cho một số máy chủ beanstalkd (còn gọi là phân vùng). Nếu một trong số chúng bị hỏng, hãy để ứng dụng của bạn phát hiện ra điều này và viết cho (các) trường hợp khác thay thế. Nhân viên của bạn sẽ phải thăm dò thông minh từng trường hợp beanstalkd và có thể bỏ qua các trường hợp chết. Vì bạn đang binlogging, việc đưa một cá thể sao lưu trở nên dễ dàng như khởi động lại nó và ứng dụng / công nhân sẽ phát hiện ra điều này và tiếp tục như bình thường (và bắt đầu xử lý các công việc trong trường hợp mới bắt đầu). Tôi rõ ràng đang đơn giản hóa quy trình, nhưng đó là một cách khác để xử lý nó.


1
Corosync hỗ trợ unicast và là công cụ phân cụm mặc định trong các bản phát hành dựa trên Redhat.
Terence Johnson

Cảm ơn, không biết về Corosync. Sẽ ghi nhớ nó cho các dự án trong tương lai.
andrew
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.