首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

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

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

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

echo “======================= 配置keepalived ===========================”
[root@master ~]#? cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
[root@master ~]#? cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@master ~]#? mkdir /etc/keepalived
[root@master ~]#? cp /usr/local/sbin/keepalived /usr/sbin/
[root@master ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
?
global_defs {
?? notification_email {
??????jimmy.li@linuxidc.com
?? }
?? notification_email_from?jimmy.li@linuxidc.com? #http://www.linuxidc.com/
?? smtp_server smtp.linuxidc.com
? # smtp_connect_timeout 30
?? router_id LVS_DEVEL
}
?
# VIP1
vrrp_instance VI_1 {
??? state MASTER???????????? #备份服务器上将MASTER改为BACKUP??
??? interface eth0
??? lvs_sync_daemon_inteface eth0
??? virtual_router_id 51
??? priority 100??? # 备份服务上将100改为90
??? advert_int 5
??? authentication {
??????? auth_type PASS
??????? auth_pass 1111
??? }
??? virtual_ipaddress {
??????? 192.168.9.200??
??????? #(如果有多个VIP,继续换行填写.)
??? }
}
?
virtual_server 192.168.9.200 80 {
??? delay_loop 6????????????????? #(每隔6秒查询realserver状态)
??? lb_algo wlc????????????????? #(lvs 算法)
??? lb_kind DR????????????????? #(Direct Route)
??? persistence_timeout 60??????? #(同一IP的连接60秒内被分配到同一台realserver)
??? protocol TCP??????????????? #(用TCP协议检查realserver状态)
?
??? real_server 192.168.9.203 80 {
??????? weight 100?????????????? #(权重)
??????? TCP_CHECK {
??????? connect_timeout 10?????? #(10秒无响应超时)
??????? nb_get_retry 3
??????? delay_before_retry 3
??????? connect_port 80
??????? }
??? }
??? real_server 192.168.9.204 80 {
??????? weight 100
??????? TCP_CHECK {
??????? connect_timeout 10
??????? nb_get_retry 3
??????? delay_before_retry 3
??????? connect_port 80
??????? }
???? }
}
[root@master ~]#? service keepalived start|stop
[root@master ~]# chkconfig –level 2345 keepalived on

echo “====================== 配置realserver =========================”
[root@web_1 ~]# vi /root/lvs_real.sh
#!/bin/bash
#http://www.linuxidc.com/
#Config realserver

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


echo “===================== 测试LVS+keepalived ========================”
#LVS_master、LVS_backup上开启keepalived,LVS_master先绑定VIP
#http://www.linuxidc.com/
LVS_master:

LVS_backup:

#解析域名,测试访问

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

LVS_backup接替LVS_master绑定VIP

LVS_backup负责转发

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

#测试关闭其中一台realserver

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

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

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

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

热点排行