LVS+Keepalived部署全解
LVS keepalived负载均衡高可用 配置安装大全

LVS+Keepalived实现高可用集群一、基础介绍 (2)二、搭建配置LVS-NA T模式 (2)三、搭建配置LVS-DR模式 (4)四、另外一种脚本方式实现上面LVS-DR模式 (6)五、keepalived + LVS(DR模式) 高可用 (8)六、Keepalived 配置文件详细介绍 (11)一、基础介绍(一)根据业务目标分成三类:High Availability 高可用Load Balancing 负载均衡High Performance 高性能(二)实现集群产品:HA类:rhcs、heartbeat、keepalivedLB类:haproxy、lvs、nginx、f5、piranhaHPC类:/index/downfile/infor_id/42(三)LVS 负载均衡有三种模式:LVS-DR模式(direct router)直接路由模式进必须经过分发器,出就直接出LVS-NAT模式(network address translation)进出必须都经过分发器LVS-TUN模式(ip tunneling)IP隧道模式服务器可以放到全国各地二、搭建配置LVS-NAT模式1 、服务器IP规划:DR服务器添加一张网卡eth1,一个网卡做DIP,一个网口做VIP。
设置DIP、VIP IP地址:DIP的eth1和所有RIP相连同一个网段CIP和DIP的eth0(Vip)相连同一个网段Vip eth0 192.168.50.200Dip eth1 192.168.58.4客户机IP:Cip 192.168.50.32台真实服务器IP:Rip1 192.168.58.2Rip2 192.168.58.32 、R ealServer1配置:mount /dev/xvdd /media/vi /var/www/html/index.html写入:this is realserver1启动httpdvi /etc/sysconfig/network-scripts/ifcfg-eth0设置RIP,子网掩码必须设置成DIPIPADDR=192.168.58.2NETMASK=255.255.255.0GA TEWAY=192.168.58.43 、R ealServer2 配置:vi /var/www/html/index.html写入:this is realserver2启动httpdvi /etc/sysconfig/network-scripts/ifcfg-eth0设置RIP,子网掩码必须设置成DIPIPADDR=192.168.58.3NETMASK=255.255.255.0GA TEWAY=192.168.58.44 、在DR服务器上做以下设置:开启IP数据包转发vi /etc/sysctl.confnet.ipv4.ip_forward = 0 ##0改成1 ,此步很重要查看是否开启:sysctl -p5 、安装LVS服务:ipvsadmyum -y install ipvsadmlsmod |grep ip_vsTurbolinux系统没有带rpm包,必须下载源码安装:#ln -s /usr/src/kernels/2.6.18-164.el5-x86_64/ /usr/src/linux##如果不做连接,编译时会包错#tar zxvf ipvsadm-1.24.tar.gz#cd ipvsadm-1.24#make && make install运行下ipvsadm ,就加到ip_vs模块到内核了lsmod | grep ip 可以看到有ip_vs模块了6 、配置DR服务器,添加虚拟服务ipvsadm -L -n 查询信息ipvsadm -A -t 192.168.50.200:80 -s rr #添加集群服务、调度算法,rr为调度算法ipvsadm -a -t 192.168.50.200:80 -r 192.168.58.2 -m -w 1 # -m代表net模式,-w代表权重ipvsadm -a -t 192.168.50.200:80 -r 192.168.58.3 -m -w 2ipvsadm -L -n 再次查看是就有了realserverservice ipvsadm save 保存配置iptables -L 关闭或者清空防火墙watch -n 1 'ipvsadm -L -n' 查看访问记录的数显示如下:-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.50.200:80 rr-> 192.168.58.2:80 Masq 1 0 13-> 192.168.58.3:80 Masq 2 0 12ActiveConn是活动连接数,也就是tcp连接状态的ESTABLISHED;InActConn是指除了ESTABLISHED以外的,所有的其它状态的tcp连接.7 、测试:http://192.168.58.200配完后若想修改算法:ipvsadm -E -t 192.168.58.200:80 -s wlc修改Rip的权重:ipvsadm -e -t 192.168.58.200:80 -r 192.168.58.2 -m -w 1ipvsadm -e -t 192.168.58.200:80 -r 192.168.58.3 -m -w 5三、搭建配置LVS-DR模式lo:1 回应客户端,lo:1上的IP跟机器有关,跟网卡没有关系arp_announce 对网络接口上本地IP地址发出的ARP回应作出相应级别的限制arp_ignore 定义对目标地址为本地IP的ARP询问不同的请求一、3台服务器IP配置规划:DIP:eth0:1 192.168.58.200/32 (VIP)eth0 192.168.58.3/24 (DIP)RIP1 lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.4/24RIP2 lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.5/24 .................................................................RIP n lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.N/24二、每台realserver都加上下面四个步骤配置:1 、配置每台rip的IP、http,web页面2 、关闭每台rip服务器的ARP广播:echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announce3 、配置VIPifconfig lo:1 192.168.58.200 netmask 255.255.255.255 broadcast 192.168.58.200 up4 、配置网关route add -host 192.168.58.200 dev lo:1三、DR上的配置(DR模式下Dip不用开启转发):1 、配置DIP,在eth0上添加一个子VIP接口:添加VIP:ifconfig eth0:1 192.168.58.200 broadcast 192.168.58.200 netmask 255.255.255.255 up2 、配置网关:route add -host 192.168.58.200 dev eth0:1route -n3 、安装ipvsadm(方法见文档上面)yum -y install ipvsadmlsmod |grep ip_vs4 、配置LVS集群:ipvsadm -A -t 192.168.58.200:80 -s rr #添加集群服务、调度算法,rr为调度算法ipvsadm -a -t 192.168.58.200:80 -r 192.168.58.3 -g -w 1 # -g代表DR模式,-w代表权重ipvsadm -a -t 192.168.58.200:80 -r 192.168.58.2 -g -w 2service ipvsadm saveipvsadm -L -n 查看信息四、测试:http://192.168.58.200四、另外一种脚本方式实现上面LVS-DR模式IP规划:Dip eth0 192.168.58.139VIP:192.168.58.200RIP1:192.168.58.2RIP2:192.168.58.31 、D R服务器上安装ipvsadm#yum -y install ipvsadm#lsmod | grep ip_vs 查看没有输出#modprobe ip_vs 安装即可2 、配置DIP服务器、LVS这里也是个写脚本为了方便vim /etc/init.d/lvsdr#!/bin/bash#lvs of DRVIP=192.168.58.200RIP1=192.168.58.2RIP2=192.168.58.3case "$1" instart)echo "start lvs of DR"/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.0 up echo "1" > /proc/sys/net/ipv4/ip_forward/sbin/iptables -C/sbin/ipvsadm -A -t $VIP:80 -s rr/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g/sbin/ipvsadm;;stop)echo "stop lvs of DR"echo "0" > /proc/sys/net/ipv4/ip_forward/sbin/ipvsadm -C/sbin/ifconfig eth0:0 down;;*)echo "Usage :$0 {start|stop}"exit1esacexit 0#chmod o+x /etc/init.d/lvsdr启动脚本:#service lvsdr start3 、2台RIP服务器都配置这里我们也都可以写成脚本开启2台RIP的httpd服务。
负载均衡--LVS+Keepalived

