備忘録として、DSRによるLVSとkeepalivedの設定を段階的に書く。
前提は以下のとおり:
- LVSの転送方式はDSR
- ネットワークは単一セグメントで超簡単なもの
- OSはCentOS6.5
今回はDSRのLVSでMySQL:Slaveの負荷分散の練習。
以降の予定は:
ネットワーク構成
今回は以下の構成。
LVSの設定
Firewall
3306番ポートを開けておく。
インストール
ipvsadmパッケージをインストール。
# yum install ipvsadm
システムパラメータの設定
パケットフォワーディングを行うため、net.ipv4.ip_forwardを有効にする*1。
具体的には/etc/sysctl.confを編集し、sysctl -pを実行する。
# vi /etc/sysctl.conf net.ipv4.ip_forward = 1
# /sbin/sysctl -p # cat /proc/sys/net/ipv4/ip_forward 1
VirtualIPの設定
eth0にVirtualIPを設定する。
# cd /etc/sysconfig/network-scripts/ # cp ifcfg-eth0 ifcfg-eth0:0
次のような内容を書く。
# cat ifcfg-eth0:0 DEVICE="eth0:0” ONBOOT=yes IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 HWADDR="00:0C:29:C3:3A:BE" MTU="1500" NM_CONTROLLED="no" ONBOOT="yes"
作成したらネットワークを再起動し、ifconfigで確認する。
# service network restart … # /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:C3:3A:BE inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:748 errors:0 dropped:0 overruns:0 frame:0 TX packets:924 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:77893 (76.0 KiB) TX bytes:91746 (89.5 KiB) eth0:0 Link encap:Ethernet HWaddr 00:0C:29:C3:3A:BE inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:246 errors:0 dropped:0 overruns:0 frame:0 TX packets:246 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:15828 (15.4 KiB) TX bytes:15828 (15.4 KiB)
ipvsadmの設定
まず、-Cオプションで内容をクリアし、確認する。
# ipvsadm -C # ipvsadm -S
以下のコマンドを実行する。
# ipvsadm -A -t 192.168.1.10:3306 # ipvsadm -a -t 192.168.1.10:3306 -r 192.168.1.201:3306 -g # ipvsadm -a -t 192.168.1.10:3306 -r 192.168.1.202:3306 -g
確認は以下。
# ipvsadm -S -A -t 192.168.1.10:3306 -s wlc -a -t 192.168.1.10:3306 -r 192.168.1.201:3306 -g -w 1 -a -t 192.168.1.10:3306 -r 192.168.1.202:3306 -g -w 1 # ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.10:3306 wlc -> 192.168.1.201:3306 Route 1 0 0 -> 192.168.1.202:3306 Route 1 0 0
MySQL:Slaveの設定
Firewall
3306番ポートを開けておく。
MySQL
MySQLを初期化し、起動する。
# mysql_install_db # mysqld_safe &
次に、Client:192.168.1.5 からアクセスできるように、ユーザ(ここではroot)の権限設定を行う。
# mysql mysql> GRANT ALL ON *.* TO root@'192.168.1.5’
システムパラメータの変更
以下のパラメータを/etc/sysctl.confに追記する。
net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2
編集後、設定を反映させる。
# /sbin/sysvtl -p
仮想loopbackデバイス作成
LVSのVIPと同じIPをlo:0に登録。
# cd /etc/sysconfig/network-scripts # cp ifcfg-lo ifcfg-lo:0 # vi ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.1.10 # NETMASKはこれでなければならない。 NETMASK=255.255.255.255 NETWORK=192.168.1.0 # If you're having problems with gated making 127.0.0.0/8 a martian, # you can change this to something else (255.255.255.255, for example) BROADCAST=192.168.1.255 ONBOOT=yes NAME=loopback0
作成したら再起動。
# service network restart