云计算运维day7----高可用与负载均衡(1)
目录
2.4.6配置两个后端服务器(server5,server6)
2.5.3调试器添加网卡,设置测试机的网卡,开启调试器的路由机制
2.5.6配置两个后端服务器(server5,server6)
引言:简单介绍
1.高可用与负载均衡的简单概念
高可用:目标是让服务“尽量不挂”,即使部分组件故障,系统整体仍能正常运行。
负载均衡:目标是让服务“跑得更顺”,将请求合理分发到多个服务器,避免单点过载。
两者结合使用:
高可用:负责在负载均衡器节点发生故障时自动切换。
负载均衡:负责将海量请求分摊到多个后端服务器
2.请求服务的工作流程:
工作流程:客户端 -> 域名解析 -> 分布式网络服务 -> 虚拟网络IP -> 真实的后台服务端
1.用户通过域名解析(DNS)访问业务,请求首先到达分布式网络服务层,这一层由高可用集群管理,通过虚拟网络IP(VIP)提供一个固定的服务入口。当某个负载均衡器节点发生故障时,VIP会自动漂移到备用节点,确保服务永不掉线(高可用)。
2.请求经由虚拟IP进入负载均衡层,根据预设的调度算法(如轮询、最少连接数),将流量分摊到后端的多个真实服务器(Real Server)上,避免单机过载,提升整体处理能力(负载均衡)。
3,后端服务器处理请求并返回响应,整个流程协同工作,共同构成一个高可用、高性能、易扩展的系统架构。
注意:后端服务器可精准到数据库。

一.网络应用架构模式
1.1基本概念
1. 网络应用架构:指的是客户端和服务器之间如何组织、通信和协作的宏观设计模式。
2.两类架构:C/S 架构 和 B/S 架构
C/S架构:客户端/服务器架构
将应用程序分成两个部分:客户端和服务器。
通信方式:客户端负责界面交互,服务器负责数据存储和核心业务逻辑处理。
客户端与服务器之间通过自定义协议(如 TCP/IP 上的私有协议)进行通信。
B/S架构:浏览器/服务器架构
通信方式:用户只需在浏览器中输入网址,即可访问应用。
核心:客户端统一使用浏览器,服务器承担所有核心功能。
他们之间基于标准 HTTP/HTTPS 协议,浏览器通过 URL 访问服务器资源,服务器返回 HTML 页面或数据。

3.网络应用架构与高可用和负载均衡之间的联系:
网络应用架构是系统的“骨架”,定义了客户端和服务端如何协作;
高可用和负载均衡是系统的“增强层”,分别保障可靠性和性能。
二.负载均衡模式
2.1基本概念
1.作用:将大量的并发请求或网络流量,按照某种策略(算法)分摊到多个后端服务器(Real Server)上进行处理的技术。

2.三种工作模式:NAT、TUN、DR
NAT:网络地址转换模式,客户端请求到达VS的对外IP,VS作为双向流量调度器,通过NAT将目标地址转换为后端服务器的对内IP,将请求转发给后端处理;后端处理完成后,响应先返回给VS,VS再次通过NAT将源地址转换为对外IP,返回给客户端。进出流量均经过VS。
TUN:隧道模式,客户端请求到达VS,VS作为单向请求调度器,将请求封装在IPIP隧道中,转发给后端服务器;后端服务器解封装后直接处理请求,并将响应绕过VS,直接返回给客户端。响应流量不经过VS。
DR(常用):直接路由模式,客户端请求到达VS(VIP),VS作为轻量级请求转发器,仅修改数据帧的目标MAC地址,将请求通过二层网络转发给后端服务器;后端服务器(配置了VIP且禁止ARP响应)收到请求后直接处理,并将响应绕过VS,直接返回给客户端。VS仅处理请求入向流量,性能最高。
三种模式中,负载均衡器始终承担“请求分发”的核心职责,但NAT模式双向流量均经VS(负担最重),TUN和DR模式仅处理请求入向(响应绕过VS),其中DR因性能最高、配置适中,成为生产环境的绝对主流。
2.2VS调度器(ipvsadm)
2.2.1基本概念
1.作用:LVS(Linux虚拟服务器) 集群中的核心前端组件。它负责接收所有用户请求,然后根据预设的调度算法,将这些请求智能地分发给后端的真实服务器集群。
2.核心命令工具:ipvsadm
3.两个IP:VIP(虚拟IP)和RIP(后端真实服务器IP)
4.工作机制:当用户请求到达VS调度器的VIP时,调度器会基于IPVS(IP VirtualServer) 这个内核模块,执行调度算法,将请求转发给选中的真实服务器。
5.核心机制:
1.负载调度器 (Director/VS调度器):这是整个集群的入口,也就是我们讨论的VS调度器本身。它拥有一个对外的虚拟IP地址 (VIP),用户访问的实际上是这个VIP。
2.真实服务器池 (Real Server):一组真正处理用户请求的服务器,它们提供实际的Web、邮件等服务。
3.共享存储 (Shared Storage):为真实服务器提供共享数据,确保它们提供一致的服务内容。
2.2.2安装服务并启用开机自启
yum install -y ipvsadm
systemctl enable ipvsadm
2.2.3基本用法
1.查看服务器
ipvsadm -Ln #查看所有虚拟服务和后端真实服务器(详细信息)
ipvsadm -Ln --stats #查看更详细的统计信息(连接数、包数等)
ipvsad m -Ln --rate #查看每个真实服务器的当前连接状态

