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ó.