2017-04-20 7 views
1

バックエンドサーバーのIPが変更されている間にhaproxyをリロードすることは可能ですか?もし、どう?異なるバックエンドサーバーIPを使用するハプロキシリロード

ドッキングスタックには必須です。すべてのデプロイ時に、異なるIPを持つ新しいコンテナが古いコンテナを置き換えます。

私たちの実装では、古いハプロキシプロセスが終了せず依然としてリクエストを受け入れるため、サービスは503回も戻ってくることがありますが、バックエンドサーバーはすでに消えています。 httplogは、いくつかの要求がなくなったバックエンドを転送することを示しています。

# ps aux 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root  893 0.0 0.0  0  0 ?  Zs 19:39 0:01 [haproxy] <defunct> 
root  898 0.3 0.0 49416 9640 ?  Ss 19:49 0:13 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid 
root  915 0.2 0.0  0  0 ?  Zs 19:49 0:12 [haproxy] <defunct> 
root  920 0.2 0.0 49308 10196 ?  Ss 20:57 0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid 
root  937 0.0 0.0  0  0 ?  Zs 20:57 0:00 [haproxy] <defunct> 
root  942 0.3 0.0 49296 9880 ?  Ss 20:58 0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid 
root  959 0.2 0.0 49296 9852 ?  Ss 20:58 0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid 

[編集] 私はドッカースターンモードを使用しています。私はパブリッシュサービスのポートをホストに試みました。しかし、スウォームの内部ロードバランサのパフォーマンスは悪く、私は回避しようとします。

答えて

1

異なるバックエンドサーバーを指すようにHAProxy構成を変更することは可能ですが、to bind the Docker containers' ports to predictable ports on the Docker hostの方が簡単だと思われるので、HAProxy構成を変更する必要はありません。例えば

docker run -d -p 127.0.0.1:80:9999 hello_world 

そして、あなたのHAProxy設定が返信用

backend something 
    # Assuming the Docker host's IP address is 192.0.2.123 
    server some-server 192.0.2.123:9999 
+0

おかげのようになります。ドッカースタックについては、私はドッカースターンモードを使用しています。ポート転送は本当にオプションではありません。私はホストにポートを公開しようとしました。しかし、スウォームの内部ロードバランサのパフォーマンスは非常に悪いです。静的IPはこれの解決策ですか? – benjah1

+0

@ benjah1私はドッカー集団の経験はあまりありませんが、[このページはあなたの状況を正確に記述しているようです](https://docs.docker.com/engine/swarm/ingress/#configure-an-external-load-バランサー)?それは、あなたがスウォームモードでコンテナのポートを公開すべきではないようだ。代わりに[サービスのポートを公開する](https://docs.docker.com/engine/swarm/ingress/#publish-a-port-for-a-service)を参照してください。 –

関連する問題