如何部署LVS负载均衡集群(NAT模式)

news2024/11/27 22:23:33

目录

一、集群

负载均衡集群(Load Balance Cluster)

高可用集群(High Availability Cluster)

高性能运算集群(High Performance Computer Cluster)

二、负载均衡工作模式

VIP地址特性(虚拟IP地址)

VIP地址的好处

NAT模式(地址转换)

数据流向

TUN模式(IP隧道)

DR模式(直接路由)

DR模式特点

优点与缺点

优点

缺点

三、内核态与用户态

内核态

用户态

内核态与用户态的区别

内核态的特点

用户态的特点

四、LVS主要作用

LVS与Nginx比较

LVS负载调度算法

轮询(Round Robin)

加权轮询(Weighted Round Robin)

最少连接(Last Connections)

加权最少连接(Weighted Least Connections)

五、ipvsadm工具

ipvsadm工具选项

六、LVS-NAT模式部署

第一步 关闭防火墙安全机制

第二步 安装依赖环境 

第三步  开启服务

第四步 创建共享目录

第五步 给目录文件赋权

第六步 设置共享配置文件

第七步 发布共享目录并查看

第八步 配置第二台虚拟机

第九步 安装HTTP服务

第十步  开启HTTP服务

第十一步 安装共享依赖环境

第十二步 按顺序开启服务

第十三步 测试查看共享地址

第十四步 创建网页执行文件

第十五步 创建永久挂载

第十六步 查看挂载是否成功

第十七步 部署第三台虚拟机

第十八步 安装相同的服务

第十九步 创建网页执行文件

第二十步 创建永久挂载

第二十一步 查看挂载

第二十二步 查看指定地址共享

第二十三步 部署第四台虚拟机

第二十四步 配置SNAT转发规则

第二十五步 测试配置内容

第二十六步 清除防火墙策略

第二十七步 检查一下防火墙策略

第二十八步 设置防火墙策略

第二十九步  加载IP_VS模块

第三十步 安装ipvsadm工具

第三十一步 修改虚拟机设置

第三十二步 修改网络编辑器

第三十三步 创建网卡

第三十四步 修改网卡配置文件

第三十五步 查看网卡信息

第三十六步 设置ipvsadm策略

第三十七步 保存分配策略

第三十八步 启动策略

第三十九步 修改Win系统的IPv4地址协议

第四十步 修改Web节点服务器的网关指向

第四十一步 两台Web服务重启网卡

第四十二步 修改Win系统虚拟机的网络适配器

第四十三步 用浏览器进行访问测试


一、集群

集群是由多台主机沟工程,但是对外只表现为一个整体,只提供一个访问入口(域名或者IP地址)

普通的服务器构建服务器集群

通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务,常用的一种群集技术LVS(Linux虚拟服务器,Linux Virtual Server)

负载均衡集群(Load Balance Cluster)

提高应用系统的相应能力,尽可能处理更多的访问请求,减少延迟,获得更高的高并发,高负载(LB)的整体性能,LB的负载分配依赖于主节点的分流算法

高可用集群(High Availability Cluster)

提高应用系统的可靠性,尽可能的减少终端时间为目标,确保服务的连续性,达到高可用(HA)的容错效果,HA的工作方式包括双工和主从的两种工作模式

高性能运算集群(High Performance Computer Cluster)

提高应用系统的CPU运算速度,扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力

高性能依赖于 “ 分布式运算 ”  、“ 并行运算 ” 通过专用硬件和软件将多个服务器的CPU和内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

二、负载均衡工作模式

VIP地址特性(虚拟IP地址)

只会存在于同一个热备组中优先级最高的设备上,以上是抢占模式

VIP地址的好处

VIP地址常规情况下占用一个IPv4地址,VIP占用的IPv4地址也是不可重复的,VRRP解决单点故障的问题,采用高可用的解决方案

NAT模式(地址转换)

Network Address Translation 简称为NAT模式,类似于防火墙的私有网络结构,负载均衡器作为客户机的访问入口,也是各节点回应客户机的访问出口

服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

数据流向

① 客户端发送请求,这时目的IP为虚拟IP(LVS设置的外网地址)所以请求数据包进入负载调度器(调度服务器)

② 由于服务器通过netfilter框架来管理网络数据,数据包会被系统设置好的策略分配到PREROUTING规则链中

③ 进入规则链后,判断是否目标IP为本机,如果是本机则转入INPUT规则链

④ 在INPUT中LVS的ipvsadm分配策略,通过调度算法,将数据包中的目的IP修改为Web服务器中的RIP(真实IP地址)

⑤ 修改后的数据包再转入POSTROUTING,再进由路由转发到真实服务器当中

⑥ 真实服务器从共享存储当中寻找数据,处理请求内容,然后由于同一网段,便直接发回调度器处理的结果

