nginx負荷バランスと逆エージェント
負荷バランス
ユーザの要求を均一にしたり、あるいは一定の優先度でサーバーのセットの一つに割り当てたりして、要求されたサーバから独立した処理要求を受信して返します。負荷均衡技術は主にバックエンドサービスの性能を拡張するために用いられる。
逆プロキシ
プロキシサーバは、受信したユーザ要求を内部サーバに転送し、内部サーバから返された結果をユーザに返すと、プロキシサーバはサーバとしての役割を果たします。
実例
設定ファイルに下記のコードを記入します。
Upsteamモジュール
nginxは、ubstreamモジュールを利用して負荷の均衡を実現し、バックエンドサーバーの健康診断も可能です。 ip_hash命令 ip_hash命令は、あるクライアントの要求をip hashアルゴリズムによって同じバックエンドサーバに位置決めすることができ、これによって、クライアントの要求が常にバックエンドサーバに向けられていることが保証され、そうでないとランダムに異なるバックエンドサーバに向けられます。
ip_hashの欠点は、バックエンドサーバの負荷バランスを保証できないことであり、ipの不均一によって、バックエンドサーバが受信する要求が多くなり、バックエンドサーバの重みを設定しても機能しない可能性があるからである。
あるバックエンドサーバーがnginx負荷バランスから一時的に削除する場合は、設定ファイルから直接削除またはコメントを削除するのではなく、それを「down」と表記しなければなりません。コードは以下の通りです server指令 このコマンドはバックエンドサーバの名前とパラメータを指定するために使用され、サーバーの名前はドメイン名、ip、ポート番号またはunix scoketとすることができます。
パラメータは主にあります
weightは、バックエンドサーバの重みを設定するほど、重みが高く、割り当てられたクライアント要求数が多い。重みが設定されていない場合、重み値はデフォルトでは1となります。
max_failsは、パラメータfail_に指定します。タイムアウト時間内にバックエンドサーバが失敗した回数を要求し、バックエンドサーバが接続できないことやサーバ内部のエラーが検出された場合、フラグが失敗し、デフォルト値は1で、0に設定したらこのチェックをオフにします。
fail_timeoutは、指定された時間内に失敗回数がmax_に達したらfailsの場合、バックエンドサーバはサービスの時間を一時停止します。
ダウンタウンは、マークサーバが永久オフライン状態で、ip_にのみ使用されます。hashコマンド
backupは、backupサーバー以外の全てのマシンや忙しい時だけ有効です。 ubstream関連変数 ログを使って、ubstreamサーバーの状態を記録するときは、ログを使ってもいいです。formatでは、関連する変数を使用します。例えば、
$up stream_addr:処理要求のuplstream中のサーバーアドレスを表します。
$up stream_status:up streamサーバーの対応状態を表示します。
$up stream_レスポンスtime:up streamサービスの応答時間(ミリ秒);
$up stream_http_HEADER:任意のhttpプロトコルのヘッダ情報、例えば、$http_ホスト
実例は以下の通りです
ログの内容は主に3つのセクションが見られます。最初のセクションは3回の訪問があります。そのうち14マシンは502に戻り、21マシンは200に戻り、3回の訪問後14マシンはサービスを停止し、10秒後に再度訪問し、14マシンはサービスを提供し始めましたが、戻りの状態は依然として502です。
ユーザの要求を均一にしたり、あるいは一定の優先度でサーバーのセットの一つに割り当てたりして、要求されたサーバから独立した処理要求を受信して返します。負荷均衡技術は主にバックエンドサービスの性能を拡張するために用いられる。
逆プロキシ
プロキシサーバは、受信したユーザ要求を内部サーバに転送し、内部サーバから返された結果をユーザに返すと、プロキシサーバはサーバとしての役割を果たします。
実例
設定ファイルに下記のコードを記入します。
upstream backend {
server 192.168.43.158:8086 weight=4 max_fails=2 fail_timeout=30s;
server 192.168.41.167 weight=4 max_fails=2 fail_timeout=30s;
server unix:/tmp/backends weight=4 max_fails=2 fail_timeout=30s;
}
server {
listen 80 ;
server_name frontend.com;
location = / {
proxy_pass http://backend;
proxy_set_header Host backend.com;
proxy_set_header Forwarded $remote_addr;
}
}
proxyパスは逆エージェントを指定するためのuplstreamサーバクラスタで、proxy_setheaderは、指定されたヘッダ情報を追加するために、バックエンドサーバにドメイン名ベースの仮想ホストが複数ある場合、ホストは、どの仮想ホストにアクセスするべきかを指定してもよく、forwarded情報を追加して、バックエンドサービス端末ユーザにipアドレスを教えても良い。バックエンドサーバーはフロントエンドプロキシのipアドレスしか取得できません。Upsteamモジュール
nginxは、ubstreamモジュールを利用して負荷の均衡を実現し、バックエンドサーバーの健康診断も可能です。
ip_hashの欠点は、バックエンドサーバの負荷バランスを保証できないことであり、ipの不均一によって、バックエンドサーバが受信する要求が多くなり、バックエンドサーバの重みを設定しても機能しない可能性があるからである。
あるバックエンドサーバーがnginx負荷バランスから一時的に削除する場合は、設定ファイルから直接削除またはコメントを削除するのではなく、それを「down」と表記しなければなりません。コードは以下の通りです
upstream backend {
ip_hash;
server backend1.com;
server backend2.com;
server backend3.com;
server backend4.com down;
}
直接にbackend 4.comを配置ファイルから削除すると、inxは3台のバックエンドサーバによってshを再開します。backend 1に向けたユーザーはbackend 2に再配向する可能性があります。そうすると、backend 1上のユーザーデータは無効になります。例えば、SESSIONデータ。パラメータは主にあります
weightは、バックエンドサーバの重みを設定するほど、重みが高く、割り当てられたクライアント要求数が多い。重みが設定されていない場合、重み値はデフォルトでは1となります。
max_failsは、パラメータfail_に指定します。タイムアウト時間内にバックエンドサーバが失敗した回数を要求し、バックエンドサーバが接続できないことやサーバ内部のエラーが検出された場合、フラグが失敗し、デフォルト値は1で、0に設定したらこのチェックをオフにします。
fail_timeoutは、指定された時間内に失敗回数がmax_に達したらfailsの場合、バックエンドサーバはサービスの時間を一時停止します。
ダウンタウンは、マークサーバが永久オフライン状態で、ip_にのみ使用されます。hashコマンド
backupは、backupサーバー以外の全てのマシンや忙しい時だけ有効です。
$up stream_addr:処理要求のuplstream中のサーバーアドレスを表します。
$up stream_status:up streamサーバーの対応状態を表示します。
$up stream_レスポンスtime:up streamサービスの応答時間(ミリ秒);
$up stream_http_HEADER:任意のhttpプロトコルのヘッダ情報、例えば、$http_ホスト
実例は以下の通りです
upstream backend {
server 172.28.0.21:80 max_fails=3 fail_timeout=10s;
server 172.28.0.14:80 max_fails=3 fail_timeout=10s;
}
server {
listen 8360 ;
server_name ${DOMAIN};
location = / {
proxy_pass http://backend;
proxy_set_header Host ${DOMAIN};
proxy_set_header Forwarded $remote_addr;
}
log_format up '$upstream_addr $upstream_status $upstream_response_time $upstream_http_host';
access_log access.log up;
}
access.logsの内容は以下の通りです。172.28.0.14:80、172.28.0.21:80、200 0.000、0.050-172.28.0.14:80、0.00.000、0.050、0.050-172.2.28.08.8.8.8.8.8.18:80、172.2.28.0.0.0.01、200 0.0.0.0.00 0、0.002、0.0.0.00 0 0 0-172.2.2.2.2.2.2.8.80、200、200、2.2.2.2.2.2.2.2.2.200、200、2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.200、200、200、200、2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.8.8.8.8.8.8.8.8.8.8.8.8.80、200、0.001、0.001、0.002、0.001、を選択します。ログの内容は主に3つのセクションが見られます。最初のセクションは3回の訪問があります。そのうち14マシンは502に戻り、21マシンは200に戻り、3回の訪問後14マシンはサービスを停止し、10秒後に再度訪問し、14マシンはサービスを提供し始めましたが、戻りの状態は依然として502です。