nginx 502エラー発生時をヘルスチェックに追加する

nginx 502エラー発生時をヘルスチェックに追加する

nginxでロードバランサー利用時に、502エラーがでた場合もヘルスチェックに追加して、別サーバーに移動させる手順を記述してます。nginxのバージョンは1.18.0を使用してます。

環境

  • OS CentOS Linux release 7.9.2009 (Core)
  • nginx 1.18.0

nginx設定

proxy_next_upstreamに「http_502」を追加してあげます。

upstream app {
  server バックエンドのIP1 max_fails=3 fail_timeout=30s;
 server バックエンドのIP2 max_fails=3 fail_timeout=30s;
}

server {
    listen 80;
    server_name リバースプロキシ側のIP;    

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app;
        proxy_next_upstream error timeout http_502;
        proxy_next_upstream_tries 0;
        proxy_next_upstream_timeout 10;
        proxy_connect_timeout 5s;
        proxy_send_timeout 5s;
        proxy_read_timeout 5s;
    }
}

これで、502エラー発生時もロードバランサーが切り替わるようになります。

【参考】

max_fails : 指定回数のアクセス不能だった場合、サーバがダウンしたと判断
fail_timeout : fail_timeoutに指定された時間だけupstreamから外れます