クラウド環境ではアプライアンスのハードウェアロードバランサーを導入しにくい場合もありますが、Nginxで解決できるケースも多くしかもコストも抑えられるので、クラウド環境との相性が良いといえます。今回の構成は以下のようなイメージになります。
設定を開始する前にデフォルトの設定を見てみましょう。
/etc/nginx/nginx.conf の設定は以下の通りです。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; events { http { log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ access_log /var/log/nginx/access.log main; sendfile on; include /etc/nginx/conf.d/*.conf; } |
細かな設定項目は別の機会で解説をしたいと思いますが、今回の設定で重要になるのは httpディレクティブ から始まる項目です。
まず、Webサーバーとして利用するサーバー2台の nginx.conf の設定を変更します。
httpディレクティブ内に server ディレクティブを下記のように追記します。
serverディレクティブは仮想サーバーの設定を行う項目で、listen にて IPアドレスやポートもしくはホスト名(UNIXドメインソケットパス)を記述します。(ここは環境に合わせて変更してください) root ディレクティブにてドキュメントルートの設定を行います。
※ドキュメントルートの設定は serverディレクティブ内で設定することが推奨されます。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; events { http { log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ access_log /var/log/nginx/access.log main; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; server { |
設定が完了したら Nginx を再起動して設定を反映させます。WebサーバーのIPアドレスもしくはホスト名にアクセスを行い、サンプルページもしくは用意したコンテンツが見えることを確認してください。
# service nginx restart nginx を停止中: [ OK ] nginx を起動中: [ OK ] |
NGINX Plus であれば以下の項目を serverディレクティブ内に記述することで、ライブで Nginx のステータスを取得できるようになります。
location = /status { status; |
Live load-balancing status の画面は以下のようになります。実際に動作しているところは Nginx Inc.のデモをご覧ください。
Webサーバーの準備ができたなら、ロードバランサーとして動かす Nginx の設定を行います。
設定項目は以下の3点と非常に簡単に行えます。
- httpディレクティブ内に upstream_backend ディレクティブの設定を記述します。
Webサーバーとして設定たサーバーのIPアドレスもしくはホスト名を指定します。 - serverディレクティブを作成し、仮想サーバーの設定を行う。
この項目は先程のWebサーバーの設定と基本は同じです。 - locationディレクティブを作成し、proxy_pass の設定を記述します。
今回は location に / (ルート) を設定することで、全てのコンテンツをWebサーバーに流します。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; events { http { include /etc/nginx/mime.types; log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ access_log /var/log/nginx/access.log main; #gzip on; include /etc/nginx/conf.d/*.conf; server { |
これでNginxによるロードバランシングの設定が完了です。Nginxを再起動ます。
# service nginx restart nginx を停止中: [ OK ] nginx を起動中: [ OK ] |
それぞれのサーバーの index.hrml にホスト名や IPアドレスを埋め込むことで視覚的にロードバランシングが行われているかを確認することができます。また、/var/log/nginx/access.log を確認することでもロードバランシングの設定効果を見ることができます。
この様に、簡単な設定でロードバランシングまで行えます。
導入の敷居も非常に低いのでWebサーバーのパフォーマンスにお困りの方は一度試してみてはいかがでしょうか。