子持ちプログラマーの日記

子持ちのプログラマーがWeb関連の技術、育児、ガンプラのことを書くブログ

【nginx】 ロードバランサの設定

nginxでロードバランサ設定をします。

前準備

複数サーバーが必要なので、以下のように複数台準備した。

  • サーバー1
    • ロードバランサ用のサーバー
    • IPを192.168.56.100に設定
  • サーバー2
    • Webサーバー
    • IPを192.168.56.101に設定
  • サーバー3
    • Webサーバー
    • IPを192.168.56.102に設定

nginxの設定

「/etc/nginx/nginx.conf」、「/etc/nginx/conf.d/default.conf」にそれぞれ以下のように設定が必要
※上記のサーバー1に記述

nginx.confの設定

upstream mycluster {
	server http://192.168.56.101;
	server http://192.168.56.102;
}

conf.d/default.confの設定

location / {
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $remote_addr;
	proxy_set_header X-Forwarded-Host $host;
	proxy_set_header X-Forwarded-Server $host;
	proxy_set_header Host $host;
	proxy_pass http://mycluster;
}

編集後再起動し、192.168.56.101、192.168.56.102に均等に振り分けられたら成功です。
以下は、振り分けに関する設定になります。

ロードバランサの細かい設定

振り分けられる割合を決める

upstream mycluster {
	server http://192.168.56.101 weight=3;
	server http://192.168.56.102;
}

192.168.56.101と192.168.56.102の振り分けられる割合が3:1になります。

同一のクライアントからのリクエストは同じサーバーに飛ばす

upstream mycluster {
	ip_hash;
	server http://192.168.56.101;
	server http://192.168.56.102;
}

接続元のIPアドレスを元に同じサーバーに飛ばすようになります。
※IPをキーにするので、ブラウザを変えても同じサーバーになります。

負荷が均等になるように振り分ける

upstream mycluster {
	least_conn;
	server http://192.168.56.101;
	server http://192.168.56.102;
}

接続数が最も少ないサーバーに振り分けるようにし、負荷を均等近づけるようになります。