こちらで仮想マシンの立ち上げを試してみました。
今度は、仮想マシンを2台立ち上げて負荷分散設定をしてみます。
環境は以下のとおりです。
- クライアントPC:MacOS X 10.9.5
- 使用した仮想マシンタイプ:light.S1
- 立ち上げた仮想マシンの名前:test-web-1, test-web-2
仮想マシンの立ち上げまでを済ませ、各仮想マシンにApacheをインストール・稼働させている体で進めます。
LB設定を入れる
クラウドコンソールから対象となるIPアドレスを選択して、ロードバランサーのタブから以下の設定を追加します。
管理名 | パブリックポート | プライベートポート | アルゴリズム | 接続維持 | 仮想マシン |
---|---|---|---|---|---|
test-lb | 80 | 80 | roundrobin | なし | test-web-1,test-web-2 |
ファイアウォールで、追加したLB設定のパブリックポートの口開けを設定します。
コメント | ソースCIDR | タイプ | ポートレンジ |
---|---|---|---|
tes-lb | My IPを指定※ | TCP | 80 |
※テスト用環境のため、外部からアクセス出来ないようにMyIP指定としています。
これでabとかでグローバルIPに対してリクエストを投げると、2つの仮想マシンにリクエストが入ることが確認できました。
(IPはxxxとしています)
ab -n 100 -c 100 http://xxx.xxx.xxx.xx/
リモートIPの取得
ロードバランサ通すと、access_logに載るリモートホストがロードバランサのIPとなってしまいます。
プロキシ通してるのと同じなので、当たり前といえば当たり前ですね。
10.3.0.133 - - [12/Nov/2014:19:57:51 +0900] "GET / HTTP/1.0" 200 130 "-" "ApacheBench/2.3"
AWSのELBとかも同じですが、 X-Forwarded-For ヘッダが
IDCFクラウドでも使用できるようです。
ということで、LogFormatに「X-Forwarded-For」を追加してみます。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined
結果(IPはxxxとしてます)
10.3.0.133 - - [13/Nov/2014:13:59:36 +0900] "GET / HTTP/1.0" 200 130 "-" "ApacheBench/2.3" xxx.xxx.xxx.xx
と出力されることが確認できました。
しかし、HTTPSでは「X-Forwarded-For」は使用できないそうです。
SSLアクセラレータの機能も仮想ルータでは提供されていないようなので、LB分散した先のWEBサーバ(Nginx)をアクセラレータとしようと考えていたのですが。。。
自前でLB立てて運用というのも、それはそれで面倒ですしね。
ELBのように、仮想ルータ(LB機能側)でSSLアクセラレータの機能が搭載されることを期待したいです。