我試圖在Docker主機中設置HAProxy。使用HAProxy和Docker進行動態DNS解析
使用HAProxy的1.7和碼頭工人1.12
我haproxy.cfg樣子:
# Simple configuration for an HTTP proxy listening on port 81 on all
# interfaces and forwarding requests to a single backend "servers" with a
# single server "server1" listening on 127.0.0.1:8000
global
daemon
maxconn 256
resolvers docker
# nameserver dnsmasq 127.0.0.1:53
nameserver dns 127.0.0.1:53
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
default-server init-addr none
frontend http-in
bind *:80
default_backend www_somedomain1_com
# Define hosts
acl host_www_somedomain1_com hdr(host) -i somedomain1.com
acl host_www_somedomain1_com hdr(host) -i www.somedomain1.com
acl host_www_somedomain2_com hdr(host) -i www.somedomain2.com
## figure out which one to use
use_backend www_somedomain1_com if host_www_somedomain1_com
use_backend www_somedomain2_com if host_www_somedomain2_com
backend www_somedomain1_com
# Utilizing the Docker DNS to resolve below host
# server server1 www-somedomain1-com maxconn 32 check port 80
server server1 www-somedomain1-com resolvers docker check maxconn 32
backend www_somedomain2_com
# Utilizing the Docker DNS to resolve below host
# server server1 www-somedomain2-com maxconn 32 check resolvers docker resolve-prefer ipv4
server server1 www-somedomain2-com maxconn 32 check port 80
我想用多克的嵌入式DNS系統 - 這,在我的理解,只使用一個用戶時啓用定義網絡。
所以我創建了一個網絡(使用默認的橋式驅動器)
docker network create mynetwork
當我跑我的兩個命名泊塢窗的容器,(我-HAProxy的和WWW-somedomain1-COM),我將它們添加到網絡--net標誌。
泊塢窗運行命令:
docker run --name myhaproxy --net mynetwork -p 80:80 -d haproxy
docker run --name www-somedomain1-com --net mynetwork -d nginx
我知道泊塢DNS是功能性的,因爲我可以從一個容器解析到其他的時候我在bash shell上他們跳。我無法在HAProxy中獲得正確的組合/配置以啓用動態DNS解析。
HAProxy的統計頁面始終顯示下游後端爲棕色/解析問題....
一些事情幫助: - 「默認服務器的init-地址無」有助於通過HAProxy的配置檢查啓動。
任何指導非常感謝!
您可以發佈您'泊塢窗run'命令?任何你沒有使用docker-compose這個環境的理由? – jmiraglia
你可以在容器內運行dig/nslookup嗎? – Baptiste
你也可以在套接字上發佈「show stat resolvers」以獲得DNS解析統計信息的轉儲,我們可以看到報告了哪種類型的errros – Baptiste