2.添加虚拟服务:需要先在本机创建一个VIP(虚拟IP),接着添加服务,
注意,使用ip a 命令创建的VIP是临时的,永久需要修改文件,或者使用nmlic命令
ip a addr 你要添加的虚拟IP/24 dev 设备名 #虚拟IP应在本机的网段内,设备名为当前本机的网卡名
ipvsadm -A -t 你创建的虚拟IP:80 -s 你的算法 #80表示httpd服务的端口号,-s后接调度算法
参数:
-A:添加虚拟服务
-t:指定 TCP 协议的虚拟服务(格式:VIP:端口)
其他协议:-u(UDP)、
-f(防火墙标记,用于复合协议)
-s:指定负载均衡调度算法,常用算法:
rr:轮询(Round Robin)
wrr:加权轮询(Weighted RR)
lc:最少连接(Least Connections)
wlc:加权最少连接(Weighted LC)
sh:源地址哈希(Source Hash,会话保持)
dh:目标地址哈希(Destination Hash)
添加一个192.168.7.100的VIP,并添加虚拟服务


3.向虚拟服务VS添加真实服务RS
ipvsadm -a -t 你的VIP:80 -r RIP -g(或m,i) #RIP真实后端服务器IP,后面的-g,m,i必须要有一个
参数解释:
-a:添加真实服务器
-t:指定关联的虚拟服务(需与添加虚拟服务时的 -t 一致)
-r:指定真实服务器地址(格式:RIP:端口)转发模式(必选其一):
-g:DR 模式(Direct Routing,直接路由,性能最优)
-m:NAT 模式(Network Address Translation,网络地址转换)
-i:TUN 模式(IP Tunneling,IP 隧道,跨网段场景)
-w:指定权重(值越大,分配的请求越多,仅用于加权算法)
将后端服务器的IP添加到虚拟服务(VIP)当中,转发模式为DR
![]()

