keepalived HA&LB简单实现笔记
利用keepalived 实现HA&LB实验环境RHEL5U3
需要软件包 keepalived ipvsadm
VIP :192.168.0.16
realserver 1 :192.168.0.3
realserver 2 :192.168.0.4
装包
下载地址 wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
./configure --prefix=/ --mandir=/usr/local/share/man
--with-kernel-dir=/usr/src/kernels/2.6.18-128.el5-i686/
以上这步是 设定安装路径以及帮助文件的路径 可以自行定义 后面那段with-kernel-dir 这个参数很重要,这个参数并不表示我们要把keepalived编进内核,
而是指使用内核源码里面的头文件,也就是include目录 (如果需要用到LVS才需要这么做,
否则是不需要的,而且如果要使用netlink,还需要link_watch.cz这个文件)
上面这段我一直没弄清楚,希望高人指点下,因为我没有选这项的时候依然可以使用LVS
make
make install
然后修改 keepalived 的配置文件vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
storysky@sina.com.cn
}
notification_email_from storysky@sina.com.cn
#指定 keepalived 在发生事件(如切换)时,需要发送email到你定义的邮箱,可以填多个,每行一个
smtp_server 192.168.10.1 #这两项是邮件服务器的配置
smtp_connect_timeout 30
router_id LVS_DEVEL # 运行keepalived的机器的一个标识
}
#下面是VRRPD 配置
vrrp_sync_group VG1 {
group {
VI_1 #VRRP实例名
}
}
#VRRP 实例配置
vrrp_instance VI_1 {
state BACKUP # 无论主与备都设置为BACKUP是为了不抢占director, #通过priority来确认谁先起作用,主的优先级至少高于从50
interface eth0 # (inside_network)实例绑定的网卡
macast_src_ip #发送多播包的地址,如果不设置,默认使用绑定网 卡的#primary IP
#建议使用专门网卡并使用这项,问题:如果这块儿网卡出了问题如何处理?
virtual_router_id 51 #VRID 标记 (0-255)主备服务器必须一致
priority 101 #优先级
advert_int 1 #检查间隔,默认为1秒
nopreempt # 不抢占 这个配置只能设置在 state为 BACKUP的主机 上,而且这台主机的priority必须比另一台要高
authentication { #这是认证的相关设置
auth_type PASS #认证方式 PASS | AH
auth_pass 33210 #认证密码
}
virtual_ipaddress {
192.168.0.16 # VIP 地址
}
}
virtual_server 192.168.0.16 80 {
delay_loop 6 # 每六秒查询realserver状态
lb_algo rr #lvs采用轮询算法 rr|wrr|lc|wlc|lblc|sh|dh
lb_kind DR #lvs使用Direct Route NAT|DR|TUN
protocol TCP #使用TCP 协议来检查
persistence_timeout 600 # 会话保持时间,就是同一个ip在600秒内会被分到同一个realserver上
real_server 192.168.0.3 80 {
weight 1 #权重
inhibit_on_failure # 在检查失败的时候 将权重设为0 并继续监控 而不是直接把他踢掉,注意这个别加在TCP_CHECK下面
TCP_CHECK { #以什么方式来检查 健康状况 HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 3 #连接超时时间
nb_get_retry 3 #重试连接次数
delay_before_retry 3#每次重试连接间隔 (单位秒)
# bindto 192.168.0.16 #以此地址来 向服务器发送请求来检查其健康状态
connect_port 80 #tcp去检查80端口状态来判断realserver是否健康, 这个和上面那个bindto 不要一起用
#注意:HTTP_GET|SSL_GET|SMTP_CHECK|MISC_CHECK 这几种检查方式请参考 《keepalived权威指南》第十四页
}
}
real_server 192.168.0.4 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
# 如果有更多的realserver 请按照需要自行添加
}
realservice 配置脚本
ifconfig lo:1 192.168.0.16 netmask 255.255.255.255
echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore
安装Apache 服务并检查其是否可以正常工作
这个是我自己机器上的网卡,根据自己实际情况而定
启动 /etc/init.d/keepalived start
测试:
通过停止 服务 和拔网线 测试 ipvsadm都成功的切换到了备服务器
实验结果 成功
参考文档 《keepalived权威指南》
页:
[1]