一、keepalived软件简介
keepalived是基于vrrp协议实现高可用功能的一种软件,它可以解决单点故障的问题,通过keepalived搭建一个高可用的LVS负载均衡集群时,keepalived还能检测后台服务器的运行状态。
二、vrrp协议原理简介
vrrp(虚拟路由器冗余协议),是为了解决网络上静态路由出现的单点故障的问题,举个例子,如下图
主机A和B均在同一个局域网内,C和D均是该局域网的网关,即A和B想与外网通信,需指网关到C或D,那究竟指向C好还是指向D好呢?都不好!当指向C时,如果C出故障时,局域网内的主机就没法与外界通信了,指向D问题也是一样,vrrp这时候就有用了,在C和D之间运行vrrp协议,vrrp将C和D虚拟成一个设备E,对外提供一个虚拟ip地址,A和B将网关指向虚拟ip地址即可,在vrrp组内,将各成员分为MASTER和BACKUP(一个组内只能有1个MASTER,可以有多个BACKUP),MASTER就是实际上提供服务的节点,MASTER和BACKUP的选举通过优先级选举,优先级高的即为MASTER,VRRP运行时MASTER定时发送VRRP通告信息,表示MASTER工作正常,BACKUP只接收VRRP数据,不发送数据,如果一定时间内没有接收到MASTER的通告信息,各BACKUP将宣告自己成为MASTER,发送通告信息,重新进行MASTER选举状态。
三、实验部分
ip地址分配:
VIP:192.168.56.110
Director Server1 IP:192.168.56.101
Director Server2 IP:192.168.56.102
Realserver1 IP:192.168.56.103
Realserver2 IP:192.168.56.104
LVS相关配置方案:
模型:DR
调度算法:rr(轮循)
安装配置过程:
通过keepalived搭建LVS高可用集群配置非常简单,lvs的配置和节点的监控均在keepalived配置文件中配置完成
1、安装前先检查/usr/src/kernels目录下有没有内核的源码,后面keepalived编译时要用到,如果没有,则先安装
1
| yum install kernel-devel
|
2、编译安装keepalived
1
2
3
4
5
| tar zxvf keepalived-1.2.23.tar.gz
cd keepalived-1.2.23
./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-642.4.2.el6.x86_64/
make && make install
ln -sv /usr/local/sbin/keepalived /sbin/keepalived #创建链接(不创建的话启动/etc/init.d/keepalived脚本时会报错)
|
3、修改配置文件/etc/keepalived/keepalived.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| #全局定义部分
global_defs {
notification_email {
root@lzs.com
zsgg@lzs.com
} #设置发生异常时向哪个邮箱发通知,可以设>置多个邮箱,每个一行,服务器上的sendmail服务必须开启
notification_email_from keepalived@lzs.com #设置邮件的发送方
smtp_server 192.168.56.1 #设置smtp服务器的ip地址
smtp_connect_timeout 30 #设置连接smtp服务器的超时时间
router_id LVS_LZS #keepalived服务器的标识,将显示在报警邮件的主题>中
}
#定义vrrp实例
vrrp_instance VI_1 {
state MASTER #指定此主机的角色是MASTER,注意要大写
interface eth0 #指定绑定的接口,即配置虚拟ip地址的接口
virtual_router_id 51 #指定VRID,该标识为一个数字,同一个vrrp实例中的MASTER和BACKUP的VRID必须一致
priority 100 #指定优先级,MASTER的优先级必须高于BACKUP
advert_int 1 #指定MASTER发送通告信息的时间间隔
authentication { #设置同一个vrrp组中各节点的验证类型和验证密码,>即同一vrrp组下,各节点的验证类型和验证密码必须一致才能互相通信
auth_type PASS #设置验证类型,有PASS和HA两种
auth_pass 1111 #设置验证密码,
}
virtual_ipaddress { #设置虚拟ip地址,可多个
192.168.56.110
192.168.56.120
}
}
#虚拟服务器定义(在这部分配置LVS)
virtual_server 192.168.56.110 80 { #设置虚拟服务器的ip和端口,用空格隔开
delay_loop 6 #每隔6秒对realserver进行健康状态检查
lb_algo rr #设置调度算法
lb_kind DR #设置LVS的类型,有DR、NAT和TUN
persistence_timeout 50 #设置会话保持时间,用户在请求页面后,若在50s内有操作时,请求会一直分发到同一服务节点上,并重新开始计时
protocol TCP #指定转发协议类型,有UDP和TCP
real_server 192.168.56.103 80 { #配置realserver的ip和端口,用空格隔开
weight 1 #设置权重
TCP_CHECK { #对realserver状态检查的设置
connect_timeout 3 #3秒无响应时超时
nb_get_retry 3 #表示重试的次数
delay_before_retry 3 #表示重试的时间间隔
}
}
real_server 192.168.56.104 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
|
注意要点:keepalived启动时默认查找/etc/keepalived/keepalived.conf配置文件,若想指定配置文件,可”keepalived -f 配置文件 “启动。
4、将MASTER的配置文件复制到BACKUP上,并修改配置文件中的state和priority
1
2
| state BACKUP
priority 70 #改得比MASTER小
|
5、配置realserver服务器
1、编写启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| vim /etc/init.d/lvs_rs
#! /bin/bash
VIP=192.168.56.110
case $1 in
start)
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
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
;;
stop)
/sbin/ifconfig lo:0 down
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 "usage:$0 {start|stop}"
exit 1
;;
esac
|
2、添加执行权限
1
| chmod +x /etc/init.d/lvs_rs
|
3、启动脚本
6、启动MASTER和BACKUP上的keepalived服务
1
| /etc/init.d/keepalived start
|
至此,搭建的LVS集群系统已正常运行了~~~~
|