目录
一、集群概述
1.集群的定义
2.集群的分类
2.1负载均衡集群(Load Balance Cluster)
2.2高可用群集(High Availability Cluster)
2.3高性能运算群集 (High Performance Computer Cluster)
二、负载均衡群集架构
1.负载调度器(Load Balancer或Director)
2.服务器池(Server Pool)
三、三种负载调度工作模式
1.NAT模式
2.TUN模式
3.DR模式
4.总结
四、LVS虚拟服务器
1.简介
2.LVS的负载调度算法
2.1轮询(Round Robin)
2.2加权轮询 (Weighted Round Robin)
2.3最少连接 (Least Connections)
2.4加权最少连接(Weighted L east Connections)
五、LVS群集创建与管理
1.创建步骤
2.LVS的管理工具
六、NAT模式LVS负载均衡群集部署
1.部署共享存储
2.配置节点服务器
3.配置负载调度器LVS
4.验证测试
集群是指由多台主机构成的计算系统,但对外只表现为一个整体,只提供一个访问入口(域名与IP地址),相当于一台大型计算机
提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载
提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果
HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点
例如:“故障切换”、“双击热备”等
以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
高性能依赖于"分布式运算”、“并行计算” , 通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
功能:
作为整个群集系统的唯一入口,处理所有外部访问请求
IP地址:使用共享的VIP(虚拟 IP 地址),也称为群集 IP 地址
高可用性:通常配置主备两台调度器以实现热备份。主调度器失效时,备用调度器可以平滑接管,确保系统的高可用性
功能:
提供实际的应用服务。每个节点都拥有独立的真实 IP 地址(RIP),只处理负载调度器分发过来的请求
容错机制:当某个节点失效时,负载调度器的容错机制会将其隔离,待故障修复后再重新纳入服务器池中
作用:
为服务器池中的所有节点提供稳定和一致的文件存取服务,确保整个群集的数据一致性和共享文件访问
实现方式:可以使用 NAS 设备(网络附加存储)或专用服务器提供 NFS 共享服务,使所有服务器节点能够访问和操作共享的存储数据
地址转换
特点:
(1)负载调度器作为所有服务器节点的网关
(2)服务器节点使用私有IP 地址,与负载调度器位于同一个物理网络
(3)安全性较高,因为服务器节点的私有IP 地址对外不可见
工作方式:
(1)客户端请求首先经过负载调度器进行地址转换,然后负载调度器将请求转发给具体的服务器节点
(2)服务器节点回应客户端的请求时,响应流量再次经过负载调度器进行地址转换,返回给客户端
IP隧道
特点:
(1)负载调度器仅作为客户端的访问入口,不再作为响应出口
(2)服务器节点分散在互联网中的不同位置,具有独立的公网IP地址
(3)服务器节点通过专用的 IP 隧道与负载调度器进行通信
工作方式:
(1)客户端请求首先经过负载调度器作为入口,然后直接到达分布在不同位置的服务器节点
(2)服务器节点响应客户端请求时,直接返回给客户端,不再经过负载调度器
直接路由
特点:
(1)负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道(2)负载调度器作为客户端的访问入口,但不作为响应的出口
工作方式:
(1)客户端请求经过负载调度器作为入口后,直接到达位于同一物理网络的服务器节点
(2)服务器节点响应客户端请求时,直接返回给客户端,不再经过负载调度器
三种负载调度工作模式各有其特点和适用场景:
NAT 模式:适合于需要保护服务器节点私有 IP 地址并控制所有流量的情况
TUN 模式:适合于服务器节点分布在不同地理位置且具有独立公网 IP 地址的情况
DR 模式:适合于服务器节点与负载调度器在同一物理网络内的情况,可以减少通信的网络开销和延迟
LVS(Linux Virtual Server)是一个开源的负载均衡软件项目,专门设计用于构建高性能、高可用性的服务器集群。它运行在基于 Linux 的系统上,并提供了多种负载均衡算法和网络传输协议的支持,使得它在企业网络和互联网应用中得到广泛应用
加载 ip_vs 模块
modprobe ip_vs
查看 ip_vs 模块版本信息
cat /proc/net/ip_vs # 确认内核对 LVS 的支持
特点:
(1)将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器)
(2)每个节点接收到的请求数量大致相等,不考虑服务器的实际负载情况和连接数
特点:
(1)根据负载调度器设置的权重值来分发请求
(2)权重值高的节点优先获得任务,分配的请求数量随权重的设定而变化
(3)适用于需要保证性能强的服务器承担更多访问流量的情况
特点:
(1)根据真实服务器已建立的连接数进行分配
(2)将收到的访问请求优先分配给当前连接数最少的节点,以达到负载均衡的目的
(3)适用于需要考虑服务器实际负载情况的场景
特点:
(1)结合了加权和最少连接两种算法的优点
(2)在真实服务器性能存在显著差异时,自动调整权重,以保证性能较高的节点能够承担更多的活动连接负载
(1)创建虚拟服务器
初始化并配置虚拟服务器,以便在群集中分配和管理流量
(2)添加、删除服务器节点动态添加或删除群集中的服务器节点,以灵活管理资源和负载
(3)查看群集及节点情况实时监控和查看群集及各节点的状态,确保系统运行的稳定性和负载均衡的效果
(4)保存负载分配策略保存和应用已配置的负载分配策略,以确保在系统重启或更新时保持一致的负载均衡行为
选项 | 功能 |
-A | 添加虚拟服务器 |
-D | 删除整个虚拟服务器 |
-s | 指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc ) |
-a | 表示添加真实服务器 (节点服务器) |
-d | 删除某一个节点 |
-t | 指定 VIP地址及 TCP端口 |
-r | 指定 RIP地址及 TCP端口 |
-m | 表示使用 NAT群集模式 |
-g | 表示使用 DR模式 |
-i | 表示使用 TUN模式 |
-w | 设置权重 (权重为 0 时表示暂停节点) |
-p | -p 60 表示保持长连接60秒 |
-l | 列表查看 LVS 虚拟服务器 (默认为查看所有) |
-n | 以数字形式显示地址、端口等信息,常与 “-l” 选项组合使用。ipvsadm -ln |
实验的需求:
1台Linux作为LVS负载调度器(ens33:172.16.58.40,ens37:10.0.0.1)2台Linux作为WEB节点服务器
1台Linux作为NFS服务器
1台Windows作为结果检测(10.0.0.12)
NFS服务器:172.16.58.10
关闭防火墙以及增强功能
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
安装NFS服务
yum install -y nfs-utils rpcbind
启动并设置NFS服务开机自启
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service
创建共享目录并设置权限
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet
配置NFS共享
vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 172.16.58.0/24(rw,sync)
/opt/benet 172.16.58.0/24(rw,sync)
发布共享
exportfs -rv
showmount -e
2个节点服务器:172.16.58.20、172.16.58.30
关闭防火墙以及增强功能
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
安装和配置Web服务
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service
安装NFS客户端工具
yum install -y nfs-utils rpcbind
systemctl start rpcbind.service
systemctl enable rpcbind.service
挂载NFS共享
web1:172.16.58.20
mount.nfs 172.16.58.10:/opt/kgc /var/www/html/
echo 'this is kgc' > /var/www/html/index.html
vim /etc/fstab
172.16.58.10:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a
web2:172.16.58.30
mount.nfs 172.16.58.10:/opt/benet /var/www/html/
echo 'this is benet' > /var/www/html/index.html
vim /etc/fstab
172.16.58.10:/opt/benet /var/www/html nfs defaults,_netdev 0 0
mount -a
LVS负载调度器:172.16.58.40
关闭防火墙以及增强功能
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
配置IP转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
或者
echo '1' > /proc/sys/net/ipv4/ip_forward
配置SNAT转发规则
iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 172.16.58.10.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
加载LVS内核模块
modprobe ip_vs #手动加载ip_vs模块
cat /proc/net/ip_vs #查看ip_vs版本信息
安装ipvsadm管理工具
yum install -y ipvsadm
启动ipvsadm服务前保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
或者
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
配置负载分配策略
ipvsadm -C
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 172.16.58.20:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 172.16.58.30:80 -m -w 1
查看和保存策略
ipvsadm
ipvsadm -ln
ipvsadm-save > /etc/sysconfig/ipvsadm
管理负载均衡策略:
删除某一节点服务器
ipvsadm -d -t 10.0.0.1:80 -r 172.16.58.20:80
删除整个虚拟服务器
ipvsadm -D -t 10.0.0.1:80
停止服务(清除策略)
systemctl stop ipvsadm
启动服务(重建规则)
systemctl start ipvsadm
恢复LVS策略
ipvsadm-restore > /etc/sysconfig/ipvsadm
在windows上使用浏览器访问10.0.0.1,刷新浏览器测试负载均衡
PS:刷新间隔时间需要稍长一点