LVS+keepalived负载均衡CentOS 5.6环境下布署(32位)V2版

[配置应用]LVS+keepalived负载均衡CentOS5.6环境下布署(32位)V2版

系统环境:CentOS 5.6 32位(最小安装)
试过在64位时编译会出错,提示找不到一些内核库文件,文件名称含了64字样的缘故,编译有问题,逐一修改修改原安装包很麻烦。还不知道会有其他未知BUG。
关键点:keepalived 是运行在LVS基础上的,LVS 安装ipvsadmin #yum install ipvsadmin (省去编译版本配对问题)
很多朋友使用编译安装不成功,是由于ipvsadmin的版本跟你使用的linux内核不一致。
首先请查看自己 Linux 操作系统内核的版本   命令: uname -a    命令: cat /proc/version 命令:lsb_release -a

下面看我怎么编译安装的。(linux应用中编译安装是我力荐)

下载软件ipvsadm
安装ipvsadm。Ipvsadm的官方下载地址为 http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz,解压后先做一个链接文件,把目录/usr/src/kernels/2.6.18-8.el5-i686/ 链接为/usr/src/linux,不这样做的话,执行./configure脚本将报错。运行命令 ln –s /usr/src/kernels/2.6.18-8.el5-i686 /usr/src/linux 做好链接,再运行不带参数的脚本 ./configure,然后执行”make;make install”完成安装

下载后,安装ipvsadmin
编译时候报 make[1]: *** [libipvs.o] Error 1 错误

但是下了ipvsadm后编译出了问题:
解决办法可能不只一种;我是用的下面的办法搞定的:
ln -s /usr/src/kernels/2.6.x-xx.EL-i686/ /usr/src/linux

cd ipvsadm-1.24

make && make install

ipvsadmin -v 应该能看到如下信息:
[root@localhost ipvsadm-1.24]# ipvsadm -v
ipvsadm v1.24 2005/12/10 (compiled with popt and IPVS v1.2.0)

说明编译安装成功!
 

另外注意 keepalived 在Linux下的(VRRP)虚拟路由冗余协议 ,keepalived采用VRRP机制,那么就会涉及负载均衡服务器连接的路由器(交换机)
VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个)。
实际使用中,如果你连接的使用的路由器是傻瓜型的话,可以忽略这个问题。
如果你用是智能路由器,设置了规则的话,那就要注意了,一些规则会将VRRP发出的状态检测包,当做病毒屏蔽掉,最后导致的结果是keepalived    负载均衡器之间的失败切换failover,是通过VRRPv2(Virtual Router Redundancy Protocol) stack实现的。
还可能导致不能检测后端真实服务器的存活状态(检测web服务器的状态)。

简单知道
1.keepalived 通过对服务器池对象的健康检查,实现对失效机器/服务的故障隔离 (官方专用名词“Checkers”负责真实服务器的健康检查healthchecking)
2.负载均衡器之间的失败切换failover,是通过VRRPv2(Virtual Router Redundancy Protocol) stack实现的。
不就是(LVS-DR,LVS-NAT,LVS-TUN)3种模式!

(想起一个装牛逼的人,某家广州caixun公司的搞网络方面的吧,考问我LVS运行几种模式,修改TCP报文格式哪里?好像最后他说DR模式要改MAC!LVS+keepalived负载均衡CentOS 5.6环境下布署(32位)V2版理论是刻在书上的,实际能应用才是牛逼!)

测试环境 :
lvs-master:192.168.9.201 (主)
lvs-backup:192.168.9.202 (备)
vip:192.168.9.200        (虚拟ip)
web1:192.168.9.203       (后端真实WEB服务器1)
web2:192.168.9.204       (后端真实WEB服务器2)
netmask:255.255.255.0    (掩码)
gateway:192.168.9.1      (网关)

网络拓扑:详细见“LVS集群的体系结构,构建强壮的体系结构里负载均衡层、真实服务器层、后端共享存储层都是相辅相成”文章 如图
 

echo "============================ 更新系统时间 ======================"
yum install -y ntp
ntpdate time.nist.gov
echo "00 01 * * * /usr/sbin/ntpdate time.nist.gov" /etc/crontab

echo “========================= 安装ipvsadm、keepalived ==================”
[root@master ~]# cd /usr/local/src
[root@master ~]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
[root@master ~]# wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
[root@master ~]# ln -sv /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux
[root@master ~]# tar -zxvf ipvsadm-1.24.tar.gz
[root@master ~]# cd ipvsadm-1.24
[root@master ~]# make;make install
[root@master ~]# cd ..
[root@master ~]# tar -zxvf keepalived-1.1.17.tar.gz
[root@master ~]# cd keepalived-1.1.17
[root@master ~]# ./configure
configure: error:
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.
解决办法:
[root@master ~]# yum -y install openssl-devel
[root@master ~]# ./configure
[root@master ~]# make;make install
编译的时候出现这个提示,说明keepalived和内核结合了,如果不是这样的,需要加上这个参数./configure --with-kernel-dir=/kernel/path
Keepalived configuration
------------------------
Keepalived version       : 1.1.17
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
Use VRRP Framework       : Yes
Use LinkWatch            : No
Use Debug flags          : No

SNS_VIP=192.168.9.200
 
/etc/rc.d/init.d/functions
 
case "$1" in
start)
       /sbin/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)
       /sbin/ifconfig lo:0 down
       /sbin/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

[root@web_1 ~]# chmod +x /roo/lvs_real.sh
[root@web_1 ~]# /root/lvs_real.sh start
[root@web_1 ~]# ifconfig
 
[root@web_1 ~]# echo “/root/lvs_real.sh start” >> /etc/rc.local

LVS_backup:
 

#解析域名,测试访问
 

#测试关闭LVS_master,短暂的掉包后,LVS_backup马上接替工作
 

LVS_backup接替LVS_master绑定VIP
 

LVS_backup负责转发
 

LVS_master重启完成后,就会自动接回控制权,继续负责转发
 

#测试关闭其中一台realserver
 

通过上面测试可以知道,当realserver故障或者无法提供服务时,负载均衡器通过健康检查自动把失效的机器从转发队列删除掉,实现故障隔离,保证用户的访问不受影响

#重启被关闭的realserver
 
当realserver故障恢复后,负载均衡器通过健康检查自动把恢复后的机器添加到转发队列中

实际生产环境中,keepalived是非常稳定的,并且能够承受巨量并发数。

文章中没有涉及到后端真实服务器的架构配置,我认为一个完整的高性能WEB架构应该,后端也是重中之重的,完整的一部分,必备可少。

相关推荐