4.修改配置
ipvsad m -E -t VIP:80 -[参数] #更换虚拟服务的参数内容
ipvsad m -e -t 192.168.36.100:80 -r 192.168.1.10:80 -[参数] #修改真实服务器的参数内容
-E:修改虚拟服务
-e:修改真实服务器
5.删除配置
ipvsad m -d -t VIP:80 -r RIP:80 #从虚拟服务中删除某个真实服务
ipvsad m -D -t VIP:80 #删除虚拟服务,以及它下面的所有真实服务
ipvsad m -C #清空ipvsadm的所有服务
-d:删除真实服务器
-D:删除虚拟服务
-C:清空所有规则
6.保存与回退配置文件:所有修改必须保存在文件中,否则重启后会失效,开启开机自启
ipvsadm-save > /etc/sysconfig/ipvsadm #保存修改配置
ipvsadm-restore > /etc/sysconfig/ipvsadm #恢复文件配置
2.3ARP管理工具(ARP)
2.3.1基本概念
1.作用:Linux 系统中用于管理 ARP(地址解析协议)规则 的命令行工具,专门针对 ARP 报文进行过滤和修改。主要用于控制网络中 ARP包的接收、发送和转发,防止 ARP 欺骗、限制 ARP广播等场景
2.基本知识:
1.ARP 协议:用于将 IP 地址映射到 MAC 地址,是局域网通信的基础。
2.arptables 作用:通过规则链过滤 ARP 报文,可实现允许 / 拒绝特定 ARP 包、修改 ARP 包内容等操作。
3.规则链:与 iptables 类似,arptables 包含 3 条默认链:
INPUT:处理目标为本机的 ARP 报文。
OUTPUT:处理本机发出的 ARP 报文。
FORWARD:处理经过本机转发的 ARP 报文(仅路由器场景有效)。
2.3.2安装服务并启动服务
yum install -y arptables
systemctl enable --now arptables #启动并开机自启动
2.3.3基本用法
arptables -[参数]
参数:
-A:向链尾插入一条规则
-I:向链头插入一条规则
-D:从链中删除一条规则
-R:替换链中的规则
-L:列出链表中的所有规则
-F:清空链中的所有规则
-P:设置链的默认策略
目标动作:
ACCEPT:允许arp包通过
DROP:丢弃arp包
RETURN:终止当前链处理,返回上一条链
MASQUERADE:修改ARP源包的MAC地址为出口网卡的MAC地址
1.查看规则
arptables -L -n #查看所有规则链
arptables -L INPUT --line-numbers # 查看 INPUT 链的规则,并显示序号(方便删除)

2.添加规则
2.1.丢弃所有匹配192.168.7.100的arp包
arptables -A INPUT -d 192.168.7.100 -j DROP
-A INPUT:向 INPUT 链添加一条规则
-d 192.168.7.100:匹配目的 IP 为 192.168.7.100 的arp 包
-j DROP:对匹配的报文执行丢弃操作
![]()
2.2.禁止以源地址为192.168.7.100的arp包从地址为192.168.7.141出去
arptables -A OUTPUT -s 192.168.7.100 --j managle --managle-ip-s 192.168.7.141
![]()
3.保护规则
arptables-save > /etc/sysconfig/arptables #保存文件配置
![]()
2.4实现DR模式下的LVS负载均衡
2.4.1工作原理
1.工作机制:
1.客户端向 VIP发送请求,数据包到达 VS;
2.VS 仅修改数据帧的目标 MAC 地址(将目标 MAC 改为选中的后端服务器的 MAC,IP 地址完全不变),通过二层网络(arg协议)将请求转发给后端服务器。
3.后端服务器收到数据帧后,发现目标IP与自己的 VIP 一致,直接接收并处理请求
4.后端服务器将响应绕过 VS,直接返回给客户端。(DR核心)
注意:VS与RS必须处于同一网段
2.缺点:DR模式无法自定义数据流向的服务器,NAT模式能完成定向
2.4.2准备工作
1.准备四台虚拟机,可以通过虚拟机快照完成,并设置静态IP。
2.完成四台虚拟机的定义(以下为我自己的虚拟机,根据情况自己定义):
server4:充当调度器,ip分别为192.168.7.140
server5,server6:充当后端真实服务器,ip分别为192.168.7.141,192.168.7.142
server7:充当测试机,检验任务结果,ip为192.168.7.143
server4,server5,server6都应有vip,我的vip为192.168.7.100,要有一个公用的vip
2.4.3完成四台虚拟机的环境配置
1.设置静态IP,编辑四台虚拟机的网络文件,设置静态IP:
vim /etc/sysconfig/network-scripts/ifcfg-ens32
#修改以下内容
![]()

2.四台虚拟机打开网络,并重启网络服务
nmcli c up ens32 #打开网卡
systemctl restart network #重启网络


3.分别设置四台虚拟机的域名:设置主机名,编辑 /etc/hosts 文件,添加四台虚拟机的虚名解析内容,重启虚拟机,即可看见新的域名
hometemctl set-hostname 主机名 #设置你的主机名
hostname #查看你的主机名
vim /etc/hosts #修改成功后,编辑文件,添加四台虚拟机的域名解析
reboot #重启虚拟机

![]()

