いくつかの Web サイトを新しいサーバーに移行したいと考えています。DNS の変更がすべて完了するまでに数日かかるため、HAProxy リバース プロキシを設定して、すべてのトラフィックを古い場所から新しい場所にリダイレクトしたいと考えました。このような構成についてはあまり経験がありません。ドメインにアクセスすると、次のようなエラーが表示されます。
503 Service Unavailable No server is available to handle this request.
これは私が使用した設定です(IP アドレスは非表示)。
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend localhost
bind *:80
bind *:443 ssl crt /etc/pki/tls/certs/haproxy.pem
redirect scheme https if !{ ssl_fc }
mode http
default_backend node
backend node
mode http
option forwardfor
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server dcnode1 x.x.x.x:80 check
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
答え1
このエラーは、バックエンドが「稼働中」ではないとみなされることを意味します。
まず、バックエンド サーバーが実行中であり、HAProxy マシンからアクセスできることを確認します (つまりtelnet x.x.x.x 80
、接続されていることを確認します)。
接続に成功したら、次にバックエンドがチェックに失敗しているかどうかを確認します。 を削除してoption httpchk
、行check
から を削除してみてくださいserver
。(バックエンド サーバーが 1 つしかない場合、チェックはそれほど重要ではありませんが、後でいつでも追加し直すことができます)
Host: localhost
小切手で何か異常なものが返されている可能性があります。