Chúng tôi có các môi trường Docker tự động mở rộng trong đó chúng tôi sử dụng Consul để khám phá dịch vụ. Các môi trường này có thể thêm hoặc xóa một thể hiện cứ sau vài phút.
Thử nghiệm lãnh sự ban đầu của chúng tôi cho thấy rằng rất dễ dàng để Lãnh sự mất số đại biểu. Có lẽ ngây thơ, thử nghiệm đầu tiên của chúng tôi là một thiết lập trong đó chúng tôi sẽ khởi động máy chủ Lãnh sự trên tất cả các trường hợp và để máy chủ Lãnh sự đó tham gia cụm. Phần đó đã hoạt động tốt.
Tuy nhiên, Consul không nhanh chóng gặt hái các nút không thể truy cập (mất khoảng 72 giờ?) Trong một môi trường rất có thể mở rộng, điều đó có nghĩa là danh sách các máy chủ của Consul tiếp tục phát triển và theo thời gian, hầu hết chúng đều "không thể truy cập được" và tại thời điểm đó, cụm mất đại biểu của nó.
Chúng tôi đã thấy phản hồi của armon từ gần hai năm trước về vấn đề này trên GitHub: https://github.com/hashicorp/consul/issues/454#issuecomment-125767550
Hầu hết những vấn đề này là do hành vi mặc định của chúng tôi cố gắng nghỉ phép duyên dáng. Mô hình tinh thần của chúng tôi là các máy chủ tồn tại lâu và không tắt máy vì bất kỳ lý do nào khác ngoài việc mất điện đột xuất hoặc bảo trì duyên dáng trong trường hợp bạn cần rời khỏi cụm. Nhìn lại đó là một mặc định xấu. Hầu như tất cả những điều này có thể tránh được chỉ bằng cách giết -9 máy chủ của Lãnh sự, ảnh hưởng đến việc mất điện.
Chúng tôi đã cố gắng tránh chạy các nút chuyên dụng, tồn tại lâu dài. Hãy nhớ rằng không có điểm nào, chúng tôi xóa các trường hợp N / 2 + 1 khỏi nhóm tự động mở rộng. Cụm EC2 có thể đến bất kỳ thời điểm nào để tiếp cận hầu hết các nút và có thể bỏ phiếu xem có nên xóa nút đó khỏi cụm Lãnh sự (hoặc công cụ khác) hay không.