我正在尝试在Docker主机中设置HAProxy.
使用HAProxy 1.7和Docker 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
Run Code Online (Sandbox Code Playgroud)
我想使用Docker的嵌入式DNS系统 - 据我所知,只有在使用用户定义的网络时才启用.
所以我创建了一个网络(使用默认的桥驱动程序)
docker network create mynetwork
Run Code Online (Sandbox Code Playgroud)
当我运行我的两个命名的docker容器(my-haproxy和www-somedomain1-com)时,我将它们添加到带有--net标志的网络中.
Docker运行命令:
docker run --name myhaproxy --net mynetwork -p 80:80 -d haproxy
docker run --name www-somedomain1-com --net mynetwork -d nginx
Run Code Online (Sandbox Code Playgroud)
我知道Docker dns是有用的,因为当我在bash shell中跳转时,我可以从一个容器解析到另一个容器.我无法在HAProxy中获得正确的组合/配置以启用动态DNS解析.
HAProxy stats页面总是将下游后端显示为棕色/分辨率问题....
一些有帮助的事情: - "default-server init-addr none"有助于在启动时传递haproxy配置检查.
非常感谢任何指导!
我认为您的问题是127.0.0.1:53,当它需要127.0.0.11:53用于docker bridge网络时,您正在使用您的解析器dns 。
这是我为开发人员docker设置的haproxy设置:
global
quiet
defaults
log global
mode http
option forwardfor
timeout connect 60s
timeout client 60s
timeout server 60s
default-server init-addr none
resolvers docker_resolver
nameserver dns 127.0.0.11:53
frontend https-proxy
bind 0.0.0.0:80
bind 0.0.0.0:443 ssl crt /usr/local/etc/haproxy/dev_server.pem
redirect scheme https if !{ ssl_fc }
acl is_api_server hdr(host) -i mywebsite
use_backend api_server if is_api_server
backend api_server
server haproxyapi api-server-dev:80 check inter 10s resolvers docker_resolver resolve-prefer ipv4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4486 次 |
| 最近记录: |