首页 > 代码库 > 9.负载均衡lvs+keepaived
9.负载均衡lvs+keepaived
9.负载均衡lvs+keepaived
1、安装lvs (LB端) | #/etc/init.d/keepalived stop #停止keepalived高可用 #/application/nginx/sbin/nginx -s stop #停止nginx反向代理 rpm -qa ipvsadm #检查是否已安装软件 yum -y install ipvsadm ls /usr/src/kernels uname -r #yum -y update kernel kernel-devel #我遇到过的坑 uname看到的内核和安装的内核版本不一致 需要更新内核 再重启!重启!重启! #reboot ln -s /usr/src/kernels/$(uname -r) /usr/src/linux lsmod |grep ip_vs |
2、配置lvs (LB端) | ip addr add 10.0.0.3/24 dev eth0 label eth0:0 #添加vip #ipvsadm --help #查看帮助 ipvsadm -C #清空所有 ipvsadm -A -t 10.0.0.3:80 -s wrr #-A 添加虚拟服务 -t 指定tcp服务地址 -s 调度算法 ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1 #添加节点Rs -g 表示dr模式 ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1 ipvsadm --set 30 5 60 #--set tcp tcpfin udp set connection timeout values ipvsadm -Ln #查看ipvs情况 #以上服务器端搭建完毕! 服务端删除节点: ipvsadm -d -t 10.0.0.3:80 -r 10.0.0.8:80 ipvsadm -d -t 10.0.0.3:80 -r 10.0.0.7:80 ip addr del 10.0.0.3/24 dev eth0 虽然lvs没有自动剔除坏节点的功能,但是可以通过编写脚本检测进行删除节点! |
3、绑定VIP (RS端) | ip addr add 10.0.0.3/32 dev lo label lo:0 #绑定vip,此处必须和LB端的vip保持一致 route add -host 10.0.0.3 dev lo #添加静态路由,可有可无。 |
4、抑制ARP (RS端) | echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce |
5、keepalived 直接管理ipvs (LB端) | cd /etc/keepalived/ cat >keepalived.conf<<EOF ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER #主 interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { # 10.0.0.3/24 dev eth0 label eth0:1 #参照老师的操作 这里是个天坑呀 因为和后面rs端vip的掩码不一样会导致访问不通 千万别写24了呀 此事耽误了我2天时间! 10.0.0.3 dev eth0 label eth0:1 } } virtual_server 10.0.0.3 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP real_server 10.0.0.7 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 10.0.0.8 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } EOF ipvsadm -C #清空所有 ipvsadm -Ln #查看ipvs情况 /etc/init.d/keepalived start ipvsadm -Ln tailf /var/log/messages #检查日志 for n in `seq 5`;do curl 10.0.0.3;sleep 1;done #客户机的检测脚本 |
总结 keepalived+lvs的DR模式 | 处理了两次大坑: 1、疑问:安装lvs的时候需要 ln -s /usr/src/kernels/`uname -r` /usr/src/linux 创建不成功软链接? 解决方法:后面经过鸡血哥老师的聊天指导,通过 yum -y update kernel kernel-devel 然后重启解决! 原因:我之前没有更新过内核 也yum update过,但是没有重启没有生效!重启生效呀! 2、 按照老师的视频来的,结果keepalived.conf的vip地址写的是10.0.0.3/24端绑定lo网卡的却是10.0.0.3/32,结果导致keepalived的健康检测老是后面节点rs不通! 解决方法:修改keepalived.conf的vip为10.0.0.0 dev eth0 label eth0:1 解决问题! 参考别人的链接:http://www.cnblogs.com/ivictor/p/5261445.html LVS+Keepalived搭建MyCAT高可用负载均衡集群 |
9.负载均衡lvs+keepaived