前回記事:② ConoHa VPS で複数WebサーバーとDBサーバーの構成を作る
この記事でやること
前回まででロードバランサを導入する準備が整ったので、今回は
- Conoha VPSでロードバランサを導入して複数Webサーバーを紐づけ
- Webサーバー側の設定
- ロードバランサによる振り分け実験
あたりを実施していきます。
Conoha VPSでロードバランサを導入して複数Webサーバーを紐づけ
さっそくConohaメニューのネットワーク
>ロードバランサー
からロードバランサを追加、下記キャプチャのような設定を行います。
今回はヘルスモニターは無視し、いきなりロードバランサーを構築。各設定は下記です。
- バランシングポート:httpリクエストのみで実験するので80のみ
- バランシング方法:ラウンドロビン方式
- バランシング先IPアドレス:前回までで作成した
testVPS1
とtestVPS2
ロードバランサーのバーチャルIPアドレスが157.7.94.72
と割り振られています。
このアドレスにhttpリクエストがくると、ロードバランサーがtestVPS1
とtestVPS2
のWebサーバーにリクエストをうまい具合に振り分けるという設定ができました。
Webサーバー側の設定
Conoha公式ドキュメントにあるように、それぞれのWebサーバー側で設定を行います。
ifcfg-lo:0というファイルを作り、そこにロードバランサーとの接続情報を記載します。
# vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=157.7.94.72
NETMASK=255.255.255.255
ONBOOT=yes
ネットワークサービスの再起動を行います。
# service network restart
ロードバランサによる振り分け実験
ここまでできると、157.7.94.72
に連続してアクセスするとtestVPS1
とtestVPS2
の2つのWebサーバーにリクエストが割り振られる様子を実験できます。
こちらが実験の様子です。
最初のタブではtestVPS1
を直接見ていて、次のタブではtestVPS2
を直接見ています。
そして3つめのタブではロードバランサーのIPアドレスを叩いていて、さらに連続でリロードすることでtestVPS1
とtestVPS2
の2つのWebサーバーにリクエストが割り振られる様子が見て取れると思います。
まとめと考察と疑問
ということでこれまで3回に分けてConoha VPSでロードバランサを利用するところまでを書いてきました。
DBサーバーの分離やロードバランサの導入はドキュメントを見ながら進めましたが、なんとかなるものですね。
ロードバランサは元々負荷分散の目的で活用されることが多いですが、個人的にはデプロイのダウンタイムを無くすという目的で使ってみたいと思います。片方のWebサーバー(環境)をロードバランサから切り離してデプロイを行い、デプロイが終わったらつなぎ直してもう一方のWebサーバー(環境)でも同じことをやれば良さそうです。
とはいえなんか非効率的な感じもするので、
- そもそも複数環境に対してデプロイを行う時の良い方法は何か
- それぞれにPushするのか、環境のコピーをするのか
- Webサーバーの数が多くなったらどうするのか
- ローリング・デプロイ / ブルーグリーン・デプロイ / イミュータブル・デプロイ とかあるがどれが良いのか
- というか負荷分散を考えなかったら、毎回新しい環境に乗り換えるヤドカリ方式のイミュータブル・デプロイでいいんじゃないか
といった考えが頭をよぎります。
はーインフラ難しい。