AWSでLVSをつかってロードバランシングしてみる 第2回


前回はAWSのVPC上でLVSとWebサーバを同じネットワークに設置して実験してみましたが安定しませんでした。(前回 https://qiita.com/superdry/items/83286545061354f20d17

構成

今回はWebサーバを10.0.2.0/24のネットワークに設置します。LVSは10.0.0.0/24のネットワークに設置しますがネットワークインタフェースを2枚にして片方は10.0.2.0/24のネットワークにつながるようにします。

WebSV1

10.0.2.0/24のサブネット側にインスタンスを作成します。
LVSのeth1のIPアドレスをデフォルトゲートウェイにします。
その他(httpdのインストールなど)は前回と同じです。

WebSV2

WebSV1と同様です。

LVS

LVSのネットワークインタフェースを2枚にする方法は
インスタンス作成時のstep3でネットワークインターフェースの欄でデバイスの追加を押下します。

eth0は10.0.0.0/24のサブネット、eth1は10.0.2.0/24のサブネットにします。

前回同様、送信元送信先チェックを外さなければなりませんがeth0はインスタンス画面のアクションから「ネットワーキング」→「送信元送信先変更チェック」で無効化できます。
しかし、eth1の方は有効化されたままですので個別にやらなければなりません。eth1のネットワークインタフェースIDをメモって置いて、ネットワークインターフェース画面でネットワークインタフェースIDで検索してアクションから「送信元送信先変更チェック」で無効化できます。(嵌ったところ)

eth1の設定ファイルであるifcfg-eth1は自動的に作成されるものだと思っていましたがそうではありませんでした。作成してあげないと機能しないので作成します。

/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="static"
ONBOOT="yes"
BROADCAST=10.0.2.255
NETMASK=255.255.255.0
NETWORK=10.0.2.0
IPADDR=10.0.2.75
# systemctl  restart network

前回同様ipvsadmをインストールします。(前回 https://qiita.com/superdry/items/83286545061354f20d17

ipvsadmでLVSの設定をします。

# ipvsadm -C
ipvsadm -A -t 10.0.0.162:80 -s rr 
ipvsadm -a -t 10.0.0.162:80 -r 10.0.2.137:80 -m 
ipvsadm -a -t 10.0.0.162:80 -r 10.0.2.107:80 -m
# ipvsadm -l 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  ip-10-0-0-162.ap-northeast-1 rr
  -> 10.0.2.107:http              Masq    1      0          0
  -> 10.0.2.137:http              Masq    1      0          0

LVSのeth0に関連付けられたElasticIP(グローバルIP)を指定してwebブラウザーでアクセスしてみます。

なんとか安定しました。戻りパケットがLVSに行ったり、VPCのルータに行ったりせずに安定してLVS経由で返されていると思われます。tcpdumpは今回やってませんが。
ただし、ブラウザーをリロードしてもWeb1→Web2→Web1のように綺麗に切り替わりません。Webサーバとかブラウザーのキャッシュの設定かもしれません。でも前回のように見れなくなることはありません。