Keepalived 双 机 热 备 基 础 知 识
Keepalived 起初是专门针对LVS 设计的一款强大的辅助工具,主要用来提供故障切换(Failover) 和健康检查(Health Checking) 功能——判断 LVS负载调度器、节点服务器的可用性,当master 主机出现故障及时切换到backup节点保证业务正常,当master 故障主机恢复后将其重新加入群集并且业务重新切换回master 节点。
Keepalived概述
1.Keepalived 的热备方式
Keepalived 采用VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux 服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟IP 地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP 地址,以继续提供服务。
热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP 地址(VIP) 可以在热备组内的路由器之间进行转移,所以也称为漂移IP 地址。使用Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如ens33:0), 而是由Keepalived 根据配置文件自动管理。
2.Keepalived 的安装与服务控制
(1)安装Keepalived
在CentOS 7系统中,使用YUM方式安装keepalived.x86_640:1.2.13-8.el7, 会自动安装Keepalived 所需的软件包。除此之外,在LVS 群集环境中应用时,也需要用到ipvsadm 管理工具。
[root@localhost ~]# yum install -y keepalived ipvsadm
(2)控制Keepalived 服务
YUM安装keepalived 后,执行以下命令将 keepalived 服务设置为开机启动。
[root@localhost ~]# systemctl enable keepalived
使用Keepalived 实现双机热备
基于VRRP的热备方式,Keepalived 可以用作服务器的故障切换,每个热备组可以有多台服务器——当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP 地址的漂移来实现,因此能够适用于各种应用服务器(不管是Web、FTP、Mail, 还是SSH 、DNS……)。
主、备服务器中都需要安装Keepalived, 使用YUM方式安装httpd 提供Web服务。
1.主服务器的配置
Keepalived 服务的配置目录位于/etc/keepalived/ 。其中,keepalived.conf 是主配置文件。另外包括一个子目录samples/,提供了许多配置样例作为参考。
在Keepalived 的配置文件中,使用“global_defs {…}”区段指定全局参数,使用 “vrrp_instance 实例名称{ … }”区段指定VRRP热备参数,注释文字以“!”符号开头。
确认上述配置无误,然后启动Keepalived 服务。实际状态为MASTER的主服务器将为 ens33 接口自动添加VIP 地址,通过ip 命令可以查看。注意:ifconfig 命令看不到。
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
2. 备用服务器的配置
在同一个Keepalived 热备组内,所有服务器的Keepalived 配置文件基本相同,包括虚 拟路由器的ID 号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热 备状态、优先级。
路由器名称 (router_id):建议为每个参与热备的服务器指定不同的名称。
热备状态 (state): 至少应有一台主服务器,将状态设为MASTER; 可以有多台备 用的服务器,将状态设为BACKUP。
优先级 (priority): 数值越大则取得VIP 控制权的优先级越高,因此主服务器的 优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争 夺VIP 控制权时发生冲突。
配置备用服务器(可以有多台)时,可以参考主服务器的keepalived.conf 配置文件内容,只需修改路由器名称、热备状态、优先级。
确认配置无误,一样需要启动Keepalived 服务。此时主服务器仍然在线,VIP 地址实 际上仍然由主服务器控制,其他服务器处于备用状态。因此,在备用服务器中将不会为ens33 接口添加VIP地址。
3. 测试双机热备功能
Keepalived 的日志消息保存在/var/log/messages 文件中,在测试主、备故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。以针对连通性和Web服务的测试为例,主要操作如下。
(1)连通性测试
在客户机中执行“ping -t172.16.16.172” 命令,能够正常、持续ping 通,根据以下操作继续观察测试结果。
① 停止启用主服务器的Keepalived服务,发现ping测试只中断了1或2个包即恢复正常,说明已有其他服务器接替VIP地址,并及时响应客户机请求。
② 重新启用主服务器的Keepalived服务,发现ping测试再次中断1或2个包即恢复正常,说明主服务器已恢复正常,并夺回VIP 地址的控制权。
(2)Web 访问测试
在客户机中访问http://172.16.16.172/, 将看到由主服务器172.16.16.173提供的网页文档。
① 停止启用主服务器的Keepalived服务,再次访问上述Web服务,将看到由备用服务 器172.16.16.174提供的网页文档,说明VIP地址已切换至备用服务器。
② 重新启用主服务器的Keepalived服务,再次访问上述 Web服务,将看到重新由主服 务器172.16.16.173提供的网页文档,说明主服务器已重新夺取VIP地址。
(3)查看日志记录
在执行主、备服务器故障切换的过程中,分别观察各自的/var/log/messages 日志文件, 可以看到MASTER、SLAVE 状态的迁移记录。
① 主服务器中,Keepalived 服务状态先变为“stop”,移除VIP 地址,恢复后重新变为 MASTER。
② 备用服务器中,状态先切换为MASTER,待主服务器恢复后再交回控制权。
通过上述测试过程,可以发现双机热备已经正常。客户机只要通过VIP地址就可以访问服务器所提供的Web等应用。其中,任何一台服务器失效,另一台服务器将会立即接替服务,从而实现高可用性。实际应用时,注意主、备服务器所提供的Web服务内容要保持一致。