利用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是一款非常强大的高可用性和负载均衡软件,它可以帮助系统管理员实现高可用性和负载均衡,从而提高系统的可靠性和性能。
服务器部署策略高可用性和负载均衡的实现方法

服务器部署策略高可用性和负载均衡的实现方法服务器部署策略:高可用性和负载均衡的实现方法在当前的信息技术时代,服务器的高可用性和负载均衡是建立稳定和可靠的网络服务的关键要素。
本文将探讨服务器部署策略中实现高可用性和负载均衡的方法。
一、高可用性的实现方法高可用性是指服务器在面对硬件故障、网络瓶颈或其他异常情况时,依然能够提供持续、无中断的服务。
以下是几种常见的高可用性实现方法:1. 服务器冗余备份:通过使用冗余服务器,将网络服务和应用程序部署在多个服务器上,当其中一个服务器发生故障时,其他服务器能够接管工作。
常用的冗余备份方法包括主-从服务器、主-主服务器和N+1等。
2. 硬件负载均衡:通过使用硬件设备例如负载均衡器,将请求分发到多个服务器上,这样即使其中一个服务器发生故障,其他服务器也能够平衡负载并提供服务。
3. 软件负载均衡:类似于硬件负载均衡的概念,但使用软件实现。
软件负载均衡可以部署在服务器集群内部,通过特定的算法将请求分发给提供相同服务的多个服务器。
4. 心跳监测:通过不断监测服务器的状态和可用性,例如网络连接、CPU负载和存储空间等,实时检测服务器的可用性,并在故障时自动切换到备用服务器。
二、负载均衡的实现方法负载均衡是指将来自用户的请求在多个服务器之间平均分配,以达到均衡负载的目的,确保服务器处理请求的高效性和可扩展性。
以下是几种主要的负载均衡实现方法:1. DNS负载均衡:通过在域名系统(DNS)配置中为相同域名设置多个IP地址,将请求分发到不同的服务器上。
然而,DNS负载均衡无法解决服务器故障带来的问题。
2. 硬件负载均衡:使用专用的负载均衡硬件设备,例如负载均衡器,将请求分发到多个服务器上,实现负载均衡。
硬件负载均衡器可以根据不同算法进行任务分配,例如轮询、权重和最少连接。
3. 软件负载均衡:类似于硬件负载均衡,但使用软件实现。
软件负载均衡器可以针对特定需求进行定制,灵活性更高。
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 haproxy原理

keepalived haproxy原理keepalived和haproxy是常用的负载均衡工具,在实际应用中经常被使用到。
keepalived主要用于实现高可用性、故障转移,而haproxy则主要用于实现负载均衡。
本文将介绍keepalived和haproxy的原理及其应用。
一、keepalived原理keepalived是一个基于VRRP协议实现的高可用性软件,主要用于实现集群的故障转移。
它的原理是通过多台服务器协同工作,将它们构建成一个高可用性的集群,当其中一台服务器发生故障时,其他节点会接管该节点的服务,从而实现服务的不间断运行。
keepalived的原理可以简单概括为以下几个步骤:1. 配置keepalived的节点信息,包括节点的IP地址、优先级等参数。
2. 将节点配置成VRRP协议中的虚拟路由器,并指定一个虚拟IP地址。
3. 当节点正常工作时,其会不断发送VRRP协议的心跳包,以表明自己的存在。
4. 当某个节点发生故障或者不再向外发送心跳包时,其他节点会检测到该节点的异常,并接管该节点的服务。
5. 故障节点恢复后,其他节点会自动将服务归还给该节点。
二、haproxy原理haproxy是一款高性能的负载均衡软件,可以将来自客户端的请求转发到多个后端服务器上,从而实现负载均衡。
haproxy的原理可以简单概括为以下几个步骤:1. 配置haproxy的监听端口和后端服务器地址。
2. 当客户端发送请求时,haproxy会接收并解析请求,然后根据预设的负载均衡算法,选择一个后端服务器进行请求转发。
3. haproxy会将请求转发给所选的后端服务器,并将响应返回给客户端。
4. 如果所选的后端服务器出现故障或者超过预设的最大连接数,haproxy会自动将该服务器从负载均衡池中剔除,并选择其他可用的服务器进行请求转发。
5. 当故障的服务器恢复或者新的服务器加入负载均衡池时,haproxy会自动将其重新加入负载均衡池中,并参与负载均衡。
nginx和keeplive实现负载均衡高可用

