首页 运维 网络学院 查看内容

LVS+keepalived负载均衡CentOS5.6环境下布署(32位)V2版

2011-12-1 15:18 679 0

摘要: [配置应用]LVS+keepalived负载均衡CentOS5.6环境下布署(32位)V2版 系统环境:CentOS 5.6 32位(最小安装) 架构图如上图试过在64位时编译会出错,提示找不到...
关键词: nbsp keepalived master root LVS realserver echo 编译 ipvsadm 均衡器

[配置应用]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 -vipvsadm 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-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 ntpntpdate time.nist.govecho "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 ~]# ./configureconfigure: 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/pathKeepalived configuration------------------------Keepalived version       : 1.1.17Compiler                 : gccCompiler flags           : -g -O2Extra Lib                : -lpopt -lssl -lcrypto Use IPVS Framework       : YesIPVS sync daemon support : YesUse VRRP Framework       : YesUse LinkWatch            : NoUse 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 {      [email protected]   }   notification_email_from [email protected]  #http://www.zuihuasuan8.net/   smtp_server smtp.zuihuasuan8.net  # smtp_connect_timeout 30   router_id LVS_DEVEL} # VIP1vrrp_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.zuihuasuan8.net/#Config realserver SNS_VIP=192.168.9.200 /etc/rc.d/init.d/functions case "$1" instart)       /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 1esac 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.zuihuasuan8.net/LVS_master:  LVS_backup:  #解析域名,测试访问  #测试关闭LVS_master,短暂的掉包后,LVS_backup马上接替工作  LVS_backup接替LVS_master绑定VIP  LVS_backup负责转发  LVS_master重启完成后,就会自动接回控制权,继续负责转发  #测试关闭其中一台realserver  通过上面测试可以知道,当realserver故障或者无法提供服务时,负载均衡器通过健康检查自动把失效的机器从转发队列删除掉,实现故障隔离,保证用户的访问不受影响 #重启被关闭的realserver 当realserver故障恢复后,负载均衡器通过健康检查自动把恢复后的机器添加到转发队列中         实际生产环境中,keepalived是非常稳定的,并且能够承受巨量并发数。文章中没有涉及到后端真实服务器的架构配置,我认为一个完整的高性能WEB架构应该,后端也是重中之重的,完整的一部分,必备可少。欢迎朋友一起交流,讨论。扣扣:柒⑥柒陆叁⑤叁伍 本文出自 “我站在巨人肩膀上Jimmy Li” 博客,请务必保留此出处http://jimmyli.blog.51cto.com/3190309/601701
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部