目录
keepalived双机热备
一、概述
(一)具体工作原理如下:
(二)实验拓补
二、安装NFS、配置
1、第一台机器配置:NFS :192.168.11.101
2、更改配置文件
3、安装NFS进行目录共享
4、编辑配置文件进行文件共享
5、创建需要共享的目录
6、在创建的目录下建立一个网站访问文档
7、查看是否存在共享目录
8、在第二台( master )第三台( slave )分别进行挂载
三、功能模块
1、VRRP模块:
2.、配置管理模块:
3.、健康检查模块:
4.、故障转移模块:
5.、日志记录模块:
四、配置双机热备
1、master:192.168.11.102
2、slave:192.168.11.103配置
五、验证
六、双机热备的脑裂现象
七、当VIP无法通信时
keepalived+lvs(DR)
一、作用
二、 调度器配置
1、安装keepalived和ipvsadm(主、备)
2、创建ipvsadm启动需要的文件(主、备)
3、启动服务
4、加载ip_vs模块
5、配置keepalived
1)主调度器(master)
2)备调度器(backup)
6、重启服务(主、备)
7、查看lvs节点状态
三、web节点配置
1、调整ARP参数(Web1服务、Web2服务)
2、使用命令生效
3、配置虚拟IP地址
4、添加回环路由
5、安装nginx
6、启动服务
7、更改网页访问内容
8、进行网站访问检测
总结
keepalived双机热备
Keepalived是一个用于高可用性的软件,它通过实现VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)来提供双机热备功能。
双机热备是一种架构设计,其中有两台服务器(主机和备机)同时运行,并共享相同的虚拟IP地址(VIP)。当主机出现故障或不可用时,备机会接管主机的工作并使用相同的VIP地址,以确保服务的持续可用性。
Keepalived利用VRRP协议来实现双机热备。
1、主机和备机通过VRRP协议进行通信,协商并确定主机和备机的优先级,主机通常具有较高的优先级。
2、在正常情况下,主机会周期性地发送VRRP心跳消息,以证明自己的存活状态和优先级。
3、如果备机在一定时间内没有收到主机的心跳消息,它会认为主机不可用,并开始进行故障转移。
4、当备机接管主机的工作时,它会使用相同的VIP地址,并开始处理来自客户端的请求。
5、一旦主机恢复正常,它会发送一条特殊的VRRP消息,请求备机放弃VIP地址,并将其切换回主机。
说简单点就是在一个 LVS 服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟 IP,主服务器会发送 VRRP 通告信息给备份服务器,当备份服务器收不到 VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。
keepalived双机热备解决了单点故障问题,在主宕机以后,备自动接替主的工作继续运行,当原主重启后,主自动变换为原有主。
yum install -y keepalived
在更改配置文件前,建议先做一个备份,避免后续出现故障问题
cd /etc/keepalived/
ls
cp keepalived.conf keepalived.conf.bak
ls
vim /etc/keepalived/keepalived.conf
yum install -y nfs-utils
vim /etc/exports
mkdir /opt/wjy
cd /opt/wjy/
echo test > index.html
showmount -e
showmount -e 表示显示指定主机所挂载的共享文件系统列表。
exportfs -arv
exportfs -arv 表示将所有已经在/etc/exports中定义的文件系统重新导出。(直接进行挂载,无需重启服务)
其中,-a表示重新导出所有已经定义的文件系统,-r表示清除已经导出的文件系统,-v表示显示详细的导出信息。
注:此步是在安装完web网站以后进行挂载的,例如nginx挂载到nginx的访问目录,apache挂载到apache的访问目录下,不然访问找不到内容
Keepalived双机热备的功能模块包括以下几个:
VRRP(Virtual Router Redundancy Protocol)模块实现了VRRP协议,用于实现多个路由器之间的冗余和故障恢复。它允许多个路由器共享一个虚拟IP地址,通过选举一个主节点来处理网络流量,一旦主节点失效,备份节点可以接管虚拟IP地址。
这个模块负责管理Keepalived的配置文件。配置文件中定义了服务器的角色(主节点或备份节点)、网络接口、虚拟路由器ID、优先级、虚拟IP地址等参数。通过配置管理模块,可以灵活地配置和管理Keepalived的行为。
健康检查模块定期检查真实服务器的可用性。它发送请求到真实服务器,并根据响应情况判断服务器是否正常运行。如果服务器无法响应或状态异常,健康检查模块将发出警告,并触发故障转移操作。
故障转移模块是Keepalived的核心功能之一。当主节点发生故障或不可用时,故障转移模块将虚拟IP地址切换到备份节点,确保服务的连续性。它负责监控主节点的状态,并在需要时触发切换操作。
日志记录模块记录Keepalived的运行日志,包括故障转移事件、状态变化等。通过日志记录,可以方便地查看和分析Keepalived的运行情况,帮助故障排查和监控。
这些功能模块共同协作,实现了Keepalived双机热备的高可用性和故障恢复机制。通过VRRP协议、配置管理、健康检查和故障转移,Keepalived确保了服务的连续性,并提供了一种简单而可靠的解决方案来提高系统的稳定性。
core 主进程启动
vrrp vrrp协议:热备份路由协议
check 健康状态检测
vim /etc/keepalived/keepalived.conf
配置文件内容 :
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.200
192.168.11.201
192.168.11.202
}
}
启动服务
systemctl start keepalived
查看IP
真实IP和虚IP
vim /etc/keepalived/keepalived.conf
配置文件内容:
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.200
192.168.11.201
192.168.11.202
}
}
注: 标记这两个地方一点要进行更改,这样才可以做到主停止工作,备启动运行,而且备的优先级一定要低于主的优先级。
安装web服务,什么都可以Nginx、Apache等等
停掉主的服务
再次进行查看
此时启动原主关闭备进行查看
Keepalived配置里同一 VRRP实例,如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。
vrrp实例名字不一致、优先级一致
防火墙打开,导致心跳无法正常通信
网卡故障:网卡进行多路复用
注释掉配置文件中:vrrp_strict即可
keepalived+lvs(DR)
使用keepalived解决lvs的单点故障
高可用集群
拓补图
实验要求:使用四台机器进行配置
主调度器(master):192.168.11.111
备调度器(backup):192.168.11.112
Web服务1(nginx1):192.168.11.113
Web服务2(nginx2):192.168.11.114
虚IP:192.168.11.200
更改主机名
hostnamectl set-hostname master
bash
hostnamectl set-hostname backup
bash
hostnamectl set-hostname nginx1
bash
hostnamectl set-hostname nginx2
bash
yum install -y keepalived ipvsadm
touch /etc/sysconfig/ipvsadm
systemctl start keepalived
systemctl start ipvsadm
modprobe ip_vs
lsmod | grep ip_vs
注:先备份配置文件,养成良好习惯。
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
编辑配置文件:
vim /etc/keepalived/keepalived.conf
1 ! Configuration File for keepalived #(!)是本文的注释,同时使用"#"注释一样可以
2
3 global_defs {
4 # notification_email { #注释掉这些目前无用的的配置
5 # [email protected]
6 # [email protected]
7 # [email protected]
8 # }
9 # notification_email_from [email protected]
10 # smtp_server 192.168.200.1
11 # smtp_connect_timeout 30
12 router_id LVS_DEVEL1
13 # vrrp_skip_check_adv_addr
14 # vrrp_strict #取消严格遵守vrrp协议功能
15 # vrrp_garp_interval 0
16 # vrrp_gna_interval 0
17 }
18
19 vrrp_instance VI_1 {
20 state MASTER
21 interface ens33
22 virtual_router_id 51
23 priority 100
24 advert_int 1
25 authentication {
26 auth_type PASS
27 auth_pass 1111
28 }
29 virtual_ipaddress {
30 192.168.11.200
31 # 192.168.200.17
32 # 192.168.200.18
33 }
34 }
35
36 virtual_server 192.168.11.200 80 {
37 delay_loop 6
38 lb_algo rr
39 lb_kind DR
40 persistence_timeout 50
41 protocol TCP
42
43 real_server 192.168.11.113 80 {
44 weight 1
45 HTTP_GET {
46 url {
47 path /
48 # digest ff20ad2481f97b1754ef3e12ecd3a9cc
49 }
50 url {
51 path /
52 # digest 9b3a0c85a887a256d6939da88aabd8cd
53 }
54 connect_timeout 3
55 nb_get_retry 3
56 delay_before_retry 3
57 }
58 }
59 real_server 192.168.11.114 80 {
60 weight 1
61 HTTP_GET {
62 url {
63 path /
64 # digest ff20ad2481f97b1754ef3e12ecd3a9cc
65 }
66 url {
67 path /
68 # digest 9b3a0c85a887a256d6939da88aabd8cd
69 }
70 connect_timeout 3
71 nb_get_retry 3
72 delay_before_retry 3
73 }
74 }
75 }
76
77 #=====================================================================================#
78 #以下97行配置文件暂时无用,这里全部删除掉,因为已经做好过备份。#
备份配置文件
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
因为备调度器的配置与主调度器配置大多一样,这里我们使用 scp 将配置好的主配置文件传至备调度器中,进行细微修改
scp keepalived.conf 192.168.11.112:/etc/keepalived/
vim keepalived.conf
只需更改12行、20行、23行内容即可
systemctl restart keepalived
systemctl restart ipvsadm
ipvsadm -ln
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
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
编辑内容:
DEVICE=lo:0
IPADDR=192.168.11.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
route add -host 192.168.11.200/32 dev lo:0
yum install -y nginx
systemctl start nginx
Web1服务
echo nginx1 > /usr/share/nginx/html/index.html
Web2服务
echo nginx2 > /usr/share/nginx/html/index.html
关掉主调度器服务
去备调度器上查看ip
然后网站进行访问检测
这样可以看到实现了负载均衡,在主宕机以后,从接替主继续实行网页访问。
如果在配置中,配置完成时无法负载均衡访问网页可以:
ipvsadm -C
清除配置
ipvsadm -A -t 192.168.11.200:80 -s rr ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.113:80 -g ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.114:80 -g
重新进行指定
ipvsadm-save > /etc/sysconfig/ipvsadm systemctl restart keepalived
将配置保存到指定文件中,重启服务即可
通过今天搭配的这两个服务,可以进一步健康检查、持久化、连接超时等参数来优化负载均衡和故障恢复。无论是Keepalived双机热备还是Keepalived+LVS(DR),都需要确保网络配置正确、Keepalived服务正常运行以及实时监控服务状态。这样可以实现高可用性和负载均衡,提高系统的稳定性和可靠性。可能有理解不到之处,忘大家见谅。