LVS负载均衡集群

news/2024/9/30 7:16:29

目录
  • 1.负载均衡群集的原理
    • (1)群集的含义
    • (2)群集的类型
    • (3)LVS负载均衡的三种工作模式
    • (4)LVS调度算法
  • 2.LVS-NAT模式部署
  • 3.理解LVS-DR工作原理
    • (1)LVS-DR数据包流向分析
    • (2)LVS-DR中的ARP问题
  • 4.LVS-DR模式部署

1.负载均衡群集的原理

(1)群集的含义

Cluster,集群、群集;由多个主机构成,都干相同的一件事,对外展现为一个整体,只提供-访问入口(域名或IP地址),相当于一台大型计算机。

解决方法:
使用价格昂贵的小型机、大型机;使用多台相对廉价的普通服务器构建服务群集;
通过整合多台服务器,使用 LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务。
在企业中常用的一种群集技术--LVS(Linux Virtual Server,Linux虚拟服务器)

(2)群集的类型

负载均衡群集 LB
提高系统的响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力
典型代表:软件类(Nginx LVS HAProxy SLB) 硬件类(F5 绿盟)

高可用群集 HA
提高系统的可靠性,减少服务中断时间,确保服务的连续性(通过使用 N 个 9 来代表高可用的指标)
典型代表:keepalived、heartbeat

高性能计算群集 HPC
将多台服务器的硬件资源整合成资源池以获取高性能的CPU、内存等资源,来提高整体运算能力
典型代表:云计算、分布式计算

(3)LVS负载均衡的三种工作模式

(1)NAT————地址转换
调度器会作为所有节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,所以调度器会承载双向流量的负载压力,可能会成为整个群集的性能瓶颈。
由于节点服务器都会处于内网环境并使用私网IP,所以NAT模式具有一定的安全性。

(2)TUN————IP隧道————IP Tunnel
调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。
由于节点服务器需要部署在互联网环境中,所以需要有独立的公网IP。
调度器与节点服务器是通过专用的IP隧道相互通信。
因此IP隧道模式的成本较高、网络安全性较低密,且数据在IP隧道传输的过程中需要额外的封装和解封装过程,性能也会受到一定的影响。

(3)DR————直接路由————Direct Rounting
调度器也是仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。(与NAT模式的区别)
节点服务器与调度器是部署在同一个物理网络中,因此不需要专用的IP隧道。(与IP隧道模式的区别)
DR模式是企业首选的LVS模式。

(4)LVS调度算法

rr(轮询)
wrr(加权轮询)
lc(最小连接)
sh(源地址哈希)
dh(目的地址哈希)
wlc(加权最小连接):优先分配请求给 <连接数>/<权重> 的值最小的节点服务器
lblc(基于地址的最小连接):如果服务器末超载且可用,则针对相同的目的地址的流量被发送到同一后端服务器;否则,流量被发送到连接数较少的服务器
sed(最短预期延迟)
nq(永不排队)

2.LVS-NAT模式部署

ipvsadm 工具选项说明
-A 添加虚拟服务器
-D 删除整个虚拟服务器
-s 指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a 表示添加真实服务器(节点服务器)
-d 删除某一个节点
-t 指定 VIP地址及 TCP端口
-r 指定 RIP地址及 TCP端口
-m 表示使用 NAT群集模式
-g 表示使用 DR模式
-i 表示使用 TUN模式
-w 设置权重(权重为 0 时表示暂停节点)
-p 60 表示保持长连接60秒(默认关闭连接保持)
-l 列表查看 LVS 虚拟服务器(默认为查看所有)
-n 以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln [-t VIP:PORT]


1.部署共享存储(NFS服务器:20.0.0.140)

yum install -y nfs-utils rpcbind
mkdir /share  #共享目录
mkdir /share2vim /etc/exports
/share 20.0.0.0/24(ro)
/share2 20.0.0.0/24(ro)systemctl enable --now rpcbind nfs
showmount -e
echo 'this is nginx web1 test page' > /share/test.html
echo 'this is nginx web2 test page' > /share2/test.html
exportfs -avr


2.配置节点服务器(20.0.0.110/20.0.0.130)

cd /etc/yum.repos.d/
ls
rz -E 上传 nginx.repo
yum install -y nginx##查看路径cd /etc/nginx/lscd conf.d/vim default.conf(查看路径)
mkdir /usr/share/nginx/html/xlb666
vim /etc/fstab
20.0.0.140:/share  /usr/share/nginx/html/xlb666  nfs  defaults  0 020.0.0.140:/share2  /usr/share/nginx/html/xlb666  nfs  defaults  0 0  ##20.0.0.130mount -a 
df -hT
ls xlb666/vim /etc/nginx/nginx.conf
keepalive_timeout 0;systemctl start nginx
systemctl enable nginxcd /etc/sysconfig/network-scripts/
vim ifcfg-ens33
网关20.0.0.30
#DNS1systemctl restart network






20.0.0.130,其余一样




