Tôi tự hỏi điều gì sẽ xảy ra nếu chẳng hạn như chúng tôi sử dụng HAProxy Load Balancer một cách bền bỉ (các phiên cố định) và một máy chủ ngừng hoạt động (hoặc chúng tôi muốn thu nhỏ quy mô).
Dựa theo tài liệu của họ:
Khi thực hiện kiên trì, nếu một máy chủ gặp sự cố, thì HAProxy sẽ gửi lại người dùng đến một máy chủ khác.
Vấn đề của tôi là với định nghĩa "xuống" ở đây.Nếu chúng tôi đang chạy cái này trên Kubernetes, thì "không hoạt động" có nghĩa là nhóm không phản hồi nữa hoặc đơn giản là không hoạt động tốt (như lỗi trên đầu dò độ sống) hay có nghĩa là nhóm không chạy nữa và một cái mới đã được tạo ra ở vị trí của nó?
Tôi hỏi điều này vì tôi đang cố gắng tìm ra cách tốt nhất để duy trì việc giao hàng theo đơn đặt hàng một cách hiệu quả, vì vậy hãy xem xét ví dụ sau:
- Máy khách HTTP chạm vào Cân bằng tải bằng yêu cầu HTTP (R1) và không có phiên
- Bộ cân bằng tải sử dụng thuật toán để xác định máy chủ tốt nhất (S1), gửi R1 đến S1 và thêm cookie khi nhận được phản hồi từ máy chủ (S1)
- Các yêu cầu sau có cookie để LB biết máy chủ nào sẽ nhận yêu cầu
- Bây giờ, máy khách gửi một yêu cầu khác (R2) nhưng máy chủ (S1) không phản hồi kịp thời (nhưng nhóm vẫn đang chạy và cố gắng ghi yêu cầu đó vào Kafka dưới dạng tin nhắn)
- Vì máy khách không nhận được phản hồi kịp thời nên sẽ thử lại R2 nhưng LB thấy S1 không phản hồi nên lần này sẽ chọn máy chủ mới (S2)
- Yêu cầu R2 hiện đã thành công vì S2 vẫn ổn và bảnh bao
- Máy khách gửi R3 và nó thành công vì S2 lại ổn
- Trong khi đó, bây giờ S1 đã phục hồi và trước khi kết thúc, nó quản lý để ghi R2 vào Kafka làm rối tung thứ tự của các tin nhắn (vì bây giờ chúng tôi có R1, R2, R3, R2)
Do đó câu hỏi của tôi ở trên. Có điều gì, ngay cả khi không phải HAProxy, có thể đạt được điều này không? Có lẽ là một Bộ cân bằng tải Kubernetes? Hay tôi sẽ cần phải viết một Trình cân bằng tải tùy chỉnh sẽ phải theo dõi các nhóm và kiểm tra xem liệu chúng có đơn giản là không phản hồi hay biến mất hoàn toàn không?
FYI Tôi hoàn toàn ổn khi hy sinh tính khả dụng ở đây vì mục đích nhất quán (định lý CAP) và từ chối yêu cầu. Tôi cũng đang cố gắng tránh sử dụng một số lượng máy chủ cố định vì lý tưởng nhất là tăng và giảm quy mô của chúng theo lưu lượng truy cập.Điều chính là KHÔNG định tuyến yêu cầu nếu máy chủ trước đây phục vụ ứng dụng khách đó vẫn còn lơ lửng ở đâu đó để tránh làm rối thứ tự của các thư.
Bất cứ ý tưởng sẽ được hoan nghênh.