首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HAProxy和Docker进行动态域名解析

使用HAProxy和Docker进行动态域名解析
EN

Stack Overflow用户
提问于 2016-12-15 05:21:44
回答 1查看 8.7K关注 0票数 9

我正在尝试在Docker主机中设置HAProxy。

使用HAProxy 1.7和Docker 1.12

我的haproxy.cfg看起来像这样:

代码语言:javascript
复制
# 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

我想使用Docker的嵌入式DNS系统--据我所知,只有在使用用户定义的网络时才能使用。

所以我创建了一个网络(使用默认的网桥驱动程序)

代码语言:javascript
复制
docker network create mynetwork

当我运行我的两个命名docker容器( my -haproxy和www-somedomain1-com)时,我使用--net标志将它们添加到那个网络中。

Docker运行命令:

代码语言:javascript
复制
docker run --name myhaproxy --net mynetwork -p 80:80 -d haproxy
docker run --name www-somedomain1-com --net mynetwork -d nginx

我知道Docker dns是有效的,因为当我在bash shell中跳到它们上时,我可以从一个容器解析到另一个容器。我无法在HAProxy中获得正确的组合/配置来启用动态域名系统解析。

HAProxy统计页面总是将下游后端显示为棕色/分辨率问题...

一些有用的东西:- "default-server init-addr none“帮助在启动时通过haproxy配置检查。

任何指导都是非常感谢的!

EN

回答 1

Stack Overflow用户

发布于 2017-02-09 19:18:32

我认为您的问题是,当您需要为docker网桥网络使用127.0.0.11:53时,您正在为解析器dns使用127.0.0.1:53

下面是我为dev docker设置的haproxy:

代码语言:javascript
复制
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
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41152408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档