1
我試圖使用HAProxy作爲使用redis的python webapp的loadbalancer。我正在使用docker-compose.yml將docker-run命令轉換爲docker-compose - 但我遇到了問題Docker-Compose HAProxy缺少前端
下面是我當前的「docker run」命令,它工作得非常好!
docker run --name sdnapi-redis -v /opt/redis:/data -p 6379:6379 -d redis redis-server --appendonly yes
docker run -d --name sdnapi1 --link sdnapi-redis:redis mycomp/sdnapi
docker run -d --name sdnapi2 --link sdnapi-redis:redis mycomp/sdnapi
docker run -d --name sdnapilb -p 80:80 -p 443:443 -p 1936:1936 -e DEFAULT_SSL_CERT="$(awk 1 ORS='\\n' ./certs/cert.pem)" -v /certs/:/certs/ --link sdnapi1:sdnapi1 --link sdnapi2:sdnapi2 dockercloud/haproxy
這裏是我的搬運工,compose.yml應該複製相同的功能
version: '2'
services:
sdnapi:
image: mycomp/sdnapi
links:
- sdnapi-redis:redis
sdnapilb:
image: dockercloud/haproxy:1.2.1
environment:
- DEFAULT_SSL_CERT
volumes:
- /certs/:/certs/
ports:
- "80:80"
- "443:443"
- "1936:1936"
links:
- sdnapi:sdnapi
sdnapi-redis:
image: redis
volumes:
- /opt/redis:/data
ports:
- "6379:6379"
command: redis-server --appendonly yes
當我運行的泊塢窗運行命令,這是sdnapilb日誌:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
log-send-hostname
maxconn 4096
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
stats socket /var/run/haproxy.stats level admin
ssl-default-bind-options no-sslv3
ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DHE-DSS-AES128-SHA:DES-CBC3-SHA
defaults
balance roundrobin
log global
mode http
option redispatch
option httplog
option dontlognull
option forwardfor
timeout connect 5000
timeout client 50000
timeout server 50000
listen stats
bind :1936
mode http
stats enable
timeout connect 10s
timeout client 1m
timeout server 1m
stats hide-version
stats realm Haproxy\ Statistics
stats uri/
stats auth stats:stats
frontend default_frontend
bind :80
bind :443 ssl crt /certs/
reqadd X-Forwarded-Proto:\ https
maxconn 4096
defcon 1
default_backend default_service
當我用「docker-compose up -d」運行docker-compose.yml時,我丟失了前端部分。
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
log-send-hostname
maxconn 4096
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
stats socket /var/run/haproxy.stats level admin
ssl-default-bind-options no-sslv3
ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DHE-DSS-AES128-SHA:DES-CBC3-SHA
defaults
balance roundrobin
log global
mode http
option redispatch
option httplog
option dontlognull
option forwardfor
timeout connect 5000
timeout client 50000
timeout server 50000
listen stats
bind :1936
mode http
stats enable
timeout connect 10s
timeout client 1m
timeout server 1m
stats hide-version
stats realm Haproxy\ Statistics
stats uri/
stats auth stats:stats
你能看到任何問題與任何設置?我想用docker-compose來擴展它的能力。
嘗試在不使用-d的情況下運行它,以便您可以在終端中看到輸出。這將幫助您調試,然後發佈錯誤以及您的問題 – ExoticChimp
感謝您的想法。我嘗試過,但除了缺少前端部分的haproxy.cfg輸出外,日誌中沒有太多內容。統計頁面(1936年端口)工作正常,但由於前端缺失,80端口或443端口沒有暴露 – truncj