2014年6月6日金曜日

さくらのクラウドでロードバランサを設定する方法



さくらのクラウドでロードバランサを設定する方法です。

最初、公式の説明(http://cloud-news.sakura.ad.jp/load-balancer/)を見ていたのですが、スイッチとルータの説明が省かれていて良く分らなかったんですよね・・・
スイッチとルータの設定を補完して、自分なりにまとめてみました。
サーバにsshログインしてファイルを編集する能力があれば、誰でも簡単に設定できると思います。

スイッチの追加



[ネットワーク]->[追加]->スイッチ作成画面

スイッチの名前を記入して、ルータ「はい」を選択。
プリフィックスと帯域はお好みで設定します。
右下の「作成」をクリックして、スイッチ + ルータを作成します。

スイッチの確認


暫くすると、スイッチができ上がりました。
確認しましょう。

該当スイッチを選択->[詳細]

ルータの情報



[ルータ]のタブ

ルータの情報がみれます。
割当可能範囲が使えるIPアドレスの範囲になります。
メモしておきましょう。後で必要になります。

今回は、以下のIPアドレスを使っていきます。
割当可能範囲:133.242.25.164 ~ 174

IPアドレスを以下のように割り当てていきます。
---
ロードバランサ IPV4アドレス#1:133.242.25.164
ロードバランサ IPV4アドレス#2:133.242.25.165
ロードバランサ VIPアドレス:133.242.25.166
テストサーバ IPアドレス:133.242.25.167
---


ロードバランサの作成


[アプライアンス]->[追加]

ロードバランサの作成画面です。
せっかくなので、冗長化+ハイスペックプランで設定します。
IPV4アドレス#1と#2には、ルータで作られた割当可能範囲のIPアドレスを入力します。

接続先スイッチ:先ほど作成したスイッチを選ぶ
冗長化:はい
プラン:ハイスペックプラン
VRID:1
IPV4アドレス#1:133.242.25.164
IPV4アドレス#2:133.242.25.165

名前を適当に入れたら、[作成]をクリック。

ロードバランサの起動


[アプライアンス]タブをクリック。
ステータスが"コピー中"のロードバランサがあります。
暫く待ちましょう。

"利用可能"になったら、ロードバランサを選んで[詳細]をクリック。

ロードバランサの詳細


[VIP設定]->[追加]

VIP設定を追加します。
VIPアドレスにはルータで作られた割当可能範囲のIPアドレスを入れます。

VIPアドレス:133.242.25.166
ポート番号:80
チェック間隔:10

このVIPアドレスが、インターネットからアクセスできるIPアドレスになります。
インターネット -> ロードバランサ(133.242.25.166) -> サーバ1, サーバ2 
というイメージです。

入力ができたら、[作成]->[反映]


タブが一つ増えているのが分るでしょうか。
先ほど入力した [VIPアドレス:80] というタブが出来上がりました。
あとで、サーバを作成したら、このタブからロードバランサ配下に配置するサーバを設定していきます。

マップの確認


右上の[マップ]をクリック。
マップはこのようになっています。
スイッチとロードバランサがくっついているのが分りますね。
ひとまずは、ルータ・スイッチ・ロードバランサの設定は完了です。

次にサーバを立てていきます。

サーバの追加


名前とホスト名は test1 としました。
NICの設定で、[スイッチに接続]を選択。
プルダウンから、先ほど作成したスイッチを選びます。
IPアドレスには、割当可能範囲のIPアドレスを入れます。ここには、いままで使っていないIPアドレスを使います。

IPアドレス:133.242.25.167

ゲートウェイには、ルータのゲートウェイIPアドレスが自動で入ります。
その他はお好みで設定しましょう。
今回は、アーカイブに CentOS 6.5 64bit (基本セット) を選びました。

[作成]をクリック。

サーバが出来上がるまで、しばらく待ちましょう。

サーバの確認

サーバが立ち上がったら。
ターミナルを立ち上げて、sshでログインしてみましょう。

$ ssh root@133.242.25.167

The authenticity of host '133.242.25.167 (133.242.25.167)' can't be established.
RSA key fingerprint is 74:da:d3:10:e7:4c:1c:96:c8:a7:71:72:32:1a:01:67.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '133.242.25.167' (RSA) to the list of known hosts.
root@133.242.25.167's password: パスワードを入力

[root@test1 ~]#

ログインできたでしょうか?

HTTPサーバとしてnginxをインストールしておきます。
# yum -y install nginx

nginxをスタート
# service nginx start

ブラウザでアクセスしてみましょう。
IPアドレスは、先ほどサーバ作成のときに入力したIPアドレスです
http://IPアドレス/

サーバのネットワーク設定

sysctl.confに以下を追記します。

# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

設定を反映します。

# sysctl -p

ループバックアドレスの追加設定をします。
IPADDRには、ロードバランサのVIPアドレスを設定します。

# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=133.242.25.166
NETMASK=255.255.255.255

lo:0デバイスを有効化します。

# ifup lo:0

確認します。

# ifconfig lo:0
lo:0      Link encap:Local Loopback
          inet addr:133.242.25.166  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1

ロードバランサにサーバを追加


[アプライアンス]->ロードバランサを選んで[詳細] ->
先ほど作成した [VIPアドレス:80] というタブ -> [追加]

IPアドレスにサーバのIPアドレスを入れます。

IPアドレス:133.242.25.167 
ポート番号:80
監視方法:http
パス:/
レスポンスコード:200

[追加] -> [反映]

マップを確認してみましょう。


スイッチを経由してロードバランサとテストサーバが繋がっていますね。

ロードバランサに追加したサーバのステータスを確認

[VIPアドレス:80] というタブをみると、サーバのステータスが確認できます。
ステータスUPになっているでしょうか?

ブラウザで確認してみましょう。
http://ロードバランサのVIPアドレス/

これにて全ての設定が完了です。
お疲れさまでした!

まとめ

さくらのクラウドで、ロードバランサを使えるようにしました。
設定は、慣れてしまえば簡単だと思います。

個人的には、もうちょっとロードバランサのスペックがあがってほしいですね。
月に数十万PVくらいのWEBサービスならば十分ですが、
大きめなトラフィックを捌こうとすると、ハイスペックプランでは全然足りない・・・ので、ロードバランサとサーバを複数セット並べるという構成を取らざるを得ないかんじになったりします。

今後のスケールアップに期待です。