⑦数据回到调度器,再通过判断一层层转发,最后进入网络,再反馈给客户端

TUN模式(IP隧道)

IP Tunnel 简称为TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器

服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用的IP隧道与负载调度器相互通信

DR模式(直接路由)

Direct Routing 简称为DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但是各节点并不是分散在各地,而是与调度器位于同一个物理网络

负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

DR模式特点

① 负载调度器和真实服务器必须在同一个物理网络当中,工作在第二层数据链路层

② 真实服务器可用私有地址,也可用公有地址,可通过互联网对RIP(真实IP地址)进行直接访问

③ 负载调度器作为集群访问入口,但不作为网关使用

④ 所有请求报文经由负载调度器,但回复响应报文不能经过负载调度器

⑤ 真实服务器网关不允许指向负载调度器的IP地址,真实服务器发送的数据包不允许经过负载调度器

⑥ 真实服务器上的LO接口配置VIP的IP地址(虚拟IP地址)

优点与缺点

优点

负载均衡服务器只负责将请求的包分发给物理服务器,而物理服务器将应答包直接发送给用户,所以负载均衡器可以处理很巨大的请求量,使用这种方式

缺点

这种方式需要所有的负载均衡和节点服务器都在同一广播,不支持异地容灾

LVS基于内核进行转发,已经成为Linux内核的一部分,默认编译为 ip_vs 模块,必要时能够自动调用,在CentOS 7中,可以手动加载 ip_vs 模块,并查看 ip_vs 的版本信息,工作在内核态当中,基于内核态的netfilter框架实现IPVS功能,用户配置VIP等相关详细信息并且传递到IPVS,需要用到额外安装的ipvsadm工具

三、内核态与用户态

内核态

也叫内核空间,是内核进程/线程所在的区域,主要负责运行系统和硬件的交互

用户态

也叫用户空间,是用户进程/线程所在的区域,主要用于执行用户程序

内核态与用户态的区别

内核态的特点

运行的代码不受任何限制,CPU可以直接执行任何指令,速度也很快

用户态的特点

运行代码需要收到CPU的很多检查和过滤,不能直接访问内核数据和程序,也就是说不可以像内核线程一样访问任何有效的地址

操作系统在执行用户程序时,主要工作在用户态,只有在其执行没有权限的任务操作时,会自动切换到内核态

四、LVS主要作用

① 主要作用于多服务器的负载均衡

② 工作在网络层,可以实现高性能、高可用集群技术

③ 廉价,可以把许多低性能服务器组合在一起形成一个超级服务器

④ 易用,配置简单,有多重负载均衡的方法

⑤ 稳定可靠,即使集群中某台服务器无法正常工作,也不影响整体

⑥ 可扩展性好

LVS与Nginx比较

① LVS比nginx具有更强的抗负载能力,性能高,对内存和CPU资源消耗低

② LVS工作在网络层,网络依赖性大,稳定性高,Nginx安装配置比较简单,网络依赖性小

③ LVS不支持正则匹配处理,无法实现动静分离效果,Nginx可以实现

④ LVS适用的协议范围广,Nginx只支持HTTP、HTTPS和E-Mail协议,使用范围小

LVS负载调度算法

轮询(Round Robin)

将收到的访问请求按照顺序轮流分配给集群中的各个节点(真实服务器)均匀分摊给每个服务器,不管服务器实际连接数量和系统负载

加权轮询(Weighted Round Robin)

根据设置权重来分配请求,值越高的节点,优先获得任务,分配到的请求数量也越多,保证性能强的服务器承担更多的访问量

最少连接(Last Connections)

根据真实服务器已建立的连接数进行分配,将收到的请求优先分配给当前连接最少的节点

加权最少连接(Weighted Least Connections)

当服务器性能差异较大时,可以为真实服务器自动调整权重,性能较高的节点将承担更大比例的活动连接负载

五、ipvsadm工具

使用ipvsadm工具可以实现虚拟服务器创建,并指定LVS负载调度算法方式,指定VIP(虚拟地址)和RIP(真实地址),指定负载均衡的集群工作模式(NAT模式,DR模式,TUN模式)

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   [时间]    #表示保持长连接指定时间(秒)

-l    #列表查看LVS虚拟服务器(默认查看所有)

-n   #以数字形式显示地址、端口等信息,常与 -l 结合使用,例如 -ln

六、LVS-NAT模式部署

第一步 关闭防火墙安全机制

命令:systemctl stop firewalld

setenforce 0

第二步 安装依赖环境 

命令:yum -y install nfs-utils rpcbind

第三步  开启服务

命令:systemctl start rpcbind

systemctl start nfs

第四步 创建共享目录

命令:mkdir /opt/[名字]  /opt/[名字]

第五步 给目录文件赋权

