[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サーバを立ち上げて、共通管理するとかにした方が良さそうだなとも感じた

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

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です