nginx和keeplive实现负载均衡⾼可⽤⼀、 Keeplive服务介绍Keeplive期初是专门为LVS设计的,专门⽤来监控LVS集群系统中各个服务节点的状态,后来⼜加⼊VRRP的功能,因此除了配合LVS服务以外,也可以作为其他服务(nginx,haroxy)的⾼可⽤软件,VRRP是Virtual Router Redundancy Protocol(虚拟路由冗余协议)的缩写,VRRP出现的⽬的就是为了解决静态路由出现的单点故障问题,它能够保证⽹络的不间断,稳定的运⾏。
所以keepalive⼀⽅⾯具有LVS cluster nodes healthchecks功能,另⼀⽅⾯也具有LVS directors failover1.1 Keepalived的⽤途Keepalive服务的两⼤⽤途:healthcheck和failoverha failover功能:实现LB Master主机和Backup主机之间故障转移和⾃动切换这是针对有两个负载均衡器Direator同时⼯作⽽采取的故障转移措施,当主负载均衡器失效或者出现故障时,备份的负载均衡器(BACKUP)将⾃动接管主负载均衡器的所有⼯作(vip资源以及相关服务):⼀旦主负载均衡器故障恢复,MASTER⼜会接管回它原来的⼯作,⼆备份复杂均衡器(BACKUP)会释放master是⼩事它接管的⼯作,此时两者将恢复到最初各⾃的⾓⾊1.2 LVS cluster nodes healthchecks功能在keeplive.conf配置记忆可以实现LVS的功能keeplive可以对LVS下⾯的集群节点进⾏健康检查rs healthcheck功能:负载均衡定期检查RS的可⽤性决定是否给其分发请求当虚拟的服务器中的某⼀个甚⾄是⼏个真实的服务器同时出现故障⽆法提供服务时,负载均衡器会⾃动将失效的RS服务器从转发队列中清除出去,从⽽保证⽤户的访问不收影响;当故障的RS服务器被修复后,系统⼜⾃动的将他们加⼊转发队列,分发请求提供正常服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LVS+Keepalived 介绍LVSLVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
KeepalviedKeepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP 主机之间failover的实现二. 网站负载均衡拓朴图IP信息列表:名称 IPLVS-DR-Master 61.164.122.6∙ LVS-DR-BACKUP 61.164.122.7∙ LVS-DR-VIP 61.164.122.8∙ WEB1-Realserver 61.164.122.9∙ WEB2-Realserver 61.164.122.10∙ GateWay 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.gz复制代码2. 安装LVS和Keepalived#lsmod |grep ip_vs∙ #uname -r∙ 2.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脚本实现负载均衡注:此脚本在于演示方便大家理解lvs,在keepalived方案中不要启动此脚本,所以看后面有注掉,很多朋友对此有问题。
关于LVS的keepalvied的HA方案,完全由keepalived.conf 一个文件搞定,特此声明!#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.8∙ SNS_RIP1=61.164.122.9∙ SNS_RIP2=61.164.122.10∙∙ ./etc/rc.d/init.d/functions∙∙ logger $0 called with $1∙∙ case "$1" in∙∙ start)∙ # 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 1∙ touch /var/lock/subsys/ipvsadm >/dev/null 2>&1∙∙ ;;∙ stop)∙ /sbin/ipvsadm -C∙ /sbin/ipvsadm -Z∙ ifconfig eth0:0 down∙ route del $SNS_VIP∙ rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1∙ echo "ipvsadm stoped"∙ ;;∙∙ status)∙∙ if [ ! -e /var/lock/subsys/ipvsadm ];then∙ echo "ipvsadm stoped"∙ exit 1∙ else∙ echo "ipvsadm OK"∙ fi∙ ;;∙∙ *)∙ echo "Usage: $0 {start|stop|status}"∙ exit 1∙ esac∙∙ exit 0∙复制代码2.配置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/functions∙∙ case "$1" in∙ start)∙ ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP ∙ /sbin/route add -host $SNS_VIP dev lo:0∙ 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∙ sysctl -p >/dev/null 2>&1∙ echo "RealServer Start OK"∙∙ ;;∙ stop)∙ ifconfig lo:0 down∙ route del $SNS_VIP >/dev/null 2>&1∙ echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore∙ echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce∙ echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore∙ echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce∙ echo "RealServer Stoped"∙ ;;∙ *)∙ echo "Usage: $0 {start|stop}"∙ exit 1∙ esac∙∙ exit 0∙复制代码或者采用secondary ip address方式配置# vi /etc/sysctl.confnet.ipv4.conf.lo.arp_ignore = 1∙ net.ipv4.conf.lo.arp_announce = 2∙ net.ipv4.conf.all.arp_ignore = 1∙ net.ipv4.conf.all.arp_announce = 2∙ [code]∙ #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 keepalived∙∙ global_defs {∙ notification_email {∙ cnseek@∙ }∙ notification_email_from sns-lvs@∙ smtp_server 127.0.0.1∙ # smtp_connect_timeout 30∙ router_id LVS_DEVEL∙ }∙∙ # 20081013 written by :netseek∙ # VIP1∙ vrrp_instance VI_1 {∙ state MASTER #备份服务器上将MASTER改为BACKUP∙ interface eth0∙ virtual_router_id 51∙ priority 100 # 备份服务上将100改为99∙ advert_int 1∙ authentication {∙ auth_type PASS∙ auth_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 3∙ delay_before_retry 3∙ connect_port 80∙ }∙ }∙ real_server 61.164.122.10 80 {∙ weight 3∙ TCP_CHECK {∙ connect_timeout 10∙ nb_get_retry 3∙ delay_before_retry 3∙ connect_port 80∙ }∙ }∙ }∙复制代码2. BACKUP服务器同上配置,先安装lvs再按装keepalived,仍后配置/etc/keepalived/keepalived.conf,只需将红色标示的部分改一下即可.3. 停掉lvs_dr.sh演示脚本vi /etc/rc.local#/usr/local/sbin/lvs-dr.sh 将lvs-dr.sh这个脚本注释掉。