192.168.100.4 192.168.100.5 }
! include virtual server configure file include taobao.conf
ii. 业务配置文件 “业务名.conf” 路径:/etc/keepalived/taobao.conf
virtual_server_group taobao { 1.1.1.1 80 //vip1 1.1.1.2 80 //vip2 }
vrrp_instance VI_1 { state MASTER/BACKUP interface eth0 virtual_router_id 200 priority 150/90 advert_int 1 authentication { auth_type PASS auth_pass 123456 }
virtual_ipaddress { 1.1.1.1 1.1.1.2 } }
!for taobao.com
virtual_server group taobao { delay_loop 7
lb_algo rr
lb_kind FNAT
protocol TCP
syn_proxy
laddr_group_name laddr_g1
/* healthcheck for L4 */ real_server 192.168.1.1 80 { weight 100
inhibit_on_failure
TCP_CHECK {
connect_timeout 5 }
}
/* healthcheck for L7 */ real_server 192.168.1.2 80 { weight 100
inhibit_on_failure HTTP_GET { url {
path /index.html status_code 200 }
connect_timeout 3 nb_get_retry 2 delay_before_retry 5 } } }
3 RS配置
a) 安装系统
# 参见lvs-fullnat-synproxy.tar中的README,其中有TOA(RS内核)的patch;
b) 加载TOA模块,命令:# modprobe toa
# vim /etc/rc.local 添加 modproble toa
4日常操作(以集群模式为例) 4.1 添加/删除realserver
如果添加,请确保realserver的监听的port是打开的(可以telnet连接该端口)。 1) 第1步,配置realserver,具体参见附录5.1;
更新内核版本,加载相应的TOA模块:
# modprobe ttm.ko # vim /etc/rc.local 添加 modproble toa
2) 第2步,修改keepalived的配置,注意所有LVS上都得修改;
例如realserver的IP为10.251.X.X,业务名taobao
# vim /etc/keepalived/taobao.conf virtual_server group taobao { ……
real_server 10.251.X.X 80 { weight 1 TCP_CHECK {
connect_timeout 4 } } }
3) 第3步,发送HUP信号给keepalived,使配置修改生效;
# service keepalived reload
4) 第4步,检查realserver是否操作成功
在LVS上,分别运行ipvsadm -ln观察该realserver的健康检查是否成功,并在LVS查看session分配是否均匀。
4.2添加/删除vip
假设新添vip为1.1.1.3,业务名称taobao; 1) 修改keepalived配置文件,添加如下内容; 第一步,创建业务配置文件;
#vim /etc/keepalived/taobao.conf
virtual_server_group taobao { 1.1.1.3 80 //vip1 }
virtual_server group taobao { delay_loop 6
lb_algo rr lb_kind FNAT protocol TCP syn_proxy
laddr_group_name laddr_g1
alpha //启动alpha模式,以便自动绑定vip quorum 1 hysteresis 0
quorum_up \1.1.1.3/32 dev lo;\quorum_down \1.1.1.3/32 dev lo;\ }
……
第二步,修改keepalived配置文件;
#vim /etc/keepalived/keepalived.conf ……
! include virtual server configure file include www.conf include taobao.conf
2) 发送HUP信号给keepalived,使配置修改生效;
# service keepalived reload
3) 检查vip配置是否生效;
# ipvsadm –ln //查看vip是否已经配置到lvs中 # ip addr list //查看lo上vip是否绑定成功 # 模拟用户访问vip,结果是否正确
4.3 添加/删除local address
注:local address和内网接口ip绝对不能重合;
以添加/删除192.168.100.4为例,其内网网卡为eth1,需要配置2个地方: 1. 修改/etc/rc.local
添加ip addr add 192.168.100.4/32 dev eth1
2. 修改/etc/keepalived/keepalived.conf
#vim /etc/keepalived/keepalived.conf local_address_group laddr_g1 { }
……
192.168.100.4
3. 发送HUP信号给keepalived,使配置修改生效;
# service keepalived reload
4. 检查local address配置是否生效;
# ip addr list //查看网卡上是否已经绑定ip # ipvsadm –G //查看vip上是否已经绑定ip
5 set_irq_affinity脚本(源自intel 82599 driver)
# setting up irq affinity according to /proc/interrupts # 2008-11-25 Robert Olsson
# 2009-02-19 updated by Jesse Brandeburg #
# > Dave Miller:
# (To get consistent naming in /proc/interrups) # I would suggest that people use something like: # # # # # # #
# Assuming a device with two RX and TX queues. # This script will assign: # # # # # #
set_affinity() {
printf \ printf \}
fi
let \MASK_TMP=$((1<<$VEC))
MASK=`printf \MASK_TMP=$((1<<$VEC)) MASK=`printf \if [ $VEC -ge 32 ] then
MASK_FILL=\
MASK_ZERO=\let \for ((i=1; i<=$IDX;i++)) do
MASK_FILL=\done eth0-rx-0 CPU0 eth0-rx-1 CPU1 eth0-tx-0 CPU0 eth0-tx-1 CPU1
sprintf(buf, \ netdev->name,
(RX_INTERRUPT ? \queue->index); char buf[IFNAMSIZ+6];
else