skillup

技術ブログ

サーバー・ネットワーク

ロードバランサーの構築(dockerを例に)

投稿日:

以前から興味のあったロードバランサーをdockerで構築。

ロードバランサーとは?

定義

主にwebサーバーの処理を分散させる仕組みで、そのために処理を振り分けることをさします。

通常は リクエスト→webサーバーという流れですが、

ロードバランサーを入れると リクエスト→ロードバランサー→webサーバー(通常は2台以上のことが多いです。)

のようになります。

メリット

負荷軽減

一般的には高負荷状態のシステムに対して組まれることが多く、サーバーを2台以上にすることで1台1台の負荷を軽減することができます。

可用性の向上

1台のサーバーがダウンしても、他のサーバーが生きていれば、システムが継続して稼働できるようになります。このような性質のことを可用性と呼びます。

拡張性の向上

サーバーを増やしたりすることでシステムの規模を拡張させることが容易になります。

デメリット

コスト増加

当たり前ですが、サーバーの数だけ、サーバー費用がかかります。またメンテナンスの手数も増えることになります。

実装上の変更が必要

複数のサーバーからアクセスすることになるので、特定のサーバーにしかないリソースへのアクセスをしている実装は変更する必要があります。

具体的にはセッションの保存に関してサーバーではなく、DBで保存するようにしましょう。また画像ファイルやその他、動的に生成させるファイルなどもサーバーにおかず、共通のサーバーかあるいはS3のようなクラウドサービスで管理する必要があります。

またGitで反映するときにも同時に反映できるようにスクリプトを組んだりする必要があります。

参考リンク

わわわIT用語辞典 ロードバランサ (load balancer)

実装

例えばテストで実際にAWSやVPCを立てるのは面倒なので、dockerを使うのが一番お手軽だと思います。

https://github.com/umanari145/load_balancer

docker-compose.yml

balancer/nginx.conf

実際に処理を振り分けるnginxの処理を記述します。

上記のような書き方だと処理が交互に分散されますが、2:1で振り分けるなど等分ではない振り分け方などもあります。

docker/web1/Dockerfile(web2も同様)

docker/web1/default.conf(web2も同様)

web1/index.html
(web2も同様ですが、テストでは均等にアクセスしているかを検証するために違う文字を入れるのもありです。)

Docker でロードバランサ・アプリケーションサーバ・DBサーバの環境構築

Nginxのロードバランシング機能を使ってみよう!

実践編ーDockerを使ってnginxでリバースプロキシを立ててみる
(ロードバランサーではなくリバースプロキシですが、参考になりました。)

-サーバー・ネットワーク
-,

執筆者:


comment

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

関連記事

no image

supervisorによるデーモン化

えー実務で任意のプログラムをデーモン化させて処理をするという実装があったのでメモ。 Contents1 デーモンとは?2 Supervisor2.1 インストール2.2 実行プログラム2.3 サービス …

no image

ネットワーク基礎 OSI参照モデルなど

ここ↓でネットワークの基礎についてかいてあるので定期的に勉強しようと思っています。 3分間 NetWorking Contents1 スニーカーネットからリソース共有2 LANとWAN3 OSI参照モ …

no image

SQSについて

以前、少しQueueの登録について書きましたが、今回はAWSのキューサービスであるSQSについて。 以前のリンク Queueの登録と実際の処理に関して SQSのポイントについて簡単にまとめて置きたいこ …

no image

SSH鍵認証に関して

SSHの鍵認証についてやり方自体は流れ作業でできていましたが、根本的なところが理解していないので復習。 まずは通常の流れを。 1 クライアント(自分のPC)で公開鍵・秘密鍵を作成。[crayon-62 …

no image

nginxのlocationディレクティブ内のリダイレクト処理について

nginxのlocationディレクリブ内のリダイレクト処理に関して。 結構長い間携わっていますが、適当に理解していた部分が多かったので再度復習です。 特にドメインのサブディレクトリでサービスを運用し …

アーカイブ