LVS+ldirectorを使ってMySQLをロードバランスをしてみる
今回はLVSを使ってMySQLのslaveサーバをロードバランシングする方法を記してみます。LVSは単に振り分けしかやってくれませんので、リアルサーバの生存確認やLVSの作動管理のためにldirectorも導入しています。
LVSだけだとLVSの設定を入れ込まなければなりませんが、ldirectorを使うとldirectorの設定ファイルに書いておくことでLVSの設定をldirectorが自動生成して反映してくれるので楽ちんです。
※世の中にはLVS+keepalivedの組み合わせが多いようですが、検証してみたところldirectorのほうが導入も運用も簡単なのでこちらを採用しました。
前提条件
VIP: 10.0.2.10
DB1: 10.0.0.101
DB2: 10.0.0.102
ロードバランサーとなるサーバへのインストール方法
【インストール】
# yum install ipvsadm
# yum install heartbeat
# yum install heartbeat-ldirectord
【ldirectorの設定】
$ sudo vi /etc/ha.d/ldirectord.cfchecktimeout=5
checkinterval=10
autoreload=no
logfile="/var/log/ldirectord.log"
virtual=10.0.2.10:3306
real=10.0.0.101:3306 gate
real=10.0.0.102:3306 gate
checktype=negotiate
protocol=tcp
checktype=connect
scheduler=lc
netmask=255.255.255.255
【VirtualIPアドレスの設定】
※本当はheartbeatサービスの設定で行いますが、今回LVSを冗長化せずheatbeatサービスを使わないのでこの方法でお茶を濁します。
% sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0:0DEVICE=eth0:0
IPADDR=10.0.2.10
NETMASK=255.255.255.255
NETWORK=10.0.2.10
BROADCAST=10.0.2.10
ONBOOT=yes
リアルサーバ側の設定方法
【ループバックIPアドレスの設定】
% sudo vi /etc/sysconfig/network-scripts/ifcfg-lo:0DEVICE=lo:0
IPADDR=10.0.2.10
NETMASK=255.255.255.255
NETWORK=10.0.2.10
BROADCAST=10.0.2.10
ONBOOT=yes
NAME=loopback:0
【ループバックデバイスに割り当てられたip addressに対するarpに反応しないように設定(重要!)】
% sudo vi /etc/sysctl.conf# Resolving the arp problem for LVS and ldirector.
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2$ sudo sysctl -p
$ sudo sysctl -a | grep net.ipv4.conf.eth0.arp
メンテナンスの方法
【ldirectorの起動(=LVSの起動)】
% sudo service ldirectord start
【リアルサーバの追加】
% sudo vi /etc/ha.d/ldirectord.cfreal=10.0.0.101:3306 gate
real=10.0.0.102:3306 gate
の要領で追加し、
% sudo service ldirectord reload
【接続状況の確認】
% sudo ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.2.10:3306 lc
-> 10.0.0.101:3306 Route 1 0 0
-> 10.0.0.102:3306 Route 1 0 0
(付録) もしldirectorを使わずに手作業でLVSの設定をするとしたら
●VIP追加 (lcオプションは最小コネクション(lc) でリアルサーバにバランスする)
% sudo ipvsadm -A -t 10.0.2.10:3306 -s lc
●削除したい時は以下
% sudo ipvsadm -D -t 10.0.2.10:3306
●VIPにひも付くリアルサーバのIPアドレス(RIP)を追加 (-gはDSR、-mはNAT)
% sudo ipvsadm -a -t 10.0.2.10:3306 -r 10.0.0.101 -g
% sudo ipvsadm -a -t 10.0.2.10:3306 -r 10.0.0.102 -g
●削除したい時は以下
% sudo ipvsadm -d -t 10.0.2.10:3306 -r 10.0.0.101
% sudo ipvsadm -d -t 10.0.2.10:3306 -r 10.0.0.102
●設定確認
% sudo ipvsadm -Ln
The comments to this entry are closed.
Comments