利用keepalived 实现HA&LB
实验环境RHEL5U3需要软件包 keepalived ipvsadm
VIP :192.168.0.16
realserver 1 :192.168.0.3
realserver 2 :192.168.0.4
装包
下载地址 wget ./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
makemake install然后修改 keepalived 的配置文件vim /etc/keepalived/keepalived.conf
global_defs { notification_email { storysky@sina.com.cn } notification_email_from#指定 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.255echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announceecho 2 > /proc/sys/net/ipv4/conf/eth0/arp_announceecho 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignoreecho 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore安装Apache 服务并检查其是否可以正常工作
这个是我自己机器上的网卡,根据自己实际情况而定
启动 /etc/init.d/keepalived start
测试:通过停止 服务 和拔网线 测试 ipvsadm都成功的切换到了备服务器
实验结果 成功
参考文档 《keepalived权威指南》
本文出自 “” 博客,请务必保留此出处