Nginx Docker

[Nginx]ロードバランス構成を立ち上げてみた

最近、Nginxばっかやな。けどこの耐久レースはまだ続くぜw

今回はNginxでロードバランス構成を検証するで

ロードバランスとは

load(負荷)balace(均衡を保つ)という意味から大体察すると思うけど、

一つのサーバにアクセスが集中するとサーバのCPUやメモリの使用率が上昇して、処理が重くなったり、サーバが止まってしまい、アクセスがしばらくできなくなってしまうこともありうるのね

それをアクセスを複数のサーバに分散させることで、一つのサーバにアクセスが集中しないように負荷を調整するのがロードバランスっていう

 

構築

今回のプロジェクトはこちら、https://github.com/smithshiro/nginx_load_balancer_sample.git

 

docker-compose.yaml

ロードバランサ用のNginxと実ファイルを返すオリジンサーバのNginx3つを立ち上げて

ロードバランサを入り口として、末端のオリジンたちにリクエストが届けっていう構成である

load_balancer_nginxのdefault.conf

ロードバランス機能を提供する新しいディレクティブが出てきたので紹介

upstream

コンテキスト http
説明 アップストリームサーバのグループを定義する
デフォルト値 なし

オリジンサーバたちをoriginsとして、location内のproxy_passで指定し、リクエストをオリジンたちに横流しできるってわけだぁ

origin_nginxのdefault.conf

い・つ・も・の

とくにこれ以上言うまい

検証

愚直だけど、オリジン3つのコンテナ内部に入ってログファイルを監視した

左からオリジン1,オリジン2,オリジン3の順ね

アクセスをすると、オリジン1 -> オリジン2 -> オリジン3 -> オリジン1 ...

のループでアクセスが回っているのが確認できた

まあ、静的ページの負荷分散ならこれでもある程度使えそうだねw

けど、リクエストごとに別のサーバに投げることで、以前のリクエストでサーバに保持されたセッション情報が次のリクエストでは引き継ぐことができなかったりする懸念もあるので

セッション管理はRedisサーバを立ち上げて、共通管理するとかにした方が良さそうだなとも感じた

まあ、もっと凝ったインフラもぼちぼち作っていくからいずれなー

nginx実践入門
nginxを現場で活用するための知識を、実践的なノウハウを交えて解説した書籍です。
nginxのインストール方法や基本的な設定方法からはじめ、nginxを利用した「静的コンテンツ配信サーバ」「HTTPSサーバ」「Webアプリケーションサーバ」「大規模コンテンツ配信システム」の構築方法をそれぞれ詳しく紹介しています。後半ではnginxサーバのモニタリングやログの収集、そして軽量スクリプト言語Luaでnginxを拡張する方法について解説しているので、nginxをこれから使う方はもちろん、さらに活用したい方にもお勧めです。
  • この記事を書いた人

シロー

Webシステムの開発のお仕事をさせて頂いております。 フリーランスの日常、Web開発に関する情報を発信しています。 趣味はゲーム、映画鑑賞、個人サービスを作ることです。

-Nginx, Docker

© 2021 Shiro's secret base