利用LVS+Keepalived 实现高性能高可用负载均衡作者:NetSeek 网站: 背景:随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。
一.L VS+Keepalived 介绍1.LVSLVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
目前有三种IP负载均衡技术(VS/NA T、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。
2.KeepalviedKeepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现二. 网站负载均衡拓朴图.IP信息列表:名称IPLVS-DR-Master 61.164.122.6LVS-DR-BACKUP 61.164.122.7LVS-DR-VIP 61.164.122.8WEB1-Realserver 61.164.122.9WEB2-Realserver 61.164.122.10GateWay 61.164.122.1三. 安装LVS和Keepalvied软件包1. 下载相关软件包#mkdir /usr/local/src/lvs#cd /usr/local/src/lvs#wget /software/kernel-2.6/ipvsadm-1.24.tar.gz #wget /software/keepalived-1.1.15.tar.gz2. 安装LVS和Keepalived#lsmod |grep ip_vs#uname -r2.6.18-53.el5PAE#ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/ /usr/src/linux#tar zxvf ipvsadm-1.24.tar.gz#cd ipvsadm-1.24#make && make install#find / -name ipvsadm # 查看ipvsadm的位置#tar zxvf keepalived-1.1.15.tar.gz#cd keepalived-1.1.15#./configure && make && make install#find / -name keepalived # 查看keepalived位置#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/#mkdir /etc/keepalived#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/#cp /usr/local/sbin/keepalived /usr/sbin/#service keepalived start|stop #做成系统启动服务方便管理.四. 配置LVS实现负载均衡1.LVS-DR,配置LVS脚本实现负载均衡#vi /usr/local/sbin/lvs-dr.sh#!/bin/bash# description: start LVS of DirectorServer#Written by :NetSeek GW=61.164.122.1# website director vip.SNS_VIP=61.164.122.8SNS_RIP1=61.164.122.9SNS_RIP2=61.164.122.10./etc/rc.d/init.d/functionslogger $0 called with $1case "$1" instart)# set squid vip/sbin/ipvsadm --set 30 5 60/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up/sbin/route add -host $SNS_VIP dev eth0:0/sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr -p 3/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1touch /var/lock/subsys/ipvsadm >/dev/null 2>&1;;stop)/sbin/ipvsadm -C/sbin/ipvsadm -Zifconfig eth0:0 downifconfig eth0:1 downroute del $SNS_VIProute del $SS_VIPrm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1echo "ipvsadm stoped";;status)if [ ! -e /var/lock/subsys/ipvsadm ];thenecho "ipvsadm stoped"exit 1elseecho "ipvsadm OK"fi;;*)echo "Usage: $0 {start|stop|status}"exit 1esacexit 02.配置Realserver脚本.#vi /usr/local/sbin/realserver.sh#!/bin/bash# description: Config realserver lo and apply noarp#Written by :NetSeek SNS_VIP=61.164.122.8. /etc/rc.d/init.d/functionscase "$1" instart)ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP/sbin/route add -host $SNS_VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;stop)ifconfig lo:0 downroute del $SNS_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;*)echo "Usage: $0 {start|stop}"exit 1esacexit 0或者采用secondary ip address方式配置# vi /etc/sysctl.confnet.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2#sysctl –p#ip addr add 61.164.122.8/32 dev lo#ip add list 查看是否绑定3. 启动lvs-dr脚本和realserver启本,在DR上可以查看LVS当前状态:#watch ipvsadm –ln五.利用Keepalvied实现负载均衡和和高可用性1.配置在主负载均衡服务器上配置keepalived.conf#vi /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {cnseek@# failover@firewall.loc# sysadmin@firewall.loc}notification_email_from sns-lvs@smtp_server 127.0.0.1# smtp_connect_timeout 30router_id LVS_DEVEL}# 20081013 written by :netseek# VIP1vrrp_instance VI_1 {state MASTER #备份服务器上将MASTER改为BACKUP interface eth0virtual_router_id 51priority 100 # 备份服务上将100改为99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {61.164.122.8#(如果有多个VIP,继续换行填写.)}}virtual_server 61.164.122.8 80 {delay_loop 6 #(每隔10秒查询realserver状态)lb_algo wrr #(lvs 算法)lb_kind DR #(Direct Route)persistence_timeout 60 #(同一IP的连接60秒内被分配到同一台realserver) protocol TCP #(用TCP协议检查realserver状态)real_server 61.164.122.9 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 61.164.122.10 80 {weight 3TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}}2. BACKUP服务器同上配置,先安装lvs再按装keepalived,仍后配置/etc/keepalived/keepalived.conf,只需将红色标示的部分改一下即可.3. vi /etc/rc.local#/usr/local/sbin/lvs-dr.sh 将lvs-dr.sh这个脚本注释掉。
keepalived 原理

keepalived 原理
Keepalived是一个用于管理虚拟IP地址,负载均衡和故障转移的软件。
它使用VRRP协
议(虚拟路由冗余协议)来实现高可用性,并且可以与LVS(Linux虚拟服务器)结合使用,以实现负载均衡。
Keepalived的工作原理是,它在两台服务器之间建立一个虚拟路由器,其中一台服务器被设置为主服务器,另一台服务器被设置为备用服务器。
主服务器拥有虚拟IP地址,并且
可以接收和处理客户端的请求。
如果主服务器出现故障,备用服务器将接管虚拟IP地址,并继续处理客户端的请求。
Keepalived还可以与LVS结合使用,以实现负载均衡。
LVS是一种负载均衡技术,它可以将客户端的请求分发到多台服务器上,以提高服务器的性能。
Keepalived可以将LVS集群中的服务器分为主服务器和备用服务器,并且可以根据服务器的负载情况来动态调整负载
均衡策略。
总之,Keepalived是一款非常强大的高可用性和负载均衡软件,它可以帮助系统管理员实现高可用性和负载均衡,从而提高系统的可靠性和性能。
keepalived编译安装配置自启动

Centos配置Keepalived 做双机热备切换分类:网站架构2009-07-25 13:53 7823人阅读评论(0) 收藏举报centosserverdelayauthenticationsnscompilerKeepalived系统环境:************************************************************两台服务器都装了CentOS-5.2-x86_64系统Virtual IP: 192.168.30.20Squid1+Real Server 1:网卡地址(eth0):192.168.30.12Squid2+Real Server 2:网卡地址(eth0):192.168.30.13************************************************************软件列表:keepalived/software/keepalived-1.1.17.tar.gzopenssl-develyum -y install openssl-devel***************************************************************配置:配置基于高可用keepalived,确定LVS使用DR模式1.安装配置keepalived1.1安装依赖软件如果系统为基本文本安装,需要安装一下软件# yum -y install ipvsadm# yum -y install kernel kernel-devel# reboot 重启系统切换内核# yum -y install openssl-devel ;安装keepalived依赖软件#ln -s /usr/src/kernels/`uname -r`-`uname -m`/ /usr/src/linux;建立内核链接,编译keepalived支持lvs时需要注意建立链接的内核名和当前运行的内核一致,否则导致安装失败#tar zxvf keepalived-1.1.17.tar.gz#cd keepalived-1.1.17#./configure --prefix=/usr --sysconf=/etcKeepalived configuration------------------------Keepalived version : 1.1.17Compiler : gccCompiler flags : -g -O2Extra Lib : -lpopt -lssl -lcryptoUse IPVS Framework : Yes ;注意编译时一定要支持lvsIPVS sync daemon support : YesUse VRRP Framework : YesUse LinkWatch : NoUse Debug flags : No#make#make install1.2编辑keepalived配置文件#Vi /etc/keepalived/keepalived.confglobal_defs {notification_email {test@}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_instance VI_1 {state MASTER #备份服务器上将MASTER改为BACKUPinterface eth0 # HA 监测网络接口virtual_router_id 51 #主、备机的virtual_router_id必须相同priority 100 #主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 2 # VRRP Multicast 广播周期秒数authentication {auth_type PASS #VRRP 认证方式auth_pass 1111 #VRRP 口令字}virtual_ipaddress {192.168.30.20 # VRRP HA 虚拟地址如果有多个VIP,继续换行填写 }}virtual_server 192.168.30.20 80 {delay_loop 2 #每隔6秒查询realserver状态lb_algo rr #lvs 算法lb_kind DR #Direct Routepersistence_timeout 50 #同一IP 的连接60 秒内被分配到同一台realserverprotocol TCP #用TCP协议检查realserver状态real_server 192.168.30.12 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.30.13 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}}1.3BACKUP服务器同上配置,先安装lvs再按装keepalived,仍后配置/etc/keepalived/keepalived.conf,只需将红色标示的部分改一下即可.global_defs {notification_email {test@}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_instance VI_1 {state BACKUP #备份服务器上将MASTER改为BACKUPinterface eth0 # HA 监测网络接口virtual_router_id 51 #主、备机的virtual_router_id必须相同priority 99 #主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 2 # VRRP Multicast 广播周期秒数authentication {auth_type PASS #VRRP 认证方式auth_pass 1111 #VRRP 口令字}virtual_ipaddress {192.168.30.20 # VRRP HA 虚拟地址}}virtual_server 192.168.30.20 80 {delay_loop 2 #每隔6秒查询realserver状态lb_algo rr #lvs 算法lb_kind DR #Direct Routepersistence_timeout 50 #同一IP 的连接60 秒内被分配到同一台realserver protocol TCP #用TCP协议检查realserver状态real_server 192.168.30.12 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.30.13 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}}2. 配置lvs客户端脚本[c-sharp]view plaincopyprint?1.#vi /usr/local/sbin/realserver.sh2. #!/bin/bash3. # description: Config realserver lo and apply noarp4. #Written by :NetSeek 5.6. SNS_VIP=192.168.30.207.8. . /etc/rc.d/init.d/functions9.10.case"$1"in11. start)12. ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP13. /sbin/route add -host $SNS_VIP dev lo:014. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore15. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce16. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore17. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce18. sysctl -p >/dev/null 2>&119. echo "RealServer Start OK"20.21. ;;22. stop)23. ifconfig lo:0 down24. route del $SNS_VIP >/dev/null 2>&125. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore26. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce27. echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore28. echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce29. echo "RealServer Stoped"30. ;;31. *)32. echo "Usage: $0 {start|stop}"33. exit 134. esac35.36. exit 0或者采用secondary ip address方式配置# vi /etc/sysctl.confnet.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2#sysctl -p#ip addr add 192.168.30.20/32 dev lo#ip add list 查看是否绑定3. 启动lvs-dr脚本和realserver启本,在DR上可以查看LVS当前状态: #watch ipvsadm -ln4. 启动keepalived 服务#service httpd start#/etc/init.d/keepalived start查看keepalived的安装位置:# find / -name keepalived将keepalived作为服务添加到chkconfig中,并设置开机启动# chkconfig --add keepalived# chkconfig --level 35 keepalived on# chkconfig --list keepalivedkeepalived 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭“各等级”包括2、3、4、5等级等级0表示:表示关机等级1表示:单用户模式等级2表示:无网络连接的多用户命令行模式等级3表示:有网络连接的多用户命令行模式等级4表示:不可用等级5表示:带图形界面的多用户模式等级6表示:重新启动5. 测试lvs服务是否正常5.1通过浏览器访问http://192.168.30.20是否正常多次刷新浏览器,在主LVS上看连接数变化5.2停止主LVS上的keepalived 看看备份keepalived是否正常接管服务注:realserver如果为windows主机的话需要安装microsoft loopback,设置IP为VIP确认之后搜索注册表,关键字"VIP"把搜到结果的每项里面的subnet mask都改成255.255.255.255然后重启即可。
keepalived工作原理和作用

keepalived工作原理和作用keepalived是一个用于实现高可用性和负载均衡的软件,它基于VRRP协议,通过监测系统的状态来实现故障转移和负载均衡。
本文将从keepalived的工作原理和作用两个方面来介绍该软件。
一、keepalived的工作原理keepalived主要通过两个核心组件来实现高可用性和负载均衡的功能,分别是VRRP和健康检查。
1. VRRP(Virtual Router Redundancy Protocol)VRRP是一种用于实现路由器冗余的协议,它能够将多个路由器组成一个虚拟路由器,对外提供一个统一的IP地址。
这个虚拟路由器由一个Master和多个Backup组成,Master负责处理数据包的转发,而Backup则处于备份状态。
当Master发生故障时,Backup 中的一个会自动切换为Master,保证系统的可用性。
keepalived基于VRRP协议来实现高可用性。
在keepalived中,一个Master节点和多个Backup节点通过VRRP协议组成一个虚拟的服务IP地址,对外提供服务。
Master节点负责接收并处理客户端的请求,Backup节点则处于备份状态,当Master节点发生故障时,Backup节点会自动接管服务,保证服务的连续性。
这种方式避免了单点故障,提高了系统的可用性。
2. 健康检查健康检查是keepalived实现负载均衡的关键,它通过定期检测服务器的状态来判断服务器是否正常工作。
keepalived支持多种健康检查方式,包括ping检查、TCP连接检查、HTTP检查等。
通过不同的方式来检查服务器的状态,确保只有正常工作的服务器会接收到客户端的请求。
当keepalived检测到某个服务器发生故障或不可用时,会将该服务器从负载均衡的服务器池中移除,同时将请求转发到其他正常工作的服务器上。
这样可以避免故障服务器对系统性能的影响,提高整体的负载均衡效果。
LVS流程

LVS+Keepalived负载均衡1、LVS+Keepalived介绍1)、LVS的介绍LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);l vs说明:目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。
在调度器的实现技术中,IP负载均衡技术是效率最高的。
在已有的IP负载均衡技术中有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation),大多数商品化的IP负载均衡调度器产品都是使用此方法,如Cisco的LocalDirector、F5的Big/IP 和Alteon的ACEDirector。
在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。
所以,IPVS软件实现了这三种IP负载均衡技术,它们的大致原理如下(我们将在其他章节对其工作原理进行详细描述),Virtual Server via Network Address Translation(VS/NAT)通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
keepalived vip原理

