gpt4 book ai didi

docker - 使用HAProxy和Docker进行动态DNS解析

转载 作者:行者123 更新时间:2023-12-04 18:59:37 24 4
gpt4 key购买 nike

我正在尝试在 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

我想使用 Docker 的嵌入式 DNS 系统——据我所知,它仅在使用用户定义的网络时启用。

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

当我运行两个命名的 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

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

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

一些有帮助的事情:
- “default-server init-addr none”有助于在启动时通过 haproxy 配置检查。

非常感谢任何指导!

最佳答案

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

这是我用于开发 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

关于docker - 使用HAProxy和Docker进行动态DNS解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41152408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com