命令:chmod 777 /opt/名称  /opt/名称

第六步 设置共享配置文件

命令:vim /etc/exports

第七步 发布共享目录并查看

命令:exportfs -rv

showmount -e

第八步 配置第二台虚拟机

第九步 安装HTTP服务

命令:yum -y install httpd

第十步  开启HTTP服务

命令:systemctl start httpd

systemctl enable httpd

第十一步 安装共享依赖环境

命令:yum -y install rpcbind nfs-utils

第十二步 按顺序开启服务

命令:systemctl start nfs

systemctl enable nfs

systemctl start rpcbind

systemctl enable rpcbind

第十三步 测试查看共享地址

命令:showmount -e 192.168.8.100

第十四步 创建网页执行文件

命令:echo “内容” > /var/www/html/index.html

第十五步 创建永久挂载

命令:vim /etc/fstab

第十六步 查看挂载是否成功

命令:mount -a    #先刷新挂载

df -h

第十七步 部署第三台虚拟机

第十八步 安装相同的服务

命令:yum -y install nfs-utils rpcbind httpd

第十九步 创建网页执行文件

命令:echo "内容" > /var/www/html/index.html

第二十步 创建永久挂载

命令:vim /etc/fstab

第二十一步 查看挂载

命令:mount -a   #刷新挂载

df -h

第二十二步 查看指定地址共享

命令:showmount -e [IP地址]

第二十三步 部署第四台虚拟机

第二十四步 配置SNAT转发规则

命令:vim /etc/sysctl.conf

第二十五步 测试配置内容

命令:sysctl -p

第二十六步 清除防火墙策略

命令:iptables -F

第二十七步 检查一下防火墙策略

命令:iptables -t nat -nL

第二十八步 设置防火墙策略

命令:iptables -t nat -A POSTROUTING -s [IP地址] -o ens36 -j SNAT --to--source 10.0.0.1

第二十九步  加载IP_VS模块

命令:modprobe ip_vs

第三十步 安装ipvsadm工具

命令:yum -y install ipvsadm

第三十一步 修改虚拟机设置

第三十二步 修改网络编辑器

第三十三步 创建网卡

命令:cp ifcfg-ens33 ifcfg-ens36

第三十四步 修改网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens36

第三十五步 查看网卡信息

命令:ifconfig

第三十六步 设置ipvsadm策略

命令:ipvsadm -C

ipvsadm -A -t 10.0.0.1:80 -s rr

ipvsadm -a -t 10.0.0.1:80 -r 192.168.8.200:80 -m -w 1

ipvsadm -a -t 10.0.0.1:80 -r 192.168.8.130:80 -m -w 1

第三十七步 保存分配策略

命令:ipvsadm-save

第三十八步 启动策略

命令:ipvsadm

第三十九步 修改Win系统的IPv4地址协议

第四十步 修改Web节点服务器的网关指向

网关指向调度器的RIP地址

第四十一步 两台Web服务重启网卡

命令:systemctl restart network

第四十二步 修改Win系统虚拟机的网络适配器

第四十三步 用浏览器进行访问测试

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

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

相关文章

剑指offer(C++)-JZ40:最小的K个数(算法-排序)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,…

1.1 熟悉x64dbg调试器

x64dbg 是一款开源、免费、功能强大的动态反汇编调试器,它能够在Windows平台上进行应用程序的反汇编、调试和分析工作。与传统的调试器如Ollydbg相比,x64dbg调试器的出现填补了Ollydbg等传统调试器的不足,为反汇编调试工作提供了更高效、更可…

Python 中的 JSON 操作:简单、高效的数据交换格式

目录 1. JSON 数据格式 2. Python 操作 JSON 文件 2.1 JSON 反序列化为 Python 对象 2.2 Python 序列化为 JSON 3 工作中的常见场景 3.1 网络请求和响应 服务器端(Python): 客户端(JavaScript): 3…

5G三防平板电脑有哪些功能与特点

随着科技的不断进步,平板电脑已经成为许多人生活中必不可少的设备之一。而随着5G技术的全面普及,5G三防平板电脑也应运而生。这些平板电脑集成了内置高通八核处理器搭配Adreno GPU,搭载全新Android 11操作系统,以及提供多应用切换…

docker-compose实现微服务jar+mysql的容器服务发布(经典版)

一 安装mysql服务 1.1 拉取镜像 1.拉取: docker pull mysql:5.7.29 2.查看镜像: docker images 1.2 在宿主机创建文件存储mysql 1.创建映射目录:mysql-c5 在/root/export/dockertest 目录下,mkdir -p mysql-c5 &#…

Django proxy_view代理后端

某些需求下,需要通过Django代理后端,比如开发celery定时任务时候,需要代理后端的flower,代理后端可以直接使用Django自带的授权,方便权限控制 具体操作如下 1.安装 django-proxy 包,进行代理 pip install …