4.server4,serv5,server6,调度器和两个后端服务器上要有共同的VIP:
ip addr add 192.168.7.100/24 dev ens32

2.4.4安装软件服务
四台虚拟机都安装ipvsadm、httpd、arptables软件,并启动服务
yum install -y ipvsadm httpd arptables #安装软件
systemctl enable --now ipvsadm #启动服务并设置开机自启
systemctl enable --now htppd
systemctl enable --now arptables
![]()

![]()
![]()
![]()
![]()
2.4.5配置VS调度器(server4)
1.serve4调度器上添加vip和虚拟服务,使用轮询策略,接着添加两个后端服务器
ipvsadm -A -t 192.168.7.100:80 -s rr #以轮询模式添加虚拟服务
ipvsadm -a -t 192.168.7.100:80 -r 192.168.7.141:80 -g #以DR模式添加两个后端真实服务器
ipvsadm -a -t 192.168.7.100:80 -r 192.168.7.142:80 -g
ipvsadm -Ln #查看服务


2.server4上,保存ipvsadm的配置信息
ipvsadm-save > /etc/sysconfig/ipvsadm #保存文件信息

2.4.6配置两个后端服务器(server5,server6)
1.serve4和server5上,确保含有VIP
ip a #查看系统IP
ip a a 192.168.7.100/24 dev ens32 #如果没有,加上

2.server5和server6上,禁止广播,否则客户端数据会直接进入到后端服务器中,不经过VS。
server5:
arptables -A INPUT -d 192.168.7.100 -j DROP #丢弃所有询问VIP的ARP请求。
arptables -A OUTPUT -s 192.168.7.100 -j mangle --mangle-ip-s 192.168.7.141 #将RS发出的、源IP为VIP的ARP包,修改为源IP为RS真实IP(RIP)。
arptables-save > /etc/sysconfig/arptables #保存文件信息
systemctl restart arptables #重启服务
![]()

![]()
![]()
server6:将上面的RIP改成server6的RIP
arptables -A INPUT -d 192.168.7.100 -j DROP #丢弃所有询问VIP的ARP请求。
arptables -A OUTPUT -s 192.168.36.100 -j mangle --mangle-ip-s 192.168.7.142 #将RS发出的、源IP为VIP的ARP包,修改为源IP为RS真实IP(RIP)。
arptables-save > /etc/sysconfig/arptables #保存文件信息
systemctl restart arptables #重启服务
3.server5和server6上,在/var/www/html目录下创建一个index.html文件,并输入不同内容,用于后续测试
server5:
touch /var/www/index.html #新建文件
echo server5 > /var/www/html/index.html
systemctl restart httpd
server6: 输入不同的文件内容,用于区分
touch /var/www/index.html #新建文件
echo server6 > /var/www/html/index.html
systemctl restart httpd
2.4.7测试(server7)
在测试机server7上,使用curl命令访问虚拟VIP192.168.7.100即可看到轮流看到server5和server6的输出信息
curl 192.168.7.100

2.4.8解决任务中的问题
1.问题一:出现curl不通的情况,问题如下:

产生原因:你的后端服务器上没有添加调试器的VIP,它看到目标 IP 为 VIP 的数据包时,会认为这不是发给自己的(因为本机没有这个 IP),于是直接丢弃数据包。
解决办法:向你的两个后端服务器上添加调试器的VIP
ip a #查看系统IP
ip a a 192.168.7.100/24 dev ens32 #如果没有,加上

2.问题二:curl只能到达一台RS上,

产生原因:客户端没有增加arp规则,客户端绕过了VS,直接访问到了RS里
解决办法:禁用后端服务器上的广播,让客户端无法直接访问到RS中
arptables -A INPUT -d 192.168.7.100 -j DROP #丢弃所有询问VIP的ARP请求。
arptables -A OUTPUT -s 192.168.36.100 -j mangle --mangle-ip-s 192.168.7.141 #将RS发出的、源IP为VIP的ARP包,修改为源IP为RS真实IP(RIP)。
arptables-save > /etc/sysconfig/arptables #保存文件信息
systemctl restart arptables #重启服务
![]()