网关




3.配置负载调度器(20.0.0.100内网关 ens33:20.0.0.30,外网关 ens36:12.0.0.30)

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens33
20.0.0.30
#GATEWAY        
#DNS1vim ifcfg-ens36
IPADDR=12.0.0.30
#GATEWAY        
#DNS1systemctl restart networkvim /etc/sysctl.conf
net.ipv4.ip_forward = 1sysctl -p
##配置SNAT转发规则
iptables -F && iptables -t nat -F
iptables -nL
iptables -nL -t nat
iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 12.0.0.30
iptables -nL -t nat##加载LVS内核模块
cd /usr/lib/modules/$(uname -r)
ls
cd kernel/
ls
cd net/
ls
cd netfilter/
ls
cd ipvs/
ls
pwd  ##/usr/lib/modules/3.10.0-1160.71.1.el7.x86_64/kernel/net/netfilter/ipvsfor i in $(ls | awk -F. '{print $1}')
do
modprobe $i
done##for i in $(ls | awk -F. '{print $1}');do;modprobe $i;done
lsmod
##安装ipvsadm 管理工具
yum install -y ipvsadm
rpm -q ipvsadm
systemctl start ipvsadm
journalctl -u ipvsadm 
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm
systemctl status ipvsadm
systemctl enable ipvsadm##配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C 	#清除原有策略
ls
ipvsadm -A -t 12.0.0.30:80 -s rr
ipvsadm -a -t 12.0.0.30:80 -r 20.0.0.110:80 -m
ipvsadm -a -t 12.0.0.30:80 -r 20.0.0.130:80 -m
ipvsadm
ipvsadm -ln
ipvsadm-save > /opt/ipvs.txt  #保存策略
ipvsadm-restore < /opt/ipvs.txt  #恢复 LVS策略






配置SNAT转发规则


加载LVS内核模块




安装ipvsadm 管理工具


验证




3.理解LVS-DR工作原理

(1)LVS-DR数据包流向分析

为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4

Client向目标VIP发出请求,Director(负载均衡器)接收
IP包头及数据帧头信息

Director根据负载均衡算法选择RealServer_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送
IP包头及数据帧头信息

RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealServer事先绑定了VIP),于是处理这个报文。随后重新封装报文,将响应报文通过l0 接口传送给物理网卡然后向外发出。
IP包头及数据帧头信息

Client将收到回复报文。Client认为得到正常的服务而不会知道是哪一台服务器处理的
注意:如果跨网段,则报文通过路由器经由Internet返回给用户

(2)LVS-DR中的ARP问题

在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的素乱。
当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播;只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播

对节点服务器进行处理,使其不响应针对VIP的ARP请求。
使用虚接口lo:0承载VIP地址;设置内核参数arp_ignore=1:系统只响应目的IP为本地IP的ARP请求

4.LVS-DR模式部署

1)部署NFS共享存储
2)部署Web服务器,注意:配置lo:0虚接口承载VIP;修改内核参数 arp_ignore=1、arp_announce=2防止网关ARP紊乱问题;添加路由 route add -host dev lo:0
3)部署调度器,注意:配置ensXX:0虚接口承载VIP;修改内核参数ip_forward=0、send_redirects=0关闭IP转发和重定向功能;安装ipvsadm工具,添加虚拟服务器和真实服务器的配置,使用-g选项选择LVS-DR模式
4)客户端访问VIP进行测试,注意:如何客户端跨网段,则调度器和节点服务器的默认网关要指向网关路由器的地址

配置负载调度器20.0.0.100
yum install -y ipvsadm
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm
systemctl status ipvsadm
systemctl enable ipvsadm
modprobe ip_vs
lsmod
cat /proc/net/ip_vs
ls
ifconfig
##配置虚拟 IP 地址
cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-lo ifcfg-ens33:0
ls
vim ifcfg-ens33:0
DEVICE=ens33:0
IPADDR=20.0.0.88
NETMASK=255.255.255.255
ONBOOT=yessystemctl restart network
ifconfig##调整 proc 响应参数
#由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。
vim /etc/sysctl.conf  
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0##配置负载分配策略
sysctl -p
ipvsadm -ln  #查看节点状态,Route代表 DR模式
ipvsadm -C  #清空
ipvsadm -A -t 20.0.0.88:80 -s rr
ipvsadm -a -t 20.0.0.88:80 -r 20.0.0.110:80 -g
ipvsadm -a -t 20.0.0.88:80 -r 20.0.0.130:80 -g
ipvsadm
ipvsadm-save -n > /opt/ipvsadm.bak
cat !$










部署共享存储 20.0.0.140
yum -y install nfs-utils rpcbind
mkdir /share/{xlb666,xlb888} -p
ls /share/
echo '<hl>this is xlb666 test web page!</h1>' > /share/xlb666/test.html
echo '<hl>this is xlb888 test web page!</h1>' > /share/xlb888/test.htmlvim /etc/exports
/share/xlb666 20.0.0.0/24(ro)
/share/xlb888 20.0.0.0/24(ro)systemctl restart rpcbind nfs
systemctl enable --now rpcbind nfs
showmount -e



