目录
一,Keepalived概述及安装
Keepalived 的官方网站位于http://www.keepalived.org/,本章将以YUM方式讲解Keepalived的安装、配置和使用过程。在非LVS 群集环境中使用时,Keepalived也可以作为热备软件使用。
(1)Keepalived的热备方式
Keepalived采用VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案--由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务:每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务,如图3.1所不。
热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移P地址。使用Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如ens33:0),而是由Keepalived 根据配置文件自动管理。
1,keepalived的安装与服务控制
(1)安装keepalived
在0penEuler24系统中,使用N方式安装keepalived.x86642.2.8-1.oe2403spl,会自动安装Keepalived 所需的软件包。除此之外,在LVS群集环境中应用时,也需要用到ipvsadm 管理工具。
dnf instally keepalived ipvsadm
(2)控制keepalived服务
DNF安装keepalived后,执行以下命令将keepalived 服务设置为开机启动。
systemctl enable keepalived
2,使用keepalived实现双机热备
基于VRRP的热备方式,Keepalived可以用作服务器的故障切换,每个热备组可以有多台服务器--当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(不管是Web、FTP、Mail,还中,主、备服务器的IP地址分别为192.168.10.101和192.168.10.102,基于漂移地址192.168.10.100提供Web服务,是SSH、DNS…)本小节将通过一个简单的案例来说明Keepalived双机热备的配置方法。主、备服务器中都需要安装Keepalived,使用YUM方式安装httpd 提供Web 服务。下面仅讲解与Keepalived 相关的配置及测试过程。
(1)主服务器的配置
Keepalived服务的配置目录位于/etc/keepalived/。其中keepalived.conf 是主配置文件。另外包括一个子目录 samples/,提供了许多配置样例作为参考。
在 Keepalived 的配置文件中,使用“global defs…”区段指定全局参数,使用“vrrp_instance实例名称(…”区段指定VRRP热备参数,注释文字以“!”符号开头。
cd /etc/keepalived
cp keepalived.conf.sample keepalived.conf
vim keepalived.conf
router_id HA _EST_RI | 本路由器(服务器)的名称 |
vrrp_instance VI_1 | 定义VRRP热备实例 |
state MASTER | 热备状态,MASTER表示主服务器 |
interface ens33 | 承载VIP地址的物理接口 |
virtual router id 1 | 虚拟路由器的ID号,每个热备组保持一致 |
priority 100 | 优先级,数值越大优先级越高 |
advert int 1 | 通告间隔秒数(心跳频率) |
authentication | 认证信息,每个热备组保持一致 |
auth_type PASS | 认证类型 |
auth pass 123456 | 密码字串 |
virtual ipaddress192.168.10.100 | 指定漂移地址(VIP),可以有多个 |
确认上述配置无误,然后启动Keepalived服务。实际状态为MASTER的主服务器将为ens33接口自动添加VIP地址,通过ip 命令可以查看。注意:ifconfig 命令看不到。
systemctl start keepalived
ip a
(2)备用服务器的配置
在同一个Keepalived热备组内,所有服务器的Keepalived配置文件基本相同,包括虚拟路由器的ID号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热备状态、优先级。
路由器名称(routerid): | 建议为每个参与热备的服务器指定不同的名称。 |
热备状态(state): | 至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为BACKUP |
优先级(priority): | 数值越大则取得VIP控制权的优先级越高,因此主服务器的优先级应设为最高:其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突。 |
配置备用服务器(可以有多台)时,可以参考主服务器的keepalived.conf配置文件内容,只需修改路由器名称、热备状态、优先级。
systemctl stop firewalld
setenforce 0
cd /etc/keepalived
cp keepalived.conf.sample keepalived.conf
vim keepalived.conf
确认配置无误,一样需要启动Keepalived服务。此时主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备用状态。因此,在备用服务器中将不会为ens33接口添加VP地址。
systemctl start keepalived
ip a
3,测试双机热备功能
Keepalived 的日志消息保存在/var/log/messages 文件中,在测试主、备故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。以针对连通性和Web 服务的测试为例,主要操作如下。
(1)连通性测试
在客户机中执行“ping-t192.168.10.100”命令,能够正常、持续ping 通根据以下操作继续观察测试结果。
①停止启用主服务器的Keepalived服务,发现ping测试只中断了1或2个包即恢复正常,说明已有其他服务器接替VIP地址,并及时响应客户机请求。
②重新启用主服务器的Keepalived服务,发现ping测试再次中断1或2个包即恢复正常,说明主服务器已恢复正常,并夺VIP地址的控制权。
(2)Web访问测试
在 keepalived 运行的主机上启动 nginx 服务并写入不通的测试页面内容
两台
echo "test1">/var/www/html/index.html
systemctl start httpd
systemctl enable httpd
在客户机中访问 http://192.168.10.100/,将看到由主服务器192.168.10.101提供的网页文档。
①停止启用主服务器的Keepalived服务,再次访问上述Web服务,将看到由备用服务
器192.168.10.102提供的网页文档,说明VIP地址已切换至备用服务器。
②重新启用主服务器的Keepalived服务,再次访问上述Web服务,将看到重新由主服
务器192.168.10.101提供的网页文档,说明主服务器已重新夺取VIP地址。
(3)查看日志记录
在执行主、备服务器故障切换的过程中,分别观察各自的/var/log/messages日志文件,可以看到MASTER、SLAVE状态的迁移记录。①主服务器中,Keepalived服务状态先变为“stop”,移除VIP地址,恢复后重新变为MASTER。
less /var/log/messages
二,使用Keepalived实现双机热备(案例)
第一台(调度器)和第二台(调度器)一样
只需要将01改为02即可
systemctl stop firewalld
setenforce 0
dnf -y install keepalived
dnf -y install keepalived ipvsadm
cd /etc/keepalived
cp keepalived.conf.sample keepalived.conf
vim keepalived.conf
第三台(web)和 第四台(web)一样
只需要将test1改为test2即可
systemctl stop firewalld
setenforce 0
dnf -y install httpd
echo "test1">/var/www/html/index.html
systemctl start httpd
systemctl enable httpd
ip addr add 192.168.10.172/32 dev lo label lo:0
nmcli c reload
nmcli c up lo
ip route add local 192.168.10.172/32 dev lo
route add -host 192.168.10.172 dev lo
vim /etc/rc.local
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo
chmod +x /etc/rc.local
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
第五台(客户端)
systemctl stop firewalld
setenforce 0
curl 192.168.10.172
curl 192.168.10.172
随便挂起一台调度器
curl 192.168.10.172
停掉一台HTTPD服务
curl 192.168.10.172