文章标题:深度解析keepalived VIP原理1. 什么是keepalivedVIP在计算机网络中,keepalived是一种用于实现高可用性和负载均衡的开源软件。
而VIP(Virtual IP)则是虚拟IP的缩写,是指在一个局域网中,分配给一台或多台设备的IP位置区域,用于负载均衡或故障切换。
keepalived VIP原理是指keepalived软件通过分配虚拟IP来实现负载均衡和故障切换的工作原理。
2. keepalived VIP的实现原理在keepalived中,VIP的实现原理主要包括VRRP协议和实际IP位置区域的绑定。
VRRP(Virtual Router Redundancy Protocol)是一种用于实现多台路由器之间冗余备份的协议,它通过多播或广播的方式来实现路由器之间的通信,并且选举出一个主路由器来负责转发数据包。
在keepalived中,通过VRRP协议,多个主机可以通过共享一个虚拟IP位置区域来提供高可用性的服务。
3. VIP的切换原理在keepalived中,当主机出现故障时,会自动启动故障转移机制,将虚拟IP迅速切换到备用主机上,以保证服务的连续性。
这种切换的原理主要依赖于VRRP协议中的优先级和状态转移机制,通过优先级的设定和状态的监测,来实现故障的快速切换。
4. 个人观点和理解从功能上来看,keepalived VIP是一种非常有效的实现高可用性和负载均衡的解决方案。
它不仅可以提供故障转移的功能,还可以实现负载均衡和流量集中的管理。
在实际应用中,通过合理配置和管理,可以有效地提高网络服务的可用性和性能。
总结回顾通过本文的介绍,我们深入了解了keepalived VIP的原理和实现方式。
我们对VRRP协议和虚拟IP的绑定有了更深入的理解,并且了解了其在实际应用中的重要性和作用。
我们对故障转移和负载均衡的原理和实现方式有了更全面的认识,相信在实际应用中能够更灵活地运用这些知识。
redis主备部署方案