配置节点服务器nginx (两个)20.0.0.110/20.0.0.130
##此地址仅用作发送 Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口 lo∶0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。
systemctl start rpcbind
showmount -e 20.0.0.140cd /etc/yum.repos.d/
ls
rz -E   上传 nginx.repo
yum install -y nginx
systemctl start nginx
ls
mount 20.0.0.140:/share/xlb666 /usr/share/nginx/html/mount 20.0.0.140:/share/xlb888 /usr/share/nginx/html/
ls !$
cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-lo ifcfg-lo:0	
lsvim ifcfg-lo:0
DEVICE=lo:0
IPADDR=20.0.0.88
NETMASK=255.255.255.255
ONBOOT=yessystemctl restart network
systemctl restart nginx
systemctl enable nginx
ifconfig##调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突
vim /etc/sysctl.conf   #解决网关路由器ARP紊乱的问题
net.ipv4.conf.lo.arp_ignore = 1	  #节点服务器只响应目的IP为物理网卡接口IP的ARP请求
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2	 #节点服务器不使用IP包的源IP作为ARP请求报文的源IP,而采用发送接口的IP来作为ARP请求报文的源IP
net.ipv4.conf.all.arp_announce = 2sysctl -p  #加载
route -n   #查看路由
route add -host 20.0.0.88 lo:0  #添加路由
route -nvim /etc/nginx/nginx.conf
keepalive_timeout 0;systemctl restart nginxhttp://20.0.0.88/test.html




节点服务器20.0.0.130 挂载目录不同,其余相同








本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/45267.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

全光万兆时代来临:信而泰如何助力F5G-A(50PONFTTR)技术发展

技术背景 F5G-A(Fifth Generation Fixed Network-Advanced,第五代固定网络接入)是固定网络技术的一次重大升级,代表了光纤网络技术的最新发展。F5G-A旨在提供更高的带宽、更低的延迟、更可靠的连接以及更广泛的应用场景。 F5G-A六大特征:新技术的发展也带来了更多的测试挑…

Bean Searcher v4.3.0 重大更新!

Bean Searcher 是一款专注高级查询的只读 ORM 开源项目。本次更新带来了大家期待已久的功能 ...往期阅读:我这样写代码,比直接使用 MyBatis 效率提高了 100 倍 最近火起的 Bean Searcher 与 MyBatis Plus 倒底有啥区别? Bean Searcher v3.8.0 一大波新特性来袭Bean Searcher…

探索2024年的软件开发

2024年6月了,目前的软件开发已经到了什么阶段了? 哪个阶段是开发的重难点?CI/CD吗?容器化/容器编排?GPU、TPU调度?提前小结: 1、CI/CD 是 现代化软件开发的核心。 公司有,独立开发者也应该有一套,可以大大提高开发效率。 2、代码生成LLM大模型 需要积极探索。 作者只用…

vscode process terminal 3221225506 终端打不开 默认打开powershell

可能旧的 版本,旧的文章不适用 可能内网环境,识别不了终端 现在的解决方式是,打开setting,搜索“”“powershell” ,定位到 ,修改default profile 选项为 Command Prompt附 网上的旧方法不适用 ,如 2021年的文章 https://blog.csdn.net/qq_40021015/article/details/113…

使用‘消除’技术绕过LLM的安全机制,不用训练就可以创建自己的nsfw模型

开源的大模型在理解和遵循指令方面都表现十分出色。但是这些模型都有审查的机制,在获得被认为是有害的输入的时候会拒绝执行指令,例如会返回“As an AI assistant, I cannot help you.”。这个安全功能对于防止误用至关重要,但它限制了模型的灵活性和响应能力。 在本文中,我…

转换协议字节

转换协议字节/// <summary>/// 转换协议字节帮助类/// </summary>public class ByteUtil{/// <summary>/// byte数组转换int/// </summary>/// <param name="src"></param>/// <param name="offset"></param…

硬件开发笔记(十八):核心板与底板之间的连接方式介绍说明:板对板连接器

前言核心板与底板之间的连接方式至少就有四种以上,包括且不限于:DIP直插、板对板连接器、邮票孔和金手指。 常用连方式介绍DIP直插DIP就是以前的元器件封装,直接DIP插入焊接,宿便找了个,如下图:  可以定制自己的,一般来说,没有高速电路问题不大,但是这种方式对于复杂…

大模型应用之路:从提示词到通用人工智能(AGI)

大模型在人工智能领域的应用正迅速扩展,从最初的提示词(Prompt)工程到追求通用人工智能(AGI)的宏伟目标,这一旅程充满了挑战与创新。本文将探索大模型在实际应用中的进展,以及它们如何为实现AGI铺平道路。 基于AI大模型的推理功能,结合了RAG(检索增强生成)、智能体(…