Chúng tôi muốn biết thuật toán mà lưới Docker sử dụng để định tuyến các yêu cầu đến các vùng chứa. Đây là lý do tại sao:
Chúng tôi triển khai các ứng dụng của mình cho bầy docker tự lưu trữ. Chúng tôi sử dụng lưới định tuyến docker để hướng lưu lượng truy cập đến các nút riêng lẻ, như thế này:
- internet ->
- tường lửa ->
- giám đốc tải (nginx) ->
- định tuyến nginx "ít kết nối nhất" tới ba trình quản lý bầy đàn ->
- lưới docker ->
- Bất kỳ vùng chứa nào trong số sáu vùng chứa ứng dụng chạy trên ba nút docker không phải người quản lý khác nhau
Các nhà phát triển của chúng tôi nghi ngờ rằng lưới docker đang định tuyến lưu lượng truy cập vòng quanh, điều này có thể dẫn đến việc một số vùng chứa ứng dụng bị quá tải với các yêu cầu chậm trong khi các vùng chứa khác không được sử dụng hết. Nếu các nhà phát triển đúng, chúng ta không nên sử dụng lưới docker và thay vào đó nên sử dụng giám đốc tải để hướng lưu lượng truy cập đến các vùng chứa riêng lẻ bằng thuật toán thông minh hơn so với vòng tròn.
Mặt khác, nếu lưới docker đang theo dõi có bao nhiêu yêu cầu đang bay đến từng vùng chứa và phân phối lưu lượng truy cập đến vùng chứa với ít yêu cầu nhất, thì chúng ta không cần thực hiện công việc bỏ qua lưới docker.
Câu hỏi
Lưới docker sử dụng thuật toán nào để hướng lưu lượng truy cập đến các vùng chứa có sẵn? Nó có phải là vòng tròn tính điểm đơn giản không?
Cấu hình nginx của chúng tôi
Nginx của chúng tôi nhận lưu lượng truy cập từ internet và ủy quyền cho lưới docker trên bất kỳ nút nào trong ba nút trình quản lý docker:
ngược dòng document_service {
less_conn;
máy chủ dockermgr1.nosuchdomain:8402;
máy chủ dockermgr2.nosuchdomain:8402;
máy chủ dockermgr3.nosuchdomain:8402;
}
người phục vụ {
...
proxy_pass http://document_service;
Cấu hình docker-compose của chúng tôi
Tệp docker-compose định cấu hình dịch vụ để có sáu bản sao trên ba nút trình chạy docker:
phiên bản: "3.4"
dịch vụ:
dịch vụ tài liệu:
hình ảnh: ${IMAGE_LOCATION}documents_service/documentsservice:prod-${COMPOSE_BUILD_TAG:-latest}
container_name: dịch vụ tài liệu
cổng:
- "8402:80"
...
triển khai:
bản sao: 6
vị trí:
ràng buộc: [node.role != manager]
tài nguyên:
Hạn mức:
bộ nhớ: 1024MB
cập nhật_config:
song song: 1
thứ tự: bắt đầu trước
fail_action: tiếp tục
phiên bản
- docker-ce 5:19.03.12~3-0~debian-buster
- nginx-đầy đủ 1.14.2-2+deb10u4
- docker-soạn thảo: 1.27.4