LVS负载均衡集群(DR)

目录 1.数据包流向 2.通信遇到的问题 1.ARP广播 导致所有节点服务器和调度器的VIP响应 2.VIP的调度器失效 3.案例 1. 配置负载调度器 2.部署共享存储 3. 配置节点服务器(这里是两台) 1.数据包流向 1.客户端发送请求到负载均衡器 请求的数据报文到达内核空间 2.负载均…

改进 Elastic Stack 中的信息检索:引入 Elastic Learned Sparse Encoder,我们的新检索模型

作者:Thomas Veasey,Quentin Herreros 在本博客中,我们讨论了我们一直在使用预先训练的语言模型增强 Elastic 开箱即用检索功能所做的工作。 在本系列的上一篇博客文章中,我们讨论了在零样本设置中应用密集模型进行检索的一些挑战…

全网最细,接口自动化测试hook机制使用详细,进阶高级...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 requests 库只支持…

Sa-Token,一款更加轻量的权限认证框架

今天给大家介绍一个轻量级 Java 权限认证框架,我们之前一直采用最多的鉴权框架是OAuth2.0或者SpringSecurity,但是两者的配置都相当复杂,学习成本也非常高,所以我一直在试图寻找更好的解决办法,这几天在搭建权限体系平…

密码学学习笔记(五):Hash Functions - 哈希函数1

简介 什么是密码学中的哈希函数? 哈希函数是一种快速算法,它接受任何长度的输入,并产生一个固定长度的随机输出,称为摘要(digest),比如: MD4, MD5: 128-bit output (broken) •SHA-1: 160-bit output (b…

Infinite Zoom 丝滑循环小视频生成方法

使用Infinite Zoom插件在Stable Diffusion中可以制作无限缩放效果视频的过程。 文章目录 插件安装插件功能Main选项卡Video选项卡OutpaintPost process 插件使用 插件安装 在Stable-Diffusion-webui安装Infinite Zoom插件。启动Stable-Diffusion-webui,选择扩展-从…

使用css的:before属性在文字前加短竖线

有时候我们需要在文字或者标题前加个短竖线&#xff0c;有的人会使用 border 来模拟一个竖线&#xff0c;其实大可不必&#xff0c;我们可以利用元素的 :before 属性来实现&#xff0c;效果如下&#xff1a; 具体的代码如下&#xff0c; HTML&#xff1a; <span class&quo…

【计算机网络】第 1 课 - 数据的三种交换方式

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、电路交换 3、分组交换 4、三种交换方式的对比 4.1、电路交换优点 4.2、电路交换缺点 4.3、报文交换优点 4.4、…

【抽象拓扑排序】ABC216 D

D - Pair of Balls (atcoder.jp) 题意&#xff1a; 有2*n个球&#xff0c;每个球涂n种颜色&#xff0c;每种颜色恰好涂两个球&#xff0c;把这些球放进m个栈里&#xff0c;每次操作可以弹出两个相同颜色的球&#xff0c;问是否存在方案使得将所有栈清空 思路&#xff1a; 注…

Day44——动态规划part6

完全背包 private static void testCompletePack(){int[] weight {1, 3, 4};int[] value {15, 20, 30};int bagWeight 4;int[] dp new int[bagWeight 1];for (int i 0; i < weight.length; i){ // 遍历物品for (int j weight[i]; j < bagWeight; j){ // 遍历背包…

2023.07.06 homework

1&#xff09;止水夹打开&#xff0c;连通器相通 2&#xff09;左侧水位高11cm 的水位下降 y cm 3&#xff09;右侧水位低 4cm 的水位上涨 x cm 4&#xff09;最终两边水位相等保持一个平面上 11cm - y 4cm x 5&#xff09;左侧的水下降的体积跑哪里去了&#xff0c;填到…

flask和Vue3的前后端数据传输

&#xff08;一&#xff09;基于flask&#xff0c;构建一个后端 后端就采用flask的一般构建方法&#xff0c;然后用 flask-restful 构建一个接口&#xff0c;接口返回为json数据。 datas [{id: 1, name: xag, 年龄: 18}, {id: 2, name: xingag, age: 19}]class UserView(Res…

基于单片机的智能太阳能手机充电器的设计与实现

功能介绍 以STM32/51单片机作为主控系统&#xff1b;LCD1602液晶显示当前电压值&#xff1b;太阳能电池板采集当前光照转换为电能&#xff0c;然后TP4056锂电池充放电模块给锂电池进行充电&#xff0c;充完后自动断电&#xff0c;防过充&#xff1b;通过CE8301模块对锂电池电压…

3D空间的旋转的各种等价形式

旋转矩阵 欧拉轴和角度&#xff08;旋转矢量&#xff09; 欧拉旋转 四元数