高可用性設定のための nginx リバース プロキシ?

高可用性設定のための nginx リバース プロキシ?

シナリオは次のようになります。互いにバックアップとなっている 2 つのアプリケーション サーバーの前に nginx リバース プロキシ サーバーを配置し、まず nginx がすべてのユーザー リクエストを最初のアプリケーション サーバーに転送するようにします。最初のアプリケーション サーバーがダウンしている場合は、それ以降は nginx がすべてのユーザー リクエストを 2 番目のアプリケーション サーバーに転送するようにします。2 番目のアプリケーション サーバーがダウンした場合は、nginx がすべてのユーザー リクエストを最初のアプリケーション サーバーに転送するように元に戻す、などと繰り返します。もちろん、両方のアプリケーション サーバーがダウンしている場合は、nginx はエラーを返します。

アップストリーム ロード バランシングや proxy_next_upstream 設定などの設定を調べましたが、探しているものではないようです。私のシナリオに合わせて nginx を構成する方法をご存知ですか? ありがとうございます。

答え1

upstreamこれを実現するには、nginx 構成を使用する必要があります。

upstream mybackend {
    # first app server
    server 192.168.0.1;

    # second app server
    server 192.168.0.2 backup;
}

server {
    ...

    location / {
        proxy_pass http://mybackend;
    }
}

ここで重要なのは、プライマリ ノード (つまり、タグが付いていないノード) が利用できないbackup場合にのみそのノードを使用するように nginx に指示するパラメータです。backup

満杯ドキュメントはこちら

答え2

さらにいろいろ調べた結果、OpenRestyを使うことにしました(https://openresty.org/)、特にLuaUpstreamNginxModuleが私のニーズに合っていると思います。lua-upstream-nginx-module は、以下の URL からダウンロードできます。いくつかのカスタム Lua スクリプトを使用すると、私のシナリオでは完璧に動作するようです。

関連情報