目录
一:keepalived双击热备基础知识
Keepalived 起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换 (Failover)和健康检查(Health Checking)功能--判断LVS负载调度器、节点服务器的可用性,当 master主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新力加入群集并且业务重新
切换回master节点。
1.keepalived概述及安装
Keepalived的官方网站位于http://www.keepalived.org/,本i章将以YUM方式讲解Keepalived的安装、配置和使用过程。在非LVS群集环境中使用时Keepalived也可以作为热备软件使用。
1.1keepalived的热备方式
Keepalived 采用 VRRP (Virtual Router Redundancy Prottocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案一一由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务:每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务,如图3.1所示。
热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived时,漂移地址的实现不需要手动建立虚接口配置立件(如ens33:0),而是由Keepalived根据配置文件自动管理。
1.2keepalived的安装与服务控制
(1)安装keepalived
在 OpenEuler24系统中,使用DNF方式安装 keepalived. x86_642.2.8-1.oe2403spl,会自动安装Keepalived所需的软件卡包。除此之外,在LVS群集环境中应用时,也需要用到ipvsadm管理工具。
root@localhost \^\]# yum install -y keepalived ipvsadmnginx
(2)控制keepalived服务
DNF安装keepalived后,执行以下命令将 keepalived服务设置置为开机启动
root@localhost\^\]# systemctl enable keepalived
2.使用keepalived实现双击热备.
基于VRRP的热备方式,Keepalived可以用作服务器的故障切换,每个热备组可以有多台服务器一一当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(不管是Web、FTP、Mail,还是SSH、DNS......
2.1主服务器的配置
Keepalived 服务的配置目录位于/etc/keepalived/。其中,keepalived.conf是主配置文件。另外包括一个子目录samples/,提供了许多配置样例作为参考。
在Keepalived的配置文件中,使用"global_defs{···}"区段指定全局参数,使用"vrrp_instance实例名称{...}"区段指定VRRP热备参数,注释文字以"!"符号开头。
root@localhost\~\]# systemctl stop firewalld//关闭防火墙 \[root@localhost \^\]# setenforce 0 \[root@localhost \^\]# cd /etc/keepalived/ \[root@localhost keepalived\]# cp keepalived. conf. samplekeepalived. conf \[root@localhost keepalived\]# vi keepalived.conf global_defs { router_id HA_TEST_R1 vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id l priority 100 advert_int 1 authentication auth_type PASS auth_pass 123456 virtual ipaddress 192.168.10.100 } }
确认上述配置无误,然后启动Keepalived服务。实际状态为IASTER的主服务器将为ens33接口自动添加VIP地址,通过 ip 命令可以查看。注意:ifconfig命令看不到。
root@localhost keepalived\]# systemctl start keepalived \[root@localhost keepalived\]# ip addr show dev ens333
2.2备用服务器的设置
在同一个Keepalived热备组内,所有服务器的Keepalived配置文件基本相同,包括虚拟路由器的ID号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热备状态、优先级。
路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称。
热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为BACKUP。
优先级(priority):数值越大则取得VIP控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突。
配置备用服务器(可以有多台)时,可以参考主服务器的keepalived. conf配置文件内容,只需修改路由器名称、热备状态、优先级。
root@localhost\~\]# systemctl stop firewalld \[root@localhost\~\]# setenforce 0 \[root@localhost \^\]# cd /etc/keepalived/ \[root@localhost keepalived\]# cp keepalived. conf. sample \|keepalived.conf \[root@localhost keepalived\]# vi keepalived.conf
确认配置无误,一样需要启动Keepalived服务。此时主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备用状态。因此,在备用服务器中将不会为ens33接口添加VIP地址。
root@localhost keepalived\]# systemctl start keepalived \[root@localhost keepalived\]# ip addr show dev ens333
2.3测试双击热备功能
(1)连通性测试
在客户机中执行"ping-t192.168.10.100"命令,能够正常常、持续ping通根据以下操作继续观察测试结果。停止启用主服务器的Keepalived服务,发现ping测试只中断了1或2个包即恢复正常,说明已有其他服务器接替VIP地址,并及时响应客户机请求。
重新启用主服务器的Keepalived服务,发现ping测试再次中断1或2个包即恢复正常,说明主服务器已恢复正常,并夺回VIIp地址的控制权。
(2)web访问测试
在keepalived运行的主机上启动nginx服务并写入不通的测试页面内容
Keepalived01
root@localhost\`\]# systemctl start nginx \[root@localhost\~\]# echo "web01" \>/usr/share/nginx/html/index.html Keepalived02 \[root@localhost \~\]# systemctl start nginx \[root@localhost \~\]# echo "web02" \>/usr/share/nginx/html/index.html #### (3)查看日志记录 在执行主、备服务器故障切换的过程中,分别观察各自的/var/1opg/messages志文件,可以看到MASTER、SLAVE状态的迁移记录。 1主服务器中,Keepalived服务状态先变为"stop",移除VIP地址,恢复后重新变为MASTER。 \[root@localhost \^\]# less /var/log/messages 备用服务器中,状态先切换为MASTER,待主服务器恢复后再交回控制权。 \[root@localhostless /var/log/messages ## 二:使用keepalived实现双击热备 ### 1.基础环境配置 > > systemctl stop firewalld > > systemctl disable firewalld > setenforce 0 #### 2.配置主调度器 #### (1)全局配置,热备配置 首先为主、从调度器实现热备功能,漂移地址使用LVS群集的VIP地址 > > > \[root@localhost \^\]# vi /etc/keepalived/keepalived.conf > > global_defs { > > router_id LVS_HA_R1 > > vrrp_instance VI_1 { > > state MASTER > > interface ens33 > > virtual_router_id l > > priority 100 > > advert_int 1 > > authentication > > auth_type PASS > > auth_pass 123456 > > virtual ipaddress > > 192.168.10.100 > > } > > } #### (2)web服务器池配置 > 在 Keepalieved的热备配置基础上添加"virtual_serveer VIP端口{...}"区段来 配置虚拟服务器,主要包括对负载调度算法、群集工作模式、健康检查间隔、真实服务器地址等参数的设置。 > > > \[root@localhost \^\]# vi /etc/keepalived/keepalived.conf > > ...... > > virtual server 192.168.10.100 80 #虚拟服务器地址(VIP)、端口 > > delay_loop 15 #健康检查的间隔时间(秒) > > lb_algo rr #轮询(rr)调度算法 > > lb kind DR #直接路由(DR)群集工作模式 > > ! persistence 60 #连接保持时间(秒),若启用请去掉!号 > > protocol TCP #应用服务采用的是TCP协议 > > real server 192.168.10.103 80 { #第一个Web节点的地址、端口 > > weight 1 #节点的权重 > > TCP_CHECK { #健康检查方式 > > connect_port 80 #检查的目标端口 > > connect_timeout 3 #连接超时(秒) > > nb_get_retry 3 #重试次数 > > delay_before_retry 4 //重试间隔(秒) > > } > > } > > real_server 192.168.10.104 80 { #第二个Web节点的地址、端口 > > #省略部分信息 > > } > > } > > > 完整配置如下(该配置文件为1b01节点的配置,可复制到1b02节点但需要修改state以及priority,router id建议为每个机器配置不同的名称cat/etc/keepalived/keepalived.conf) > > > ! Configuration File for keepalived > > global_defs { > > router_id LVS_DEVEL > > } > > > vrrp_instance VI_1 { > > state MASTER #两个DS,一个为MASTER一个为BACKUP > > interface ens33 #当前IP对应的网络接口,通过 ifconfig查询 > > virtual_router_id 62 #虚拟路由ID(0-255),在一个VRRP实例中主备服务器ID必须一样 > > priority 100 #优先级值设定:MASTER要比BACKUP的值大 > > advert_int 1 #通告时间间隔:单位秒,主备要一致 > > authentication { #认证机制,主从节点保持一致即可 > > auth_type PASS > > auth_pass 1111 > > } > > virtual_ipaddress { > > 192.168.10.100 #VIP,可配置多个 > > } > > } > > > #web配置 > > virtual server 192.168.10.100 80 { > > delay_loop 3 #设置健康状态检查时间 > > lb_algo rr #调度算法,这里用了 rr轮询算法 > > lb_kind DR #这里测试用了DirectRoute模式 > > persistence_timeout 50 #持久连接超时时间,注意添加此项配 > > > 置客户端连续请求时,请求到同一节点 > > protocol TCP > > real server 192.168.10.103 80 > > weight 1 > > TCP_CHECK { > > connect_timeout 10 > > retry 3 #旧版本为nb_get_retry > > delay_before_retry 3 #重试间隔3秒 > > connect_port 80 > > } > > } > > real server 192.168.10.104 80 { > > weight 1 > > TCP_CHECK { > > connect_timeout 10 > > retry 3 > > delay_before_retry 3 > > connect_port 80 > > } > > } > > } #### (3)重新启动keepalived访问 > 从调度器的配置与主调度器基本相同,也包括全局配置、热备配置、服务器池配置,只需要调整routerid、state、priority参数艮可,其余内容完全相同。配置完成以后重启Keepalived服务。 > > > \[root@localhost \^\]# vi /etc/keepalived/keepalived.conf > > global_defs { > > router_id LVS_HA_R2 > > //从调度器的名称 > > } > > vrrp_instance VI_1 { > > state BACKUP //从调度器的热备状态 > > priority 90 //从调度器的优先级 > > ......... > > } > > virtual server 192.168.10.100 80 { > > ......... > > } > > \[root@localhost\~\]systemctl restart keepalived ### 3.配置从调度器 从调度器的配置与主调度器基本相同,也包括全局配置、热备配置、服务器池配置,只需要调整router_id、state、priority参数即可,其余内容完全相同。配置完成以后重启Keepalived服务。 > \[root@localhost \^\]# vi /etc/keepalived/keepalived.conf > > global_defs { > > router_id LVS_HA_R2 > > vrrp_instance VI_1 { > > state BACKUP > > priority 90 > > virtual server 192.168.10.100 80 > > \[root@localhost\`\]# systemctl restart keepalived ### 4.配置web节点服务器 根据所选择的群集工作模式不同(DR或NAT),节点服务器的配置也有些差异。以DR模式为例,除了需要调整/proc系统的ARP响应参数以外,还需要为虚拟接口 10:0配置VIP地址,并添加一条到VIP的2本地路由,具体方法请参考第2章。 ### 5.测试LVS+Keepalived高可用群集 在客户机的浏览器中,能够通过LVS+Keepalived群集的VIP地址192.168.10.100)正常访问Web页面内容。当主、从调度器任何一个失效时,Web站点仍然可以访问(可能需要刷新或者重新打开浏览器);只要服务器池有两台及以上的真实服务器可用,就可以实现访问量的负载均衡。通过主、从调度器的/var/log/messages 日志文件,可以跟踪故障切换过程:若要查看负载分配情况,可以执行"ipvsadm-ln" "ipvsadm-lnc"等操作命令。最终可以验证LVS+Keepalived高可用负载均衡群集的健壮性。