web-dev-qa-db-ja.com

Nginxで複数のバックアップサーバーはどのように機能しますか?

backupディレクティブの場合、Nginxのドキュメント states は最低限:

サーバーをバックアップサーバーとしてマークします。プライマリサーバーが利用できない場合は、リクエストが渡されます。

複数のバックアップがあり、プライマリサーバーがダウンした場合、バックアップの1つが新しいプライマリに指定されますか?またはそれらの間のNginxラウンドロビンでしょうか?

コンテキスト

プライマリサーバーと複数のバックアップがありますが、すべての接続は常に同じプライマリまたはバックアップに行く必要があります。 ip_hash ロードバランシングモードに似ていますが、all接続とクライアントに同じサーバーを使用する必要があります。

4
Benny Bottema

@Alberto Mendozaが答えたように、コンテキスト内のマルチバックアップサーバーはサポートしていませんが-

nGINXロードバランサーを実行している別のVPSへのバックアップを独自のバックアップに配置する場合...これは、現在マルチリージョンネットワークで使用している回避策です。

upstream routing {
server main_server:8080 max_fails=2 fail_timeout=5;
server backupServer1:8080 max_fails=1 fail_timeout=5;
server backupServer2:8080 backup;

}

メインサーバーが2秒間応答しない場合-最初のVPSバックアップが試行されます-なんらかの理由でDDOSであるか、何らかの理由でダウンしている場合-3番目のVPSに移動します。必要に応じてデイジーチェーンに。

2
Devitgg

テストを行ったところ、nginxはマルチバックアップサーバーをサポートしていないようです。

upstream a {
    server main_server:8080 max_fails=2 fail_timeout=5;
    server backup1:8080 backup;
    server backup2:8080 backup;
}

main_server:8080がダウンすると、backup1:8080は正しく応答します。 main_server:8080およびbackup1:8080がダウンしている場合、接続は拒否され、backup2:8080に到達することはありません。

1
Alberto Mendoza