LVS NAT模式负载均衡群集部署

news2025/1/23 17:29:18

目录

1 群集(集群) cluster

1.1 群集的类型

2 LVS的工作模式及其工作过程

2.1 NAT模式(VS-NAT)

2.2 直接路由模式(VS-DR)

2.3 IP隧道模式(VS-TUN)

3 LVS-NAt 模式配置步骤

3.1 部署共享存储

3.2 配置节点服务器

3.3 配置负载调度器

3.3.1 加ens36 网卡并进行相关配置

3.3.2 配置SNAT转发规则

3.3.3 加载LVS内核模块

3.3.4 安装ipvsadm 管理工具

3.3.5 配置负载分配策略

3.4 测试 LVS 群集


1 群集(集群) cluster

集群就是将多台主机作为一个整体,对外提供相同的服务

特点:由多个主机构成,都干同样的一件事,对外界展现为一个整体

场景:高并发,并发量过大时候加服务器的方式就是向外扩展(横向扩展),就是集群

1.1 群集的类型

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

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

3)高性能运输群集 HPC
通过云计算或分布式计算来获取高性能的CPU、内存等资源,来提高整体运算能力

2 LVS的工作模式及其工作过程

LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式)VS/DR(路由模式)VS/TUN(隧道模式)

2.1 NAT模式(VS-NAT)

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

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

  • 优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。
  • 缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。

2.2 直接路由模式(VS-DR)

DR 直接路由Direct Routing
调节器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调节器。(与NAT模式的区别)节点服务器与调节器是部署在同一物理网络内,因此不需要建立专用的IP隧道。(与TUN模式的区别)

DR 模式是企业首选的LVS模式。

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

  • 优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。
  • 缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

2.3 IP隧道模式(VS-TUN)

TUN IP隧道 IP Tunnel
调节器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调节器。但是由于节点服务器需要部署在不同位置的公网环境中,需要具有独立的公网IP,调节器与节点服务器是通过专用的IP隧道实现相互通信的。因此IP隧道模式的成本较高、安全性较低,且IP隧道需要额外的封装和解封装,性能会受到一定的影响。

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

  • 优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。
  • 缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持“IP Tunneling”。

3 LVS-NAt 模式配置步骤

  1. 配置NFS共享存储
  2. 节点服务器安装web服务,注意:默认网关要指向调节器的IP地址,测试的时候关闭连接保持
  3. 调节器服务器要开启IP路由转发功能和设置SNAT等iptables 规则,安装ipvsadm工具,配置虚拟服务器和真实节点服务器相关配置
  4. 客户端测试的时候网关要指向 调节器的IP地址
     

负载调度器:内网关 ens33:192.168.30.105,外网关 ens36:12.0.0.1

Web节点服务器1:192.168.30.107

Web节点服务器2:192.168.30.108

NFS服务器:192.168.30.106

客户端:12.0.0.12

3.1 部署共享存储

NFS服务器:192.168.30.106

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.service

systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/cyw /opt/cww
chmod 777 /opt/cyw /opt/cww
echo 'Cao yu wang is a bood boy !' > /opt/cyw/index.html
echo 'FBI open the door !' > /opt/cww/index.html

vim /etc/exports
/usr/share *(ro,sync)
/opt/cyw 192.168.30.0/24(rw,sync)
/opt/cww 192.168.30.0/24(rw,sync)

--发布共享---
exportfs -rv

安装所需软件 nfs、rpcbind并启动

配置静态网页

NFS(Network File System)共享的目录和权限

发布共享

3.2 配置节点服务器

192.168.30.107、192.168.30.108

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

yum install nfs-utils rpcbind -y
showmount -e 192.168.80.13

systemctl start rpcbind
systemctl enable rpcbind

--192.168.80.100---
mount.nfs 192.168.80.13:/opt/kgc /var/www/html

vim /etc/fstab
192.168.80.13:/opt/kgc		/var/www/html	nfs		defaults,_netdev	0  0

--192.168.80.101---
mount.nfs 192.168.80.13:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html

vim /etc/fstab
192.168.80.13:/opt/benet	/var/www/html	nfs 	defaults,_netdev	0  0

关闭防火墙及selinux

两台服务器安装httpd服务并开启

安装所需软件 nfs、rpcbind并启动

                                                    ---192.168.30.107---

