我们在 AWS 中安装了 Haproxy,它会将所有流量重定向到我们的开发环境。最近,我在其中一个 Ec2 实例中部署了 2 个 docker 容器。我想通过 Haproxy 访问这些容器。指导我如何配置 haproxy 重定向到容器。查看下面的示例配置。
global
log /dev/log local0
log /dev/log local1 notice
stats timeout 30s
maxconn 4096
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
option tcplog
option dontlognull
timeout connect 15s
timeout client 15s
timeout server 15s
frontend http_80_frontend
bind *:80
mode http
redirect scheme https code 301 if !{ ssl_fc }
frontend https_443_frontend
bind *:443
option tcplog
mode tcp
acl tls req.ssl_hello_type 1
tcp-request inspect-delay 5s
tcp-request content accept if tls
acl container01 req.ssl_sni -i container01.test.com
use_backend container01 if container01
acl container02 req.ssl_sni -i container02.test.com
use_backend container02 if container02
backend container01
mode tcp
option ssl-hello-chk
server container01 10.10.1.10:9090 check
backend container02
mode tcp
option ssl-hello-chk
server container02 10.10.1.10:9091 check
答案1
如果您将这些容器作为服务运行(根据目的建议),则可以将它们放在 Docker HAProxy 容器后面。就像创建服务、启动容器、启动 HAProxy 容器并将其配置为指向其他两个容器和特定端口一样简单。这是演示如何使用 Docker Cloud 上的 GUI 执行此操作的教程之一 - 但是所有相同的概念都适用于 CLIhttps://docs.docker.com/docker-cloud/apps/load-balance-hello-world/#launch-the-web-service