私は、Docker、registrator、consul、および HAProxy に基づくマイクロサービス アーキテクチャに取り組んでいます。
また、Consul-template を使用して、HAProxy 構成ファイルを動的に生成しています。すべて正常に動作します: 同じマイクロサービスの複数のインスタンスを追加すると、HAProxy 構成がすぐに更新され、ラウンド ロビン戦略を使用してリクエストが正しくディスパッチされます。
一部のインスタンスを削除 (スケールダウン) すると問題が発生します。リクエストの実行中にコンテナがシャットダウンされると、エラーが発生します。
私は HAProxy を初めて使用するので、コンテナーが消失した場合に別のエンドポイントへの失敗した要求を再試行するように HAProxy を構成する方法はありますか?
精度: フロントエンドとバックエンドにレイヤー 7 ルーティング モード (モード http) を使用しています。これが私の consul-template ファイルの小さなサンプルです:
backend hello-backend
balance roundrobin
mode http
{{range service "HelloWorld" }}server {{.Node}} {{.Address}}:{{.Port}} check
{{end}}
# Path stripping
reqrep ^([^\ ]*)\ /hello/(.*) \1\ /\2
frontend http
bind *:8080
mode http
acl url_hello path_beg /hello
use_backend hello-backend if url_hello
ご協力ありがとうございました。