标签:服务器 lvs+keepalived 均衡器 集群
LVS+Keepalived 介绍
LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(LVS/NAT、LVS/TUN和LVS/DR);
十种调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。注:加权最少链接(Weighted Least Connections)(wlc) 目前最优秀的调度算法
LVS集群系统的优缺点:
(1) 抗负载能力强
工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器I/O的性能不会受到大流量的影响;
(2) 工作稳定
自身有完整的双机热备方案,如LVS+Keepalived(黄金组合)和LVS+Heartbeat;
(3) 应用范围比较广
可以对所有应用做负载均衡;
(4) 配置性比较低
既是优点,也是缺点,因为没有太多配置,所以并不需要太多接触,大大减少了人为出错的几率;
LVS集群系统的缺点:
(1) 软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
(2) 如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,
实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了
Keepalvied
Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现
系统环境:Centos6.3_x64
IP配置信息列表:
lvs-master:192.168.1.250
lvs-backup:192.168.1.252
lvs-vip:192.168.1.249
readserver1:192.168.1.251
readserver2:192.168.1.253
配置要求:关闭selinux,关闭iptables或放通相应规则
同步各个服务器的时间
注:关于LVS+keepalvied的HA方案,完全由keepalived.conf一个文件搞定,LVS不用配置,keepalived会调用LVS,特此声明!
一、安装LVS和keepalived
LVS软件包括二部分:
① IPVS模块,LVS已经是Linux标准内核的一部分,直接被编译在内核中!
② IPVS管理工具IPVSadm ,如:IPVSadm-1.26
查看IPVS模块是否真的编译到内核中去了,如下图所示:
由上可知,有3个项,说明这个功能已经编译到内核中了
这里我就直接使用yum安装,源码安装就不再演示
分别在lvs-master和lvs-backup上安装lvs和keepalived
[root@localhost ~]# yum install -y ipvsadm keepalived
添加keepalived为系统服务
[root@localhost ~]# chkconfig --add keepalived
[root@localhost ~]# chkconfig --list keepalived
keepalived 0:off 1:off 2:on 3:on 4:on 5:on 6:off
二、利用Keepalvied实现负载均衡和和高可用性
1、配置在主负载均衡服务器上配置keepalived.conf
#vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { #全局配置
notification_email {
cnseek@gmail.com
}
notification_email_from sns-lvs@gmail.com
smtp_server 127.0.0.1
# smtp_connect_timeout 30
router_id LVS_DEVEL
}
# 20081013 written by :netseek
# VIP1
vrrp_instance VI_1 { #vrrp配置
state MASTER #备份服务器上将MASTER改为BACKUP
interface eth0
virtual_router_id 51
priority 100 # 备份服务上将100改为90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.249
#(如果有多个VIP,继续换行填写.)
}
}
virtual_server 192.168.1.249 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 192.168.1.251 80 {
weight 3 #(权重)
TCP_CHECK {
connect_timeout 10 #(10秒无响应超时)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.1.253 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
2、BACKUP服务器同上配置,只需将红色标示的部分改一下即可.
3、启动keepalived
[root@localhost ~]# service keepalived start
三、配置readserver
为两台realserver安装http,这里不再演示
配置readserver脚本
[root@localhost ~]# vi realserver.sh
#!/bin/bash
# Written by NetSeek
# description: Config realserver lo and apply noarp
WEB_VIP=192.168.1.249
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
/sbin/route add -host $WEB_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 $WEB_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"
;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`
isrothere=`netstat -rn | grep "lo:0" | grep $web_VIP`
if [ ! "$islothere" -o ! "isrothere" ];then
# Either the route or the lo:0 device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit 1
;;
esac
exit 0
赋予执行权限,执行该脚本即可
四、验证
查看lvs-master是否绑定vip
而此时lvs-backup是没有绑定vip的
查看lvs服务是否正常
到此配置就全部完成,接下来就到测试了。
五、测试
负载均衡测试:
为了便于测试,我们在realserver1和realserver2分别配置www服务的index.html网页且内容也好识别,浏览器访问vip能否按照设定算法分别访问realserver1和realserver2
高可用测试:
为了模拟故障,先将lvs-master上的Keepalived服务停止或者干脆关掉节点lvs-master,然后观察备用lvs-backup上Keepalived是否获得VIP地址,即VIP 192.168.1.249
查看命令如上,或查看日志tail -f /var/log/messages
故障切换测试:
故障切换是测试在某个节点出现故障后,keepalived监控模块能否及时发现,然后屏蔽故障节点,同时将服务转移到正常节点上执行之。
停掉节点realserver2服务,模拟该节点出现故障,然后查查看主、备机器日志信息。
标签:服务器 lvs+keepalived 均衡器 集群
原文地址:http://8400659.blog.51cto.com/8390659/1689221