![]()
![]()
2.5实现NAT模式下的LVS负载均衡
2.5.1工作原理
1.工作机制:客户端向 VS 的对外IP发送请求;VS 接收后,将目标IP地址从对外IP转换为后端服务器的对内IP,并将请求转发给后端处理。后端处理完成后,将响应返回给 VS;VS 收到响应后,将源IP地址从转换为对外IP ,再返回给客户端。
注意:VS调度器与RS后端服务器可处于不同的网段当中
2.作用:可实现经调度器后,输送到定向的服务器的功能

3.优点:服务器可以运行任何支持 TCP/IP 的操作系统,它只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。
4.缺点:伸缩能力有限,当服务器结点数目升到 20 时,调度器本身有可能成为系统的新瓶颈,因为在 VS/NAT 中请求和响应报文都需要通过负载调度器。
2.5.2准备工作
1.选择四台虚拟机,通过快照快速创建
2.这是四台虚拟机的定义(以下为我自己的虚拟机,根据情况自己定义):
server4:充当调度器,ip分别为192.168.7.140,我的新IP:192.168.92.128
server5,server6:充当后端真实服务器,ip分别为192.168.7.141,192.168.7.142
server7:充当测试机,检验任务结果,ip为192.168.7.143,完成配置后的新IP为192.168.92.129
2.5.3调试器添加网卡,设置测试机的网卡,开启调试器的路由机制
1.向调度器server4中添加一块网卡,模式为仅主机模式:





2.将测试机的网卡更改为仅主机模式,与服务器处于不同网段,与VS调度器的新建网卡处于同一网段
2.1.设置成仅主机模式

2.2测试机设置网络成自动连接

2.3开启网络,并重启网卡

3.开启调试机的路由机制:
vim /etc/sysctl.conf #编辑文件
#添加以下内容:
net.ipv4 .ip_forward=1 #开启路由
sysctl ---system #命令生效
sysctl -p #查看路由状态
![]()



2.5.6配置VS调试器(server4)
向调试器(server4)的对外IP上添加虚拟服务,并将两个真实后端服务器IP(RIP)添加到虚拟服务当中
ipvsadm -A -t 192.168.92.128:80 -s rr #以轮询模式添加虚拟服务
ipvsadm -a -t 192.168.92.128:80 -r 192.168.7.141:80 -m #以NAT模式添加两个后端真实服务器
ipvsadm -a -t 192.168.92.128:80 -r 192.168.7.142:80 -m
ipvsadm -Ln #查看服务

2.5.6配置两个后端服务器(server5,server6)
1.在server5和server6上,删除两个后端服务器上原先的网关,调整网关为VS调度器的对内IP
server5:
ip r a default via 192.168.7.2 #删除你原先的网关
ip r a default via 192.168.7.140 #这里的IP为调试器的对内IP
ip r #查看网关

server6:
ip r a default via 192.168.7.2 #删除你原先的网关
ip r a default via 192.168.7.140 #这里的IP为调试器的对内IP
ip r #查看网关

注意:在 NAT 模式下,后端真实服务器(RS)的网关必须指向 LVS 调度器(Director)。如果网关设成 .2 或其他地址,数据包回程时就找不到正确的路径了。
2.接着在/var/www/html目录下创建一个index.html文件,并输入不同内容,用于后续测试
server5:
touch /var/www/html/index.html
echo server5 > /var/www/html/index.html
systemctl restart httpd
![]()
server6:
touch /var/www/html/index.html
echo server6 > /var/www/html/index.html
systemctl restart httpd
![]()
2.5.7测试(server7)
在测试机server7上,使用curl命令访问虚拟VIP192.168.7.100即可看到轮流看到server5和server6的输出信息
curl 192.168.92.128 #客户端输入调试器的对外IP

三.高可用模式(keepalived)
3.1基本概念
3.1.1.作用
为服务器集群提供“虚拟 IP(VIP)漂移” 能力,实现主备节点故障自动切换,确保业务 IP 不中断。
3.2.2.核心工具
keepalived
3.3.3.工作原理
Keepalived 基于 VRRP 协议,通过心跳检测和优先级选举机制,在多台服务器之间自动管理 VIP 的归属,实现入口的高可用。主机故障时,备用机在 1-3 秒内自动接管 VIP,确保服务不中断。

