10.102.12.38 rhe3.ling.com 后端真实服务器1
10.102.12.49 rhe4.ling.com 后端真实服务器1
10.102.12.43 rhel.ling.com master
10.102.12.44 rhe2.ling.com slave
Selinux、防火墙关闭,个主机间进行解析
实验中用的是keepalived.x86_64的1.2.7-3.el6版本,是rhel6.5中自带的rpm安装包。
(1)master,slave两个主机同时安装keepalived
# yum install -y keepalived
# cd /etc/keepalived/
# vim keepalived.conf
如上面两个图所示,keepalived的所有配置均在/etc/keepalived/keepalived.conf文件中完成。由于此文件可配置的选项比较多,根据配置文件所实现的功能,一般将keepalived配置分为三类:全局配置、VRPPD配置和LVS配置。
全局配置
以global_defs作为标识,在global_defs区域内的都是全局配置选项。
notification_email,用于设置报警邮件地址,开启此功能,需要开启本机的sendmail服务;
notification_email_from,设置邮件的发送地址;
router_id,表示运行keepalived服务器的一个标识,是发邮件时显示在邮件主题中的信息。
VRRPD配置
keepalived所有配置的核心,主要用来实现keepalived的高可用功能。从结构上来说,VRRPD配置又可分为VRRP同步组配置和VRRP实例配置。本次实验中没有涉及到同步组的配置,在此,就不做讲述。
vrrp_instance,是VRRP实例开始的标识,后跟VRRP实例名;
state,用于指定keepalived的角色,MASTER表示是主服务器,BACKUP是备用服务器;
interface,用于指定HA监测网络的接口;
virtual_router_id,虚拟路由标识,同一个VRRP实例使用唯一的标识;
priority,用于定义节点优先级,数字越大表示节点的优先级越高;
advert_int,定义主备节点间同步检查的时间间隔,单位为秒;
authentication,定义节点间通信验证类型和密码;
virtual_ipaddress,用于设置虚拟IP地址,即浮动IP。当keepalived由主节点切换到备份节点时,IP也跟着切换到备份节点。
LVS配置
keepalived是LVS的扩展项目,因而,两者很容易进行整合。LVS配置专门为Keepalived+LVS集成准备的。LVS配置并不是指安装LVS然后用ipvsadm来配置,而是用Keepalived的配置文件来替代ipvsadm配置LVS,这样会方便很多。
LVS的配置以virtual_server作为开始标识,此段由real_server和健康检测两部分组成。
virtual_server,设置虚拟服务器开始的标识,后跟IP和端口,之间用空格隔开;
delay_loop,设置健康检查的时间间隔,单位为秒;
lb_algo,设置负载调度算法,可用的有rr,wrr,lc,wlc,lblc,sh,dh等
Lb_kind,设置LVS实现负载均衡的机制,有DR、NAT、TUL、FULLNAT;
protocol,转发协议类型,有TCP、UDP两种;
real_server,用来指定real_server节点,后跟真是的IP和端口;
weight,设置节点的权重,数字越大,权值越高,可为性能较高的服务器设置较高的权值;
TCP_CHECK,定义健康检查的类型。常见的有TCP_CHECK,HTTP_GET,SSL_GET,SMTP_CHECK。
(3)修改slave配置文件
将master的配置文件复制到slave,然后修改。
scp keepalived.conf 10.102.12.44:/etc/keepalived/
由于keepalived主备节点的配置文件差别不大,可直接拷贝主节点文件到备份节点,再稍作修改。主要做两处修改,如下图所示,将备份节点的状态改为BACKUP,并将priority的值调小。在一个一主多备的keepalived集群中,priority值最大的将称为集群中的MASTER节点,而其他节点都是备份节点。当MASTER发生故障时,BACKUP节点之间将进行“民主选举”,通过priority和weight的计算,选出新的MASTER节点接管集群服务。
(1)启动httpd服务
开启两个后端真实服务器的http服务。即主机10.102.12.38,10.102.12.49.
(2)启动过程分析
开启两个节点上的keepalived服务
/etc/init.d/keepalived start
在主节点上查看
cat /var/log/messages
分析上面的日志可看出,keepalived正常启动后共启动了三个进程,其中一个父进程,负责监控两个子进程(vrrp子进程和heartcheckers子进程)。并且进入MASTER角色,将虚拟IP也添加到了主节点上。
ipvsadm是lvs的管理工具,lvs 已经被集成进了当前流行的Linux kernel , ipvsadm命令若不存在,执行yum install ipvsadm
进行安装即可。
(3)故障切换
关闭主节点的keepalived服务,在备份节点上进行查看。
从日志信息可以看出,在MASTER节点出现故障后,备用节点将立刻检测到,然后由BACKUP状态变为MASTER,并且接管了之前MASTER主机的虚拟IP资源。
keepalived在故障发生时进行切换的速度是非常快的,只有几秒时间,几乎没有延时等待时间。
(4)故障切换恢复
当出现故障的主节点恢复正常后,会自动从备份节点夺取资源。
从日志可知,主节点恢复正常后,会自动切换到MASTER状态,并夺回集群资源与虚拟IP。
lvs , 在功能层面,已经被集成进了当前流行的Linux kernel , 随时可用。
keepalived和ipvsadm都是lvs的管理工具,功能层面作用相同,二选一即可。keepalived是第三方的,支持lvs node本身的HA以及real server故障检测等功能,而ipvsadm是lvs作者原创的, 只支持lvs自身的功能管理。
通常情况下,我们安装了lvs的内核模块后,需要再安装ipvsadm工具来配置LVS。而使用keepalived时,可以将lvs的配置写入keepalived的配置文件keepalived.conf中,然后由keepalived加载即可,不需要再使用ipvsadm来配置了。
keepalived和lvs结合使用,keepalived可以完成两项工作,一是对Real Server中的机器进行健康检查,如果有问题,从服务器池中剔除;二是在LoadBalance间进行容灾切换。
keepalived编译的时候,可以将lvs的管理接口编译到keepalived中,这样keepalived就可以和LVS模块交互,就不只有IP漂移功能了。