redis主备部署方案Redis部署方式采用主备的方式,通过keepalived来对外提供虚IP,并实现主备自动切换功能。
主实例A:192.168.20.30备实例B:192.168.20.232虚IP:192.168.20.110正常工作时,虚IP在主实例A上,主实例A上的数据自动同步到备实例B上,当主实例A挂掉之后,备实例B将自动接管虚IP,并将redis转换为主模式,待原主实例A恢复后,A将自动切换成备模式,从B上同步数据,主备角色互换,实现融灾备份。
安装部署步骤如下:1.安装keepalivedwget /software/keepalived-1.2.6.tar.gztarzxvf keepalived-1.2.6.tar.gzcd keepalived-1.2.6./configure如果报错configure: error:!!! OpenSSL is not properly installed on your system. !!!!!! Can not include OpenSSL headers files.解决办法:yum -y install openssl-develyum -y install popt-develln -s /usr/src/kernels/2.6.32-220.el6.x86_64/ /usr/src/linux./configuremakemake installcp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/cp /usr/local/sbin/keepalived /usr/sbin/mkdir /etc/keepalived添加keepalived的配置项:vi /etc/keepalived/keepalived.confglobal_defs {router_id LVS_DEVEL}vrrp_scriptMonitor_Redis {script "/home/bbcv/redis/redis_keepalive.sh"interval 3 #每3秒执行一次weight 2}# VIP1vrrp_instance VI_1 {state BACKUP #主备服务器都设置成BACKUPinterface eth0virtual_router_id55priority 100 # 备份服务上将100改为90advert_int 1 #检查间隔nopreempt #设置为不抢占,注意这个配置只能设置在state为BACKUP的主机上,而且这个主机的priority必须比另外一台高authentication {auth_type PASSauth_pass 1111}notify_master/home/bbcv/redis/redis_master.shnotify_backup/home/bbcv/redis/redis_backup.shtrack_script {Monitor_Redis #(调用redis进程检测脚本)}virtual_ipaddress {192.168.20.110#(如果有多个VIP,继续换行填写.)}}启动keepalivedservicekeepalived start2.redis_keepalive.sh脚本该脚本主要实现对redis进程进行监控,当检测到redis进程挂掉时,自动停止keepalived进程,使虚IP进行漂移注意添加该脚本的可执行权限!chmod +x redis_keepalive.sh#!/bin/bashtime=$(date '+%Y-%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=$redispath/redis-2.0.0-rc4/redis-cliif [ ! -d "logs" ]; thenmkdir $redispath/logsfilogfile=$redispath/logs/redis-state.logoldfile=$logfile'.'$(date +%Y-%m-%d --date='30 days ago')yesterdayfile=$logfile'.'$(date +%Y-%m-%d --date='1 days ago')#把昨天的日志重命名if [ -f $yesterdayfile ]thenecho "OK"elsemv $logfile $yesterdayfile>> $logfile 2>&1echo "$time [$yesterdayfile] Move yesterdayfile Success!" >> $logfilefi#删除老的日志文件if [ -f $oldfile ]thenrm -f $oldfile>> $logfile 2>&1echo "$time [$oldfile] Delete Old File Success!" >> $logfileelseecho "no old file"fi#检测redis端口是否正常status=`$rediscli -h 127.0.0.1 -p 6379 info|greprole|awk -F ":" '{print $2}'`$rediscli -h 127.0.0.1 -p 6379 info > /dev/nullif [ $? -eq0 ]; thenecho "$time redis server is OK" >>$logfileecho 目前状态为:$status >>$logfileelseecho "$time no redis service found!">>$logfilesleep 2# try to found it again$rediscli -h 127.0.0.1 -p 6379 info > /dev/nullif [ $? -eq0 ]; thenecho "$time redis server is OK" >>$logfileecho 目前状态为:$status >>$logfile#exit 0elseecho "$time redis server error" >>$logfile#stop keepalived/etc/init.d/keepalived stopecho "$time stop keepalived" >>$logfilefifi3.redis_master.sh脚本该脚本主要实现当keepalived切换到master时,执行slaveof no one语句把redis的端口转换为主模式注意添加该脚本的可执行权限!chmod +x redis_master.sh#!/bin/sh#本机IP地址localip=127.0.0.1#另一台服务器的地址backip=192.168.20.232#redis端口号port="6379 9998 11111 14948"time=$(date '+%Y-%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=$redispath/redis-2.0.0-rc4/redis-cli#日志文件目录logfile=$redispath/logs/redis-state.logfor p in $portdo{echo "$time redis $p端口切换成主端口" >>$logfile$rediscli -h $localip -p $p slaveof no one>>$logfile 2>&1sleep 1}done4.redis_backup.sh该脚本主要实现当keepalived切换到master时,执行slaveof 主redisIP 端口语句,把redis的端口转换为备模式,并同步主redis的数据注意添加该脚本的可执行权限!chmod +x redis_backup.sh#!/bin/sh#本机IP地址localip=127.0.0.1#另一台服务器的地址backip=192.168.20.232#redis端口号port="6379 9998 11111 14948"time=$(date '+%Y-%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=$redispath/redis-2.0.0-rc4/redis-cli#日志文件目录logfile=$redispath/logs/redis-state.logfor p in $portdo{echo "$time redis $p端口切换成$backip的备端口" >>$logfile$rediscli -h $localip -p $p slaveof $backip $p>>$logfile 2>&1sleep 1}done5.安装redis1.新建文件夹,如mkdirredis2.将redis-2.2.13.tar.gz拷入其中3.解压并进入主目录4.make5.make install(Ubuntu上需要sudo执行)6.修改配置文件redis.conf修改如下:daemonize no 改为 daemonize yes取消注释:syslog-enabled no (改为syslog-enabled yes)syslog-facility local0已将修改后的redis.conf文件放入附件,不同需求还需再修改配置文件(如修改端口等)7.在执行redis-server redis.conf启动时,可能会报如下错误:Can't chdir to '/var/db/redis': No such file or directory需要手动创建'/var/db/redis'文件夹# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition需要执行sysctlvm.overcommit_memory=1修改内核参数8.再次执行redis-server redis.conf可成功启动redis6.测试1.查看当前redis是主还是备/home/bbcv/redis/redis-2.0.0-rc4/redis-cli -h 127.0.0.1 -p 6379 info2.在主redisA上新增一条数据,查看备redisB是否同步该数据/home/bbcv/redis/redis-2.0.0-rc4/redis-cli -h 127.0.0.1 -p 63793.停止主redisA,查看虚IP是否切换到备redisB服务器,并查看备redisB服务器是否切换成主状态ip a查看虚IP是否在本机上4.恢复redisA,查看redisA是否从redisB中同步数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安装与配置两台负载均衡器:Lvs1:192.168.1.10Lvs2:192.168.1.11漂移地址(虚拟IP,VIP):Vip:192.168.1.169Real Server:RS1:192.168.1.102RS2:192.168.1.103LVS配置及ipvsadm和keepalived的安装在lvs master和lvs backup主机上安装。
1.首先安装一些辅助package如下:e2fsprogs-devel-1.41.12-18.el6.x86_64.rpmkernel-devel-2.6.32-642.el6.x86_64.rpmkeyutils-libs-devel-1.4-4.el6.x86_64.rpmkrb5-devel-1.10.3-10.el6_4.6.x86_64.rpmlibcom_err-devel-1.41.12-18.el6.x86_64.rpmlibnl-1.1.4-2.el6.x86_64.rpmlibnl-devel-1.1.4-2.el6.x86_64.rpmlibselinux-devel-2.0.94-5.3.el6_4.1.x86_64.rpmlibsepol-devel-2.0.41-4.el6.x86_64.rpmzlib-devel-1.2.3-29.el6.x86_64.rpmopenssl-devel-1.0.1e-15.el6.x86_64.rpmpkgconfig-0.23-9.1.el6.x86_64.rpmpopt-devel-1.13-7.el6.x86_64.rpmpopt-static-1.13-7.el6.i686.rpm安装时可能出现缺少什么package,去iso中找或者网上下载然后安装就可以了rpm –ivh XXXXXXXX.rpm2.然后安装ipvsadm将ipvsadm-1.26.tar.gz压缩文件复制到/usr/local/src/lvs/文件夹下,然后运行tar zxvf ipvsadm-1.26.tar.gz 命令。
创建软连接ln –s /usr/src/kernels/2.6.32-431.el6.x86_64/ /usr/src/linux,然后进去ipvsadm-1.26文件夹cd ipvsadm-1.26,make && make install。
#find / -name ipvsdam 查找的安装位置检查ipvsadm是否安装成功,可直接输入#ipvsadmIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn检查模块是否加入内核#lsmod| grep ip_vsip_vs 78081 03.安装keepalived将keepalived-1.2.2.tar.gz复制到/usr/local/src/lvs/文件夹下,然后解压,运行tar keepalived-1.2.2.tar.gz 命令,然后进去keepalived-1.2.2文件夹下,然后运行配置文件./configure –prefix=/usr/local/keepalived。
运行完后会产生以下效果:Keepalived configuration------------------------Keepalived version : 1.2.2Compiler : gccCompiler flags : -g -O2 -DETHERTYPE_IPV6=0x86ddExtra Lib : -lpopt -lssl -lcryptoUse IPVS Framework : YesIPVS sync daemon support : YesIPVS use libnl : NoUse VRRP Framework : YesUse Debug flags : No注意:Use IPVS Framework : YesIPVS sync daemon support : Yes这两项一定是yes然后执行make && make install,安装keepalived。
查找keepalived的安装位置:# find / -name keepalived/usr/local/keepalived/etc/sysconfig/keepalived/usr/local /keepalived/etc/rc.d/init.d/keepalived/usr/local /keepalived/etc/keepalived/usr/local /keepalived/sbin/keepalived拷贝keepalived的配置文件到/etc目录下# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/# cp /usr/local/ keepalived/ etc/sysconfig/keepalived /etc/sysconfig# mkdir /etc/keepalived# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived# cp /usr/local/keepalived/sbin/keepalived /usr/sbin将keepalived作为服务添加到chkconfig中,并设置开机启动# chkconfig --add keepalived# chkconfig --level 35 keepalived on# chkconfig --list keepalivedkeepalived 0:off 1:off 2:off 3:on 4:off 5:on 6:off配置LVS在LVS Master主机上,编写如下的配置信息:vi/etc/keepalived/keepalived.conf在编写配置文件时一定要注意“{”与前面一定要有一个空格,不然会出问题,如realserver连接不上lvs master等问题。
内容配置如下:global_defs { #全局定义用来设置keepalived的通知机制和标识router_id LVS_STUN #运行keepalived的机器的一个标识}vrrp_sync_group VGM { #VRRP同步组group {VI_1 #实例名}}vrrp_instance VI_1 { #VRRP实例配置state MASTER#负载均衡器的角色指定instance的初始状态,在两台router都启动后会竞选interface eth0 #承载VIP地址的物理接口,inside_network实例绑定的网卡lvs_sync_daemon_inteface eth0 #lvs syncd绑定的网卡virtual_router_id 51 #虚拟路由器的ID号,VRID标记(0-255),主从设备必须相同priority 100#竞选优先级,数字越大优先级越高,master要比backup高至少50advert_int 5 #检查间隔秒数(心跳频率)authentication { #本VRRP组的认证信息auth_type PASS #认证方式,支持PASS和AHauth_pass 1111 #认证的密码}virtual_ipaddress {#指定漂移地址(VIP),切换至master时这些IP被添加,切换至backup时,这些192.168.1.169 #IP会被删除#热备所针对的虚拟地址(VIP),可以有多个}}virtual_server 192.168.1.169 80 { #虚拟主机,包括虚拟服务器的IP地址、端口VIP port delay_loop 2 #健康检查的间隔时间lb_algo wrr #负载调度算法(wrr为根据权重轮询,其他参见ipvsadm手册)lb_kind DR #负载均衡类型,常用的为DR、NAT方式#persistence_timeout 1 #连接保持时间,适用于动态Web站点、FTP站点等情况protocol TCP #协议类型real_server 192.168.1.102 80 { #真实服务器的IP地址、端口weight 1 #节点权重#inhibit_on_failure #在服务器健康检查失败时,将其weight设置为0,而不是直接从IPVS里删除TCP_CHECK { #TCP健康检查connect_timeout 10 #连接超时nb_get_retry 3 #重试次数delay_before_retry 3 #重试间隔}}real_server 192.168.1.103 80 {weight 1TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3}}}virtual_server 192.168.1.169 3478 {delay_loop 2lb_algo wrrlb_kind DRpersistence_timeout 10protocol UDPreal_server 192.168.1.102 3478 {weight 1TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.103 3478 {weight 1TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3}}}Backup服务器上也是同样的配置,先安装lvs,再安装keepalived,然后配置/etc/keepalived/keepalived.conf,只需将state 改为BACKUP,priority改为比上面的数字小50即可。
然后通过service keepalived start启动keepalived服务,服务启动后,通过ipvsadm –ln来查看虚拟服务器列表,IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.1.169:80 wrr persistent 60-> 192.168.1.102:80 Route 1 0 0-> 192.168.1.103:80 Route 1 0 0同时,通过一个终端查看keepalived的日志,tail –f /var/log/messages通过日志可以看到一台lvs的keepalived处于master状态,一台处于backup状态。