挂载

                                                     ---192.168.30.108---  

挂载

3.3 配置负载调度器

内网关 ens33:192.168.30.105,外网关 ens36:12.0.0.1

3.3.1 加ens36 网卡并进行相关配置

配置ens36

重启并网络联通测试

3.3.2 配置SNAT转发规则

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

或 echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p

iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

3.3.3 加载LVS内核模块

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");

do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;

done

3.3.4 安装ipvsadm 管理工具

ipvsadm 工具选项说明:

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

启动服务前须保存负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm

3.3.5 配置负载分配策略

(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)

ipvsadm -C     #清除原有策略
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.30.107:80 -m -w 1
ipvsadm -a -t 12.0.0.1:80 -r 192.168.30.108:80 -m -w 1

-A	添加虚拟服务器
-s	指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a	表示添加真实服务器 (后端节点服务器)
-t	指定 VIP地址及 TCP端口
-m	表示使用 NAT群集模式.
-w	设置权重 (权重为 0 时表示暂停节点)

ipvsadm     #启动策略
ipvsadm -ln    #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略

删除时候使用

ipvsadm -d -t 12.0.0.1:80 -r 192.168.30.107:80 -m -w 1     #删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.1:80     #删除整个虚拟服务器
systemctl stop ipvsadm     #停止服务(清除策略)
systemctl start ipvsadm    #启动服务(重建规则)
ipvsadm-restore > /etc/sysconfig/ipvsadm      #恢复LVS策略

配置调度器的网关

web01
vim /etc/sysconfig/network-scripts/ifcfg-ens33 
注释掉DNS,将lns(lb负载调度器)的ip配置成web01的网关
同理web02一致
systemctl restart network  重启网络

web1

web2

3.4 测试 LVS 群集

在一台IP为12.0.0.20 的客户机使用浏览器访问 http://12.0.0.1/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点(或者关闭Web服务的连接保持)。

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

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

相关文章

【全网最全protobuf中文版教程】

protocal buffer Notes 文章目录 protocal buffer Notes为什么是ProtoBufprotoBuf数据要素字段编号标签字段类型标量枚举复合类型mapgroup 导入其他消息类型编码解码编码解码 proto生成文件 为什么是ProtoBuf 通常,程序运行时产生的一些结构化数据会经历存储或者与…

基于Java+SpringBoot+Vue校园求职招聘系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

docker系列(2) - 常用命令篇

文章目录 2. docker常用命令2.1 参数说明(tomcat案例)2.2 基本命令2.3 高级命令2.4 其他 2. docker常用命令 2.1 参数说明(tomcat案例) 注意如果分成多行,\后面不能有空格 # 拉取运行 docker run \ -d \ -p 8080:8080 \ --privilegedtrue \ --restartalways \ -m…

docker系列(5) - docker仓库

文章目录 5 docker仓库5.1 创建命名空间5.2 创建镜像仓库5.3 设置访问凭证5.3 镜像仓库命令信息5.4 登录阿里云上传镜像5.5 拉取镜像运行5.6 私有仓库(docker Registry)5.6.1 安装docker registry5.6.2 准备镜像5.6.2 本地私服仓库5.6.3 推送到私服仓库5.6.4 拉取私服镜像 5 do…

信息系统项目管理师(第四版)教材精读思维导图-第十三章项目资源管理

请参阅我的另一篇文章,综合介绍软考高项: 信息系统项目管理师(软考高项)备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图源文件 13.1 管理基础 13.2 管理过程 13.3 规划资源管理 13.4 估算活动资源 13.5…

2023/9/10周报

目录 摘要 文献阅读1 1、标题和提出问题 2、小波变换 3、Encoder和Decoder 4、模型结构 5、实验 文献阅读2 1、标题和提出问题 2、高斯扩散模型和烛台图 3、研究方法 4、实验准备 5、实验结果 总结 摘要 本周阅读了两篇论文,其一为一种基于空气质量时…

数字图像滤波的本质

一、说明 在数字时代,图像是我们交流和表达不可或缺的一部分。从社交媒体到医学成像,图像的质量和内容非常重要。这就是图像过滤和卷积领域介入的地方,为我们提供了一个转换和完善这些视觉叙事的工具包。 图像过滤不仅仅是让照片看起来更好;这…