3.1.4.核心原理:VRRP协议与VIP漂移
Keepalived 的高可用能力依赖 VRRP 协议,本质是让多台节点(主、备)共享一个 “虚拟 IP(VIP)”,对外呈现为一个统一的服务入口,核心逻辑如下:
1. 角色划分:集群包含 1 个 主节点(Master)和 1 个 / 多个 备节点(Backup)。
2. 心跳检测:主节点定期向备节点发送 VRRP 通告报文(默认每 1 秒),证明自己 “存活”。
3. VIP 持有:正常情况下,主节点绑定 VIP 并对外提供服务,备节点仅监听心跳,不持有 VIP。
4. 故障切换:若备节点超过指定时间(默认 3 秒)未收到主节点心跳,判定主节点故障,备节点立即升级为新主节点,绑定 VIP 并接管服务,整个过程无需人工干预。
3.1.5.核心组件
1.vrrp_instance:VRRP 实例,是 Keepalived 配置的核心单元,一个实例对应一个 VIP 及一组主备节点。
2.Global_defs:全局配置,定义集群标识、邮件通知等基础参数。
3.Track_script:健康检查脚本,用于检测主节点上“核心业务服务”是否存活。若服务挂了,即使主节点本身存活,也会主动释放 VIP,触发切换。
3.1.6配置文件
1.Keepalived 主配置文件默认路径为 /etc/keepalived/keepalived.conf。
2.主、备节点配置差异主要在 state(角色)和 priority。
如下图:优先级,数值越高越优先成为主节点

3.2实现高可用和负载均衡
3.2.1准备工作
1.核心任务:修改主调试机与备用调试机的配置文件
2.虚拟机:准备四台虚拟机可使用快照快速准备
3.定义两台调试机,两台服务机和一台测试机
这里我使用的是上述任务中的server4与server7作为调试机,server5,server6作为我的后端服务机
server4(主):IP:192.168.7.140
server7(备):IP:192.168.7.143
server5(后端服务器):IP:192.168.7.141
server6(后端服务器):IP:192.168.7.142
server3:是我的测试机,测试负载均衡功能(DR模式)
3.2.2清除之前任务的残留资源
ip a d 192.168.7.100/32(24具体看你的ip) dev ens32 #删除server4上的VIP
ipvsadm -C #清空VS调度器上的所有规则
![]()
![]()

3.2.3安装软件
server4和server7:在两台调试机上安装keepalived软件
yum install -y keepalived
![]()
3.2.4配置主调试机的文件(server4)
1.server4:打开配置文件,修改文件信息,只保留我图中的信息删除其他信息如下图:
vim /etc/keepalived/keepalived.conf


2.server4:保存文件退出后,重启服务,观察IP是否加入
systemctl enable --now keepalived #启动服务并设置开机自启
ip a #检查IP是否加上

3.测试是否成功:
keepalived 对后端 RS 的健康检测,故障的 RS 会自动从调度列表中被摘除
3.1.server5和server6:后端服务器同时开启httpd服务
server5和server6:
systemctl start httpd #停止服务
![]()
![]()
server4:查看链表内容,两台服务器是否正常工作
ipvsadm -Ln #查看链表
3.2server5(192.168.7.141)上:停止httpd服务,观察server4上的服务是否停止
server5:
systemctl stop httpd #停止服务
server4:
ipvsadm -ln #列表
3.2.5配置备用调式机的文件(server7)
1.将server4上的配置文件远程复制过来:
server4:
scp /etc/keepalived/keepalived.conf server7:/etc/keepalived/

2.修改配置文件内容,修改虚拟机的优先级,低于主调试机与下图相同:
server7:
vim /etc/keepalived/keepalived.conf
systemctl enable --now keepalived


3.2.6测试高可用和负载均衡功能
1.在两台后端服务器上,加入虚拟IP加入到回环Io中:
server5和server6:
ip addr add 192.168.7.100/32 dev lo
2.在测试机上面,首先测试负载均衡功能,看到交替出现的内容,即成功运行
curl 192.168.7.100 #你的VIP

3.测试高可用功能,断掉server4上的keepalived服务,观察是否在server7上找到服务:
server4:
systemctl stop keepalived
server7:
ipvsadm -Ln #能看到服务说明,高分用成功

更多推荐




所有评论(0)