web-dev-qa-db-ja.com

HAProxyがDNSを自動的にリロードしない

Blue/Greenデプロイメントインフラストラクチャ用に、Debian Stretch(9)にHAProxy 1.7.5-2をインストールしました。

HAProxyはTCP=モードでセットアップされ、5秒ごとにDNSをリロードしますが、そうではありません。

global
    log 127.0.0.1 local0 warning
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 10m
    user haproxy
    group haproxy
    daemon

# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private

# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
#  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# An alternative list with additional directives can be obtained from
#  https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3

defaults
    log     global
    mode    tcp
    option  dontlognull
    timeout connect 360s
    timeout client  300s
    timeout server  300s
    retries         99999

resolvers aws-vpc-dns
    nameserver vpc     {DNSIP}:53
    resolve_retries    30
    timeout retry      1s
    hold valid         5s

frontend site-frontend
    bind *:80
    use_backend site-backend

backend site-backend
    balance roundrobin
    server company-www target.services.company.com resolvers aws-vpc-dns

listen blue-webapp-http
    bind :9000
    balance roundrobin
    server company-blue blue.services.company.com resolvers aws-vpc-dns

DNSレコードを別のレコードに変更すると、HAProxyサーバーのHostコマンドが新しいアドレスを正しく返します。

HAProxyサービスのリロード/再起動は、今のところ私が見つけた唯一の方法です。

問題が何であるかについての手がかりはありますか?

2
Kaymaz

serverに使用されるホスト名は、設定ファイルが解析されるhaproxyの起動時またはヘルスチェック時に解決されます。 serverに対して定義されたチェックはないため、再起動/再ロード中にのみ更新されたホスト名を取得できます。 serverホスト名を実行時に更新する場合は、ヘルスチェックを定義する必要があります。

詳細については、HAProxyのドキュメント DNSを使用したサーバーIPアドレス解決 を参照してください。

3
AlexD