环境介绍
操作系统:CentOS6.5_x64 mini
负载均衡模式:DR(直接路由)
LVS与Keepalived简述:
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,很好的可伸缩性、可靠性和管理性。
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。
Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案-----由多台路由器组成一个热备组。通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失败,其他服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。
一、配置主从LVS服务器
安装依赖包:
1.
[root@localhost ~]
# yum install-y gcc gcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt-devel
1、检查linux内核是否集成lvs模块:modprobe -l | grep ipvs
2、开启路由转发功能:echo "1">/proc/sys/net/ipv4/ip_forward
3、安装ipvsadm
2.
tar
zxvf ipvsadm-1.26.
tar
.gz
3.
cd
ipvsadm-1.26
4.
make
&&
make
install
4、安装keepalived
1.
wget http://www.keepalived.org/software/keepalived-1.2.7.
tar
.gz
2.
tar
zxvf keepalived-1.2.7.
tar
.gz
3.
cd
keepalived-1.2.7
4.
./configure--prefix=/usr/
local
/keepalived
5.
make
&&
make
install
将keepalived配置成系统服务
1.
cp
/usr/
local
/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/
2.
cp
/usr/
local
/keepalived/etc/sysconfig/keepalived/etc/sysconfig/
3.
mkdir
/etc/keepalived/
4.
cp
/usr/
local
/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
5.
cp
/usr/
local
/keepalived/sbin/keepalived/usr/sbin/
5、修改主keepalived配置文件(备只修改router_id、state和priority)
01.
[root@localhost ~]
# vi /etc/keepalived/keepalived.conf
02.
! Configuration File forkeepalived
03.
global_defs {
04.
notification_email {
05.
test
@sina.com
#故障接受联系人
06.
}
07.
notification_email_from admin@
test
.com
#故障发送人
08.
smtp_server 127.0.0.1
#本机发送邮件
09.
smtp_connect_timeout 30
10.
router_id LVS_MASTER
#BACKUP上修改为LVS_BACKUP
11.
}
12.
vrrp_instance VI_1 {
13.
state MASTER
#BACKUP上修改为BACKUP
14.
interface eth0
15.
virtual_router_id 51
#虚拟路由标识,主从相同
16.
priority 100
#BACKUP上修改为90
17.
advert_int 1
18.
authentication {
19.
auth_type PASS
20.
auth_pass 1111
#主从认证密码必须一致
21.
}
22.
virtual_ipaddress {
#Web虚拟IP(VTP)
23.
172.0.0.10
24.
}
25.
}
26.
virtual_server 172.0.0.10 80 {
#定义虚拟IP和端口
27.
delay_loop 6
#检查真实服务器时间,单位秒
28.
lb_algo rr
#设置负载调度算法,rr为轮训
29.
lb_kind DR
#设置LVS负载均衡DR模式
30.
persistence_timeout 50
#同一IP的连接60秒内被分配到同一台真实服务器
31.
protocol TCP
#使用TCP协议检查realserver状态
32.
real_server 172.0.0.13 80 {
#第一个web服务器
33.
weight 3
#节点权重值
34.
TCP_CHECK {
#健康检查方式
35.
connect_timeout 3
#连接超时
36.
nb_get_retry 3
#重试次数
37.
delay_before_retry 3
#重试间隔/S
38.
}
39.
}
40.
real_server 172.0.0.14 80 {
#第二个web服务器
41.
weight 3
42.
TCP_CHECK {
43.
connect_timeout 3
44.
nb_get_retry 3
45.
delay_before_retry 3
46.
}
47.
}
48.
}
49.
[root@localhost ~]
# service keepalived restart #启动keepalived
二、分别在两台Web服务器编写脚本并启动
01.
[root@localhost ~]
# vi /etc/init.d/real.sh
02.
#description : start realserver
03.
VIP=172.0.0.10
04.
. /etc/init.d/functions
05.
case
"$1"
in
06.
start)
07.
/sbin/
ifconfig
lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
08.
echo
"1"
&
gt
;/proc/sys/net/ipv4/conf/lo/arp_ignore
09.
echo
"2"
&
gt
;/proc/sys/net/ipv4/conf/lo/arp_announce
10.
echo
"1"
&
gt
;/proc/sys/net/ipv4/conf/all/arp_ignore
11.
echo
"2"
&
gt
;/proc/sys/net/ipv4/conf/all/arp_announce
12.
echo
"LVS RealServer Start OK"
13.
;;
14.
stop)
15.
/sbin/
ifconfig
lo:0 down
16.
echo
"0"
&
gt
;/proc/sys/net/ipv4/conf/lo/arp_ignore
17.
echo
"0"
&
gt
;/proc/sys/net/ipv4/conf/lo/arp_announce
18.
echo
"0"
&
gt
;/proc/sys/net/ipv4/conf/all/arp_ignore
19.
echo
"0"
&
gt
;/proc/sys/net/ipv4/conf/all/arp_announce
20.
echo
"LVS RealServer Stoped OK"
21.
;;
22.
*)
23.
echo
"Usage: $0 {start|stop}"
24.
exit
1
25.
esac
1.
[root@localhost ~]
# chmod +x /etc/init.d/real.sh
2.
[root@localhost ~]
# /etc/init.d/real.sh start
3.
LVS RealServer Start OK
4.
[root@localhost ~]
# echo "/etc/init.d/real.sh start" >> /etc/rc.local
1.
[root@localhost ~]
# service httpd start
2.
[root@localhost ~]
# echo “192.168.0.30″ > /var/www/html/index.html
3.
[root@localhost ~]
# echo “192.168.0.40″ > /var/www/html/index.html
4.
[root@localhost ~]
# service iptables stop #关闭防火墙
5.
[root@localhost ~]
# setenforce 0 #临时关闭selinux
三、测试及常用命令
http://172.0.0.10 #访问一直刷新会轮训显示172.0.0.11/12
模拟宕掉主LVS,服务器照常工作,再宕掉Web1,这时只会显示Web2,这样就实现ip负载均衡,高可用集群。当主LVS恢复后,会切换成主动服务器,如果Keepalived监控模块检测web故障恢复后,恢复的主机又将此节点加入集群系统中。
常用命令:
[root@localhost ~]# ipvsadm -ln #显示集群中服务器ip信息
[root@localhost ~]# ip addr #显示VTP绑定在哪个服务器上
[root@localhost ~]# tail -f /var/log/messger
(从日志中可知,主机出现故障后,备机立刻检测到,此时备机变为MASTER角色,并且接管了主机的虚拟IP资源,最后将虚拟IP绑定在etho设备上)