目录
一:LVS群集应用基础
1:群集技术概述
1.1:群集的类型
负载均衡群集:
目的:将工作任务均匀分配到多个节点,以提高系统整体处理能力、响应速度和资源利用率。
典型应用:Web服务器群集、数据库读写分离、流量分发(如LVS、Nginx、F5等)。
特点:注重横向扩展(Scale-out),通过分散请求避免单点过载。
高可用群集:
目的:通过冗余节点确保服务持续可用,最小化因硬件/软件故障导致的停机时间。
典型应用:关键业务系统(如银行交易、数据库主从切换)、故障自动转移(如Keepalived、Pacemaker)。
特点:通过心跳检测(Heartbeat)和故障切换(Failover)实现高可靠性。
高性能运算群集:
目的:整合多台服务器的计算资源,解决复杂科学计算或大规模并行处理任务。
典型应用:气象模拟、基因测序、物理建模(如OpenMPI、Kubernetes批处理任务)。
特点:注重纵向性能(Scale-up),通常需要高速网络(如InfiniBand)和专用调度软件。
1.2:负载均衡的分层结构
第一层:负载调度器:这是访问整个群集系统的唯一入口,对外使用所有服务器共有的 VIP(Virtual IP,虚拟 IP)地址,也称为群集 IP 地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
第二层:服务器池:群集所提供的应用服务(如 HTTP、FTP)由服务器池承担,其中每个节点具有独立的 RIP(Real IP,真实 IP)地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
第三层:共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。在 Linux/UNIX 环境中,共享存储可以使用 NAS 设备,或者提供 NFS(Network File System,网络文件系统)共享服务的专用服务器。
1.3:负载均衡的工作模式
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。在 Linux/UNIX 环境中,共享存储可以使用 NAS 设备,或者提供 NFS(Network File System,网络文件系统)共享服务的专用服务器。
- 地址转换:
简称 NAT 模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。服务器节点使用私有 IP 地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。
- IP隧道:
简称 TUN 模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的 Internet 连接直接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中的不同位置,具有独立的公网 IP 地址,通过专用 IP 隧道与负载调度器相互通信。
- 直接路由:
简称 DR 模式,采用半开放式的网络结构,与 TUN 模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道。
对比总结
工作模式 | 调度方式 | 性能 | 适用场景 | 复杂度 |
---|---|---|---|---|
NAT | 修改IP/端口 | 较低 | 中小规模集群,安全性要求高 | 中等 |
TUN | IP隧道封装 | 较高 | 跨机房、分布式系统 | 高 |
DR | 修改MAC地址 | 最高 | 高性能、低延迟场景 | 中等 |
2:LVS虚拟服务器
2.1:LVS的负载调度算法
轮询(Round Robin, rr):
- 将请求依次分配给每个服务器节点,实现简单轮转分配。
- 适用于服务器性能相近的场景。
加权轮询(Weighted Round Robin, wrr):
- 在轮询的基础上,根据服务器节点的权重分配请求,权重高的节点处理更多请求。
- 适用于服务器性能差异较大的场景。
最少连接(Least Connections, lc):
- 将请求分配给当前连接数最少的服务器节点,实现动态负载均衡。
- 适用于长连接或会话时间差异较大的服务。
加权最少连接(Weighted Least Connections, wlc):
- 在最少连接的基础上,结合服务器节点的权重分配请求,权重高的节点处理更多连接。
- 是LVS的默认调度算法,兼顾性能和负载均衡效果。
2.2:使用ipvsadm管理工具
#安装包ipvsadm
dnf -y install ipvsadm
ipvsadm -v
(1)创建虚拟服务器
#创建虚拟服务器(集群)
ipvsadm -A -t 172.16.16.172:80 -s wrr
-A:添加一个虚拟服务器(集群地址)
-t 172.16.16.172:群集地址
-s:算法
wrr:加权轮询
(2)添加服务器节点
ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.202:80 -m -w 1
ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.203:80 -m -w 1
-r:真实的服务器地址
-m:nat模式(地址伪装)
-w:权重
(3)查看群集节点状态
查看状态:ipvsadm-save
ipvsadm -ln
(4)删除服务器节点
ipvsadm -d -r 192.168.10.202:80 -t 172.16.16.172:80
(5)保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
cat /etc/sysconfig/ipvsadm #确认保存结果
systemctl stop ipvsadm #停止服务(清除策略)
systemctl start ipvsadm #启动服务(重建规则)
3:NFS共享存储服务
NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS 也是 NAS 存储设备必然支持的一种协议。
3.1:使用NFS发布共享资源
NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在 OpenEuler 系统中,需要安装 nfs - utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。
(1)安装软件包
提供 RPC 支持的服务为 rpcbind,提供 NFS 共享的服务为 nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启用。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。
[root@localhost ~]# yum -y install nfs - utils rpcbind
[root@localhost ~]# systemctl enable nfs - server
[root@localhost ~]# systemctl enable rpcbind
(2)设置共享目录
#设置共享目录
mkdir -p /opt/wwwroot
vi /etc/exports
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)
(3)启动NFS服务程序
#启动服务
systemctl start rpcbind
systemctl start nfs
netstat -anpt | grep rpc
(4)查看本机发布的NFS共享目录
showmount -e
3.2:在客户机中访问NFS共享资源
NFS 协议的目标是提供一种网络文件系统,因此对 NFS 共享的访问也使用 mount 命令来进行挂载,对应的文件系统类型为 nfs。既可以手动挂载,也可以加入 /etc/fstab 配置文件来实现开机自动挂载。考虑到群集系统中的网络稳定性,NFS 服务器与客户机之间最好使用专有网络进行连接。
(1)安装软件包
若要正常访问 NFS 共享资源,客户机中也需要安装 rpcbind 软件包,并启动 rpcbind 系统服务。另外,为了使用 showmount 查询工具,建议将 nfs - utils 软件包也一并装上。
systemctl stop firewalld
setenforce 0 #关闭防火墙
yum -y install nfs-utils rpcbind #安装软件包
systemctl start rpcbind
systemctl start nfs
#测试访问连接
curl 172.16.16.172
ipvsadm -ln
(2)手动挂载NFS共享目录
以 root 用户身份执行 mount 操作,将 NFS 服务器共享的 /opt/wwwroot 目录挂载到本地目录 /var/www/html。
[root@localhost ~]# mount 192.168.10.104:/opt/wwwroot /var/www/html
[root@localhost ~]# tail -1 /etc/mtab //确认挂载结果
192.168.10.104:/opt/wwwroot /var/www/html nfs4 rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.10.101,local_lock=none,addr=192.168.10.104 0 0
[root@localhost ~]# vi /var/www/html/index.html //在客户机创建测试文件
Real Web Server Document
(3)fstab自动挂载设置
修改 /etc/fstab 配置文件,加入 NFS 共享目录的挂载设置。注意将文件系统类型设为 nfs,挂载参数建议添加_netdev(设备需要网络)。
[root@localhost ~]# vi /etc/fstab
……//省略部分信息
192.168.10.104:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0
二:案例:地址转换模式(LVS-NAT)
1:准备案例环境
主机 | 操作系统 | ip地址 | 应用 |
LVS | openEuler 24.03 | 外网:172.16.16.172 内网:192.168.10.101 | Ipvsadm |
web1 | openEuler 24.03 | 192.168.10.102 | Apache,nfs,bind-utils |
web2 | openEuler 24.03 | 192.168.10.103 | Apache,nfs,bind-utils |
nfs | openEuler 24.03 | 192.168.10.104 | nfs,bind-utils |
客户机 | windows10 | 172.16.16.100 | ---------- |
2:配置负载调度器
(1)开启路由转发规则
#修改内核配置文件
vim /etc/sysctl.conf
修改:net.ipv4.ip_forward=1
sysctl -p
(2)添加网卡,仅主机模式,作为vip
#调度器关机,并添加网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
修改:IPADDR=172.16.16.172,网卡名
注释网关,dns1=114.114.114.114
(其他不变)
重启网卡:nmcli c reload
nmcli c up ens36
(3)配置负载分配策略
#创建虚拟服务器(集群)
ipvsadm -A -t 172.16.16.172:80 -s wrr
-A:添加一个虚拟服务器(集群地址)
-t 172.16.16.172:群集地址
-s:算法
wrr:加权轮询
ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.202:80 -m -w 1
ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.203:80 -m -w 1
-r:真实的服务器地址
-m:nat模式(地址伪装)
-w:权重
查看状态:ipvsadm-save
ipvsadm -ln
3:配置节点服务器
(1)修改网关
#修改网卡
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改网关:192.168.10.201( 201(调度器))
重启网卡:nmcli c reload
nmcli c up ens33
(2)安装httpd,创建测试网页
systemctl stop firewalld
setenforce 0 #关闭防火墙
dnf -y install httpd #安装网站
systemctl start httpd #开启服务
挂载:mount 192.168.10.204:/opt/wwwroot /var/www/html
确认挂载:tail -l /etc/mtab
vim /var/www/html/index.html
(3)启用httpd服务程序
#启动服务
systemctl start rpcbind
systemctl start nfs
netstat -anpt | grep rpc
4:测试LVS群集
#测试访问连接
curl 172.16.16.172
ipvsadm -ln #查看状态
ipvsadm -lnc