lvs+keepalived+DR安装
- 格式:doc
- 大小:56.50 KB
- 文档页数:3
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 实现高性能高可用负载均衡作者: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这个脚本注释掉。
1、安装LVS软件(1)安装前准备操作系统:统一采用Centos5.3版本,地址规划如下:更详细的信息如下图所示:图中的VIP指的是虚拟IP地址,还可以叫做LVS集群的服务IP,在DR、TUN模式中,数据包是直接返回给用户的,所以,在Director Server上以及集群的每个节点上都需要设置这个地址。
此IP在Real Server上一般绑定在回环地址上,例如lo:0,同样,在Director Server 上,虚拟IP绑定在真实的网络接口设备上,例如eth0:0。
各个Real Server可以是在同一个网段内,也可以是相互独立的网段,还可以是分布在internet上的多个服务器.(2)安装操作系统需要注意的事项Centos5.3版本的Linux,内核默认支持LVS功能,为了方便编译安装IPVS管理软件,在安装操作系统时,建议选择如下这些安装包:l 桌面环境:xwindows system、GNOME desktop environment。
l 开发工具:development tools、x software development、gnome software、development、kde software development。
系统安装完毕,可以通过如下命令检查kernel是否已经支持LVS的ipvs模块:[root@localhost ~]#modprobe -l |grep ipvs/lib/modules/2.6.18-194.11.1.el5/kernel/net/ipv4/ipvs/ip_vs.ko/lib/modules/2.6.18-194.11.1.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko如果有类似上面的输出,表明系统内核已经默认支持了IPVS模块。
接着就可以安装IPVS管理软件了。
(3)在Director Serve上安装IPVS管理软件IPVS提供的软件包有源码方式的也有rpm方式的,这里介绍下源码方式安装IPVS,首先从/software/ipvs.html下载对应版本的ipvs源码,由于我们这里采用的操作系统为Centos5.3版本,因此,下载对应的ipvsadm-1.24版本,接着进行安装:[root@localhost ~]#tar zxvf ipvsadm-1.24.tar.gz[root@localhost ~]#cd ipvsadm-1.24[root@localhost ~]#make[root@localhost ~]#make install注意:在make时可能会出现错误编译信息,这是由于编译程序找不到对应内核的原因,按照如下操作就可以正常编译:[root@localhost ~]#ln -s /usr/src/kernels/2.6.18-128.el5-i686/ /usr/src/linux也可以下载rpm安装包,通过rpm方式进行安装:[root@localhost ~]#rpm –ivh ipvsadm-1.24-6.1.i386.rpm然后执行:[root@localhost ~]# ipvsadm --help如果看到帮助提示,表明IPVS已经成功安装(4)ipvsadm的用法举例如下:[root@localhost ~]# ipvsadm -A -t 192.168.12.135:80 -s rr -p 600以上表示在内核的虚拟服务器列表中添加一条192.168.12.135的虚拟服务器记录,并且指定此虚拟服务器的服务端口为80,然后指定此虚拟服务器的调度策略为轮询调度,并且在每个real server上的持续服务时间为600秒,即10分钟[root@localhost ~]# ipvsadm -A -t 192.168.12.188:21 -s wlc 以上表示在内核的虚拟服务器列表中又添加了一条192.168.12.188的虚拟服务器,此虚拟服务器的服务端口为21,即FTP 服务。
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然后重启即可。
centos7安装配置LVS+keepalived⾼可⽤Centos7-Lvs+Keepalived架构LVS+Keepalived介绍1 、 LVSLVS 是⼀个开源的软件,可以实现 LINUX 平台下的简单负载均衡。
LVS 是 Linux Virtual Server 的缩写,意思是 Linux 虚拟服务器。
⽬前有三种 IP 负载均衡技术( VS/NAT 、 VS/TUN 和 VS/DR );⼋种调度算法( rr,wrr,lc,wlc,lblc,lblcr,dh,sh )。
2 、 keepalivedKeepalived 是运⾏在 lvs 之上,是⼀个⽤于做双机热备( HA )的软件,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换,提⾼系统的可⽤性。
运⾏原理keepalived 通过选举(看服务器设置的权重)挑选出⼀台热备服务器做 MASTER 机器, MASTER 机器会被分配到⼀个指定的虚拟 ip ,外部程序可通过该 ip 访问这台服务器,如果这台服务器出现故障(断⽹,重启,或者本机器上的 keepalived crash 等), keepalived 会从其他的备份机器上重选(还是看服务器设置的权重)⼀台机器做 MASTER 并分配同样的虚拟 IP ,充当前⼀台 MASTER 的⾓⾊。
选举策略选举策略是根据,完全按照权重⼤⼩,权重最⼤( 0 ~ 255 )的是 MASTER 机器,下⾯⼏种情况会触发选举。
1. keepalived 启动的时候;2. master 服务器出现故障(断⽹,重启,或者本机器上的 keepalived crash 等,⽽本机器上其他应⽤程序 crash 不算);3. 有新的备份服务器加⼊且权重最⼤。
配置实例lvs_vip : 172.16.10.188lvs1+keepalived 主: 172.16.10.102lvs2+keepalived 备: 172.16.10.142nginx1 : 172.16.10.162nginx2 : 172.16.10.167安装 ipvsadm 和 keepalived# yum -y install ipvsadm keepalived修改 keepalived 主的配置# vim/etc/keepalived/keepalived.confglobal_defs{notification_email{******@ #报警接收⼈,多个写多⾏}notification_email_from ******@ #报警发件⼈smtp_server #发送email时使⽤的smtp服务器地址smtp_connect_timeout 30 #smtp超时时间router_id LVS1 #表⽰运⾏keepalived服务器的⼀个标识,发邮件时显⽰在邮件主题的信息}#不使⽤SYNCGroup的话,如果路由有2个⽹段,⼀个内⽹,⼀个外⽹,每个⽹段开启⼀个VRRP实例,假设VRRP配置为检查内⽹,那么当外⽹出现问题时,VRRP会认为⾃⼰是健康的,则不会发送Master和Backup的切换,从⽽导致问题,SyncGroup可以把两个实例都放⼊SyncGroup,这样的话,Group⾥任何⼀个实例出现问题都会发⽣切换vrrp_sync_grouptest {group{loadbalance}}vrrp_instanceloadbalance {state MASTER #指定keepalived的⾓⾊,MASTER表⽰此主机是主服务器,BACKUP表⽰此主机是备⽤服务器interface eno16777736 #指定HA监测⽹络的接⼝lvs_sync_daemon_inteface eno16777736 #负载均衡器之间的监控接⼝,类似于HA HeartBeat的⼼跳线virtual_router_id 38 #虚拟路由标识,这个标识是⼀个数字,同⼀个vrrp实例使⽤唯⼀的标识。
安装与配置两台负载均衡器: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 命令。
1.背景随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。
2.L VS+Keepalived介绍LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。
Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。
3.相关术语3.1IP负载均衡技术3.1.1VS/NAT客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器,调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。
同时,调度器在连接Hash表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务器。
当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户。
我们在连接上引入一个状态机,不同的报文会使得连接处于不同的状态,不同的状态有不同的超时值。
一、Redis和Keepalived安装1、以下步骤在121和122上均要进行一遍2、以root用户登录,cd /usr/local2、命令:mkdir ms40 新建ms40目录3、cd ms404、mkdir redis && cd redis && mkdir log && mkdir data然后切回ms40目录5、mkdir keepalived6、上传文件redis-2.6.14.tar.gz至redis目录上传文件keepalived-1.2.7.tar.gz至keepalived目录7、安装redis1)cd redis2)tar zxvf redis-2.6.14.tar.gz3)cd redis-2.6.144)make5)cd src6)cp redis-benchmark redis-cli redis-server /usr/bin/7)切回至ms40目录8、安装keepalived1)cd keepalived2)tar zxvf keepalived-1.2.7.tar.gz3)yum install popt-devel4)yum -y install openssl-devel5)cd keepalived-1.2.76)./configure7)make && make install二、Keepalived配置1、转移keepalived的配置文件1)cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/2)cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/3)mkdir /etc/keepalived4)cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/5)cp /usr/local/sbin/keepalived /usr/sbin/三、Mater配置(10.25.174.121)1、从附件的Master文件夹中获取scripts文件夹和keepalived.conf覆盖至目录/etc/keepalived目录下2、给脚本加上可执行权限:chmod +x /etc/keepalived/scripts/*.sh3、备份/usr/local/ms40/redis/redis-2.6.14目录下的redis.conf文件4、从附件的Master文件夹中获取redis.conf文件覆盖至上述目录中四、Slave配置(10.25.174.122)1、从附件的Slave文件夹中获取scripts文件夹和keepalived.conf覆盖至目录/etc/keepalived目录下2、给脚本加上可执行权限:chmod +x /etc/keepalived/scripts/*.sh3、备份/usr/local/ms40/redis/redis-2.6.14目录下的redis.conf文件4、从附件的Master文件夹中获取redis.conf文件覆盖至上述目录中五、启动1、启动121上的redis1)cd /2)cd /usr/local/ms40/redis/redis-2.6.143)src/redis-server2、启动122上的redis1)cd /2)cd /usr/local/ms40/redis/redis-2.6.143)src/redis-server3、启动121上的keepalived1)cd /2)service keepalived start4、启动122上的keepalived1)cd /2)service keepalived start六、验证1、运行-cmdPing 10.25.174.200 看是否能够ping通2、运行-cmdtelnet 10.25.174.200 6379 是否能通3、使用sshclient连接至121或者122,使用root用户cd /usr/local/ms40/redis/redis-2.6.14src/redis-cli –h 10.25.174.200set name “test”get name看看结果是否为test如果是则del test六、安装Redis过程中涉及的一些问题1、GCC的问题make[2]: cc: Command not foundmake[1]: *** [adlist.o] Error 127make[1]: Leaving directory `/usr/local/redis-2.6.16/src'make: *** [all] Error 2原因:没安装gcc,执行命令安装:yum install gcc-c++2、内存分配器的问题(重视)make[1]: Entering directory `/usr/local/redis-2.6.16/src'CC adlist.oIn file included from adlist.c:34:zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directoryzmalloc.h:55:2: error: #error "Newer version of jemalloc required"make[1]: *** [adlist.o] Error 1make[1]: Leaving directory `/usr/local/redis-2.6.16/src'make: *** [all] Error 2原因:查看redis的源码src/zmalloc.c可以看到如下代码:#if defined(USE_TCMALLOC)#define malloc(size) tc_malloc(size)#define calloc(count,size) tc_calloc(count,size)#define realloc(ptr,size) tc_realloc(ptr,size)#define free(ptr) tc_free(ptr)#elif defined(USE_JEMALLOC)#define malloc(size) je_malloc(size)#define calloc(count,size) je_calloc(count,size)#define realloc(ptr,size) je_realloc(ptr,size)#define free(ptr) je_free(ptr)可以看到源码中首先会判断系统中是否存在tcmalloc内存分配器,如果没有,则使用jemalloc内存分配器,如果连jemalloc分配器也没有找到,就会报错了。
Keepalived搭建lvs负载均衡高可用一.环境准备 (2)二.KEEPALIVED+LVS 负载均衡 (2)1. 网络IP规划: (2)2. LVS 分发有三种模式: (2)3.LVS的8种常用调度模式:(本文采用rr模式) (3)三.简易安装思路(主lvs上,192.168.0.60) (4)1.安装ipvsadm 包--分发器 (4)2.keepalievd 依赖包--HA (4)3.安装编辑keepalievd包 (4)4.建立开机启动文件 (5)5.启动keepalived并设置开机自启 (5)6.修改主配置文件:(主从稍有不同,在主上标记从的配置) (5)7.启动keepalived和ipvsadm服务并查看 (7)四.配置web服务器(本文需要两台,配置相同) (7)2.启动脚本 (8)3.开机启动脚本 (8)4.为web节点添加网页index.html (8)5.开启httpd服务 (8)五.测试 (9)1.正常状态:lvs在主上工作,负载62和63 (9)2.主机宕机状态:lvs在从上工作,负载62和63 (9)六.压力测试(webbench) (10)七.报错信息(日志文件为:/var/log/messages) (10)1.过程中出现过vip不能漂移 (10)一.环境准备关闭selinux、iptables修改hosts文件all 有机器的ip 与各自的主机名对应修改/etc/sysconfig/network主机名修改/etc/resolv.conf配置yum源配置网卡做好快照二.KEEPALIVED+LVS 负载均衡1. 网络IP规划:vip:192.168.0.70主分发器dip:192.168.0.60 gw:192.168.0.1从分发器dip:192.168.0.61 gw:192.168.0.1Realserver: web服务器dip:192.168.0.62gw:192.168.0.1lo:1 192.168.0.70Realserver: web服务器dip:192.168.0.63gw:192.168.0.1lo:1 192.168.0.702.LVS 分发有三种模式:LVS是工作在TCP/IP的网络层,通过控制IP来实现负载均衡的,所以它相对于其他负载均衡如DNS域名轮流解析、应用层负载的调度、客户端的调度等,效率是非常高的。
一,Lvs 客户端(ubuntu脚本)
1,[root@huludao-2 ~]# vi /usr/local/bin/lvs_real
#!/bin/bash
#description : start realserver
VIP=192.168.6.134
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
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 "Usage: $0 {start|stop}"
exit 1
esac
配置脚本写好保存,给予脚本执行权限。
脚本启停以/usr/local/bin/lvs_real start | stop 来启动。
通过来ip add检查网络状态。
从输出可以看出, lo:0 确实绑定了我们指定的vip 地址。
那么当我们执行
/usr/local/bin/lvs_real 时,vip 应当从lo:0 接口卸载。
2,打开
二,Lvs LD(centos 5.3)
1,Ipvsadmin 默认已安装(安装系统时候,勾上cluster)
2,keepalived 的安装
#tar -zxvf keepalived-1.1.19.tar.gz
#cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-128.el5PAE-i686/( 注意编译时一定要支持IPVS )
#make;make install
#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/
#service keepalived start|stop|status
#chkconfig --add keepalived
#chkconfig --level 345 keepalived on
3,在/etc/sysconfig/network-scripts 下新建一个vi lo:0
DEVICE=lo:0
IPADDR=192.168.6.134
NETMASK=255.255.255.255
NETWORK=192.168.6.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=192.168.6.134
ONBOOT=yes
NAME=loopback
启动lo:0 ifup lo:0(重启机器后一定要记得执行)
4,keepalived.conf的编辑vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.6.134
}
}
virtual_server 192.168.6.134 5222 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.6.142 5222 {
weight 1
TCP_CHECK {
connect_timeout 10
connect_port 5222
}
}
real_server 192.168.6.143 5222 {
weight 1
TCP_CHECK {
connect_timeout 10
connect_port 5222
}
}
}
Service keepalived stop
Service keepalived start(重启机器后,记得查看keepalived服务状态)Ipvsadm –Ln
体会:服务器和客户端上配置lo:0中VIP的IP地址很重要。