浙大MBA二战上岸:笔试备考辛酸路

作为一个即将进入三十而立年纪的考生,我深切感受到了压力的存在。在决定是否要将这么多时间和精力投入到考研中时,我开始思考这决定是否值得。毕竟参加二战考试需要付出大量的时间成本和努力。最终经过反复权衡和深思熟虑,我认为这是值得的。…

总结 - 组件通用封装思路(组件封装)

组件封装: 1. 不变; 2. 变:①prop ②slot插槽 详细总结在文末。 --------------------------------------------------------------------------------------------------- 问题:结构相似,内容不同 --》 可以用组…

注意力机制讲解与代码解析

一、SEBlock(通道注意力机制) 先在H*W维度进行压缩,全局平均池化将每个通道平均为一个值。 (B, C, H, W)---- (B, C, 1, 1) 利用各channel维度的相关性计算权重 (B, C, 1, 1) --- (B, C//K, 1, 1) --- (B, C, 1, 1) --- sigmoid 与原特征相…

【Linux】粗谈权限

背景知识 我们日常口头讲的Linux操作系统,狭义来说只是指它的内核,广义上来说指它的内核加外壳(shell,配套的程序)。 那么为什么一定要有外壳呢?shell外壳主要有以下两个功能 1.命令行解释器 将用户输入的…

趣解设计模式之《办理入职这么难吗?》

〇、小故事 小王大学毕业,经过大学期间的刻苦学习,终于成功的面试上了一家公司。按照约定的时间,小王兴高采烈的来到公司前台去办理入职手续。 “您好,我是来办理入职手续的”小王对前台妹妹说,前台妹妹看都没看他一…

管理类联考——数学——汇总篇——知识点突破——路程

⛲️ 路程问题是根据速度、时间、路程之间的关系,研究物体相向、相背和同向运动的问题,解决路程问题常用方法: (1)分解。将综合性的题目先分解成若干个基本题,再按其所属类型,直接利用基本数量…

SpringBoot结合MyBatis实现多数据源配置

SpringBoot结合MyBatis实现多数据源配置 一、前提条件 1.1、环境准备 SpringBoot框架实现多数据源操作,首先需要搭建Mybatis的运行环境。 由于是多数据源,也就是要有多个数据库,所以,我们创建两个测试数据库,分别是…

Alibaba(获得店铺的所有商品) API接口

为了进行电商平台 的API开发,首先我们需要做下面几件事情。 1)开发者注册一个账号 2)然后为每个alibaba应用注册一个应用程序键(App Key) 。 3)下载alibaba API的SDK并掌握基本的API基础知识和调用 4)利…

持安-大连万达集团零信任项目入选中国信通院2023零信任优秀案例

2023年8月25日,以“链接云端,可信而安”为主题的“2023首届SecGo云和软件安全大会”在京隆重召开。会上,中国信息通信研究院重磅揭晓了“安全守卫者计划”优秀案例评选结果。 零信任办公安全技术创新企业持安科技,与用户大连万达…

SpringBoot整合MQTT(MqttClient)

一、SpringBoot整合MQTT 创建项目&#xff0c;引入 MQTT依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.12.RELEASE</version></dep…

java读取jar包中的程序版本号

java程序打包后的jar如下图所示&#xff1a; 可以看到META-INF目录下的三处均可以读取到程序的版本号&#xff1a; MANIFEST.MFbuild-info.propertiesmaven/xxx/xx/pom.properties 或 pom.xml 一、MANIFEST.MF 程序版本号字段 即 Implementation-Version Manifest-Version:…

【Java】之继承

Java中使用extends关键字&#xff0c;让我们在类和类之间建立联系。 使用继承的好处&#xff1a; 可以将多个类中重复的代码&#xff0c;抽象至父类中供子类使用。 子类可以在父类上的基础上继续增强&#xff0c;使子类可以有自己独特的性质和功能。 特点&#xff1a; 在J…

LASSO回归

LASSO回归 LASSO(Least Absolute Shrinkage and Selection Operator&#xff0c;最小绝对值收敛和选择算子算法)是一种回归分析技术&#xff0c;用于变量选择和正则化。它由Robert Tibshirani于1996年提出&#xff0c;作为传统最小二乘回归方法的替代品。 损失函数 1.线性回…