6

server Specs:Docker mạng cầu, các cuộc gọi HTTP giữa container RẤT chậm (sau khi nâng cấp Docker)

os: Ubuntu 14.04 
docker: 1.10.2 
docker-compose: 1.6.0 

Chỉ gần đây nâng cấp 1,9-1,10 và thêm Docker-soạn (không sử dụng soạn chưa tuy nhiên). Vấn đề chậm chạp không xảy ra trước khi nâng cấp.

Cũng Docker được cấu hình với IP của tôi DNS và proxy như vậy trong '/ etc/default/Docker'

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --dns 138.XX.XX.X" 
export http_proxy="http://proxy.myproxy.com:8888/" 

(ip của tôi là hoàn toàn nêu ra đó, chỉ cần sử dụng X cho câu hỏi)

tôi có hai container (container_a, container_b) đều chạy máy chủ HTTP (Node.js), cả hai container đang chạy trên một mạng lưới cầu (--net = mynetwork) tôi tạo ra thông qua:

docker network create mynetwork 

Hai container làm cho HTTP gọi giữa nhau bằng cách sử dụng container_name là "host" cho các cuộc gọi HTTP như vậy:

container_b:3000/someurl 

Những cuộc gọi giữa hai container qua mạng Docker cầu được tham gia một rất dài thời gian để hoàn thành (~ 5 giây). Các cuộc gọi này thường chạy dưới 100 mili giây.

Khi tôi thay đổi mạng từ --net = mynetwork trên các vùng chứa đó và thay vì chạy cả hai như --net = host, trong khi cũng sửa đổi các cuộc gọi http của tôi để sử dụng "localhost" làm máy chủ thay vì tên vùng chứa và để lộ cổng thông qua cờ -p ... Cuộc gọi chạy trong thời gian dự kiến ​​là < 100ms.

Dường như mạng cầu nối docker đang khiến cuộc gọi giữa các vùng chứa của tôi mất nhiều thời gian.

Bất kỳ ý tưởng nào về nơi tôi có thể xem xét để chẩn đoán/khắc phục vấn đề này?

Trả lời

4

Sự cố này là kết quả của thay đổi đối với DNS nội bộ được phát hành như một phần của docker 1.10.

Thông tin thêm về có thể được tìm thấy ở đây: https://github.com/docker/docker/issues/20661

tôi kích hoạt chế độ debug trên daemon và nhìn qua các bản ghi như tôi đã yêu cầu. Tôi có thể nhìn thấy nó đầu tiên thử "8.8.8.8" trước khi đi vào "8.8.4.4" và sau đó cuối cùng đến DNS IP tôi đã thêm cho máy chủ của tôi và giải quyết. Đoán của tôi là proxy công ty của tôi đang gây ra hai yêu cầu đầu tiên (8,8 ..) để treo và cuối cùng hết thời gian chờ, làm chậm tốc độ xử lý tại IP chính xác, địa chỉ thứ ba trong danh sách.

Giải pháp của tôi là thay đổi thứ tự DNS trong tệp/etc/default/docker của tôi để có IP nội bộ trước tiên.

DOCKER_OPTS="--dns 138.XX.XX.X --dns 8.8.8.8 --dns 8.8.4.4 " 

Điều này dường như khắc phục được sự cố của chúng tôi vì nó giải quyết yêu cầu HTTP dựa trên container_name của chúng tôi giữa các vùng chứa trước với IP máy chủ lưu trữ đó.

+0

Bạn có tìm thấy tệp đó trong vùng chứa không? – Notflip

+0

@Notflip '/ etc/default/docker' là tệp cấu hình của trình cắm thêm daemon. Nó sống trên máy chủ. –

Các vấn đề liên quan