LVS(DSR) 検証
LVS(DSR)の動作検証
LinuxでLVSでのロードバランサを構築することになったので、メモ
Keepalivedで冗長構成したLVSで、DSR(Direct Server Return)方式での負荷分散を構築
- 検証構成
今回は、WebサーバをLVSで負荷分散させる。
LVS1&2はKeepalivedで冗長構成を実施し、Webサーバ用VIPを保持
PCからは「http://192.168.10.110/」へアクセス
※各サーバのIP(第4オクテットは下記図へ記載)
- 通信の流れ
PCからLVS上のVIP(110)へアクセス
→LVSにて負荷分散先のリアルサーバへ転送
→LVSから受信したリアルサーバは、LVSを経由することなく直接PCへ返送 - 各サーバの設定
LVS1&2
1.keepalived.conf
global_defs {
notification_email {
}
router_id LVS_DEVEL
}vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 120
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.110
}
}include web_servers.conf
2.web_servers.conf
virtual_server_group web_servers {
192.168.10.110 80
}virtual_server group web_servers {
delay_loop 3
lvs_sched wrr
lvs_method DR
protocol TCPreal_server 192.168.10.103 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /health_check.html
status_code 200
}
connect_port 80
connect_timeout 3
}
}
real_server 192.168.10.104 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /health_check.html
status_code 200
}
connect_port 80
connect_timeout 3
}
}
}3.sysctl.conf を編集してカーネルパラメータ変更
# Controls IP packet forwarding
net.ipv4.ip_forward = 1Web1&2
1.loopbackインターフェースを作成し、VIP用のアドレスを割り当てる
2.sysctl.conf を編集してカーネルパラメータ変更net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
まぁ、LVSのDSRは割と良くある方式らしいので、他を調べればいいのがあるはず。
個人的にはこっからが本当に気になる点
自分が気になったのはルータのARPテーブルがどうなっているかという点。
1、KeepalivedのVRRPパケットは仮想MAC?
2、リアルサーバのループバックIPはARPテーブルに載るのか?
そんなわけで、ルータをCiscoで確認
Router#sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.10.110 30 000c.293e.???? ARPA Vlan10
→これは、LVS1のMACアドレス
どうやら、KeepalivedのVRRPパケットはCiscoのVRRPとはちょっと違い、仮想MACを作らない模様。 となると、Keepalivedでの切り替わりはGARPを送出する事で代用しているっぽい。