九五从零开始的运维之路(其三十六)
文章目录
- 前言
- 一、集群概述
- 1.负载均衡技术类型
- (一)四层负载均衡器
- (二)七层负载均衡器
- 2.负载均衡实现方式
- (一)硬件负载均衡产品:
- (二)软件负载均衡产品:
- 二、LVS结构
- 2.三层结构
- 三、LVS工作模式
- 四、LVS负载均衡算法
- 1.静态负载均衡
- 2.动态负载均衡
- 五、ipvsadm命令详解
- 六、LVS配置案例
- 1.基础配置
- 2.实现NAT模型搭建
- (一)负载调度器配置
- (二)web节点配置
- 3.实现DR模型搭建
- (一)负载调度器配置
- (二)web节点配置
- 总结
前言
本篇将简述的内容:Linux系统下的LVS集群
一、集群概述
1.负载均衡技术类型
(一)四层负载均衡器
四层负载均衡器也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
(二)七层负载均衡器
七层负载均衡器也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。
2.负载均衡实现方式
(一)硬件负载均衡产品:
F5 、深信服 、Radware
(二)软件负载均衡产品:
LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
二、LVS结构
2.三层结构
1)负载调度器
2)服务器池
3)共享存储
架构对象
VS | Virtual Server,也称为 Director,负载均衡服务器 |
---|---|
RS | Real Server,真正的服务器,集群中各节点 |
VIP | Director 向外部提供服务的 IP |
DIP | Director 向内部与 RS 通信的 IP |
RIP | 真实服务器的 IP |
CIP | 客户端的 IP |
三、LVS工作模式
LVS-NAT(NAT模式)
LVS-DR(直接路由模式)(应用最广泛)
LVS-TUN(IP隧道(Tunnel)模式,不常用)
FULL-NAT模式(双向转换模式,不常用)
四、LVS负载均衡算法
1.静态负载均衡
rr | round robin | 轮询 |
---|---|---|
wrr | weight round robin | 加权轮询 |
sh | source hashing | 源地址散列算法(HASH) |
dh | destination hashing | 目标地址 HASH |
2.动态负载均衡
动态负载均衡
lc(leash-connection,最少连接 )
简单算法:active * 256 + inactive (谁的小选谁)
wlc(加权最少连接)
简单算法:(active * 256 + inactive) / weight(谁的小选谁)
sed(最少期望延迟)
简单算法:(active + 1) * 256 / weight (谁的小选谁)
nq(never queue,永不排队)
LBLC(基于局部性的最少连接 )
LBLCR(基于局部性的带复制功能的最少连接)
五、ipvsadm命令详解
-A | 添加虚拟服务节点 |
---|---|
-D | 删除虚拟服务节点 |
-L | 查看虚拟服务节点列表 |
-a | 添加真实服务节点 |
-d | 删除真实服务节点 |
-l | 查看真实服务节点列表 |
-t | 指定虚拟服务器IP地址 |
-s | 指定调度算法 |
-r | 指定真实服务器节点IP地址 |
-w | 指定权重值 |
-g | 直接路由模式(默认) |
-i | 隧道模式(不常用) |
-m | NAT模式 |
六、LVS配置案例
1.基础配置
关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
关闭Selinux
setenforce 0
关闭Networkmanager
systemctl stop NetworkManager && systemctl disable NetworkManager
配置IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
2.实现NAT模型搭建
(一)负载调度器配置
配置IP地址
增加一块网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37
NAME=ens38
DEVICE=ens38
安装ipvsadm
yum install -y ipvsadm
开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
加载ip_vs模块
modprobe ip_vs
lsmod |grep ip_vs
启动ipvsadm服务
systemctl start ipvsadm
配置负载分配策略
ipvsadm -A -t 192.168.16.100:80 -s rr
ipvsadm -a -t 192.168.16.100:80 -r 192.168.115.4:80 -m
ipvsadm -a -t 192.168.16.100:80 -r 192.168.115.5:80 -m
保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
(二)web节点配置
安装nginx
配置网关
route add -net 0/0 gw 192.168.115.3
测试
3.实现DR模型搭建
负载调度配置器-ens33 | 192.168.115.3 | 192.168.115.2 | 192.168.115.2 |
负载调度配置器-ens33:0 | 192.168.115.200 | / | / |
web1-ens33 | 192.168.115.4 | / | / |
web1-ifcfg-lo:0 | 192.168.115.200 | / | / |
web2-ens33 | 192.168.115.5 | / | / |
web2-ifcfg-lo:0 | 192.168.115.200 | / | / |
(一)负载调度器配置
调整ARP参数
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
配置虚拟IP地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
安装ipvsadm
yum install -y ipvsadm
加载ip_vs模块
modprobe ip_vs
lsmod |grep ip_vs
启动ipvsadm服务
systemctl start ipvsadm
配置负载分配策略
ipvsadm -A -t 192.168.115.200:80 -s rr
ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.4:80 -g
ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.5:80 -g
保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
(二)web节点配置
调整ARP参数
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce=2
sysctl -p
配置虚拟IP地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
添加回环路由
route add -host 192.168.115.200/32 dev lo:0
安装httpd
访问192.168.115.200
进行验证
总结
LVS集群是一种强大的负载均衡解决方案,可以提高系统的可用性、性能和可扩展性。通过深入探索LVS集群的原理、架构和配置方法,我们可以更好地理解和应用这一技术,为构建高可用性的互联网应用提供有力支持。
相关文章:

九五从零开始的运维之路(其三十六)
文章目录 前言一、集群概述1.负载均衡技术类型(一)四层负载均衡器(二)七层负载均衡器 2.负载均衡实现方式(一)硬件负载均衡产品:(二)软件负载均衡产品: 二、L…...

同步和异步有什么区别,使用场景?
同步(Synchronous)和异步(Asynchronous)是用于描述不同的操作和通信模式的术语。它们在处理任务、执行代码以及处理通信时有很大的异同。 同步(Synchronous) 同步操作是指程序的执行顺序按照代码的先后顺序进行,一个操作完成后才能执行下一个操作。在同步操作中,调用一…...

webassembly009 transformers.js 网页端侧推理
之前试用过两个网页端的神经网络框架,一个是 Tensorflow PlayGround,它相当与实现了一个网页端的简单的训练框架,有关节点的数据结构可看这篇。另一个是onnx的网页端(nodejs绿色免安装try onnx on web(chrome)),需要自己转换onnx模…...

Android动态添加和删除控件/布局
一、引言 最近在研究RecyclerView二级列表的使用方法,需要实现的效果如下。 然后查了一些博客,觉得实现方式太过复杂,而且这种方式也不是特别受推荐,所以请教了别人,得到了一种感觉还不错的实现方式。实现的思路为&…...

maven下载不了仓库地址为https的依赖jar,配置参数忽略ssl安全检查
问题原因 私服使用的https地址,然后安全证书过期的或没有,使用maven命令时,可以添加以下参数,忽略安全检查 mvn -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue -Dmaven.wagon.http.ssl.ignore.vali…...

3.Redis 单线程模型
redis 单线程模型 redis 只使用一个线程来处理所有的命令请求,并不是说一个 redis 服务器进程内部真的就只有一个线程,其实也有多个线程,多个线程是再处理网络 IO。 那么在多线程中,针对类似于这样的场景两个线程尝试同时对一个…...

0基础学习VR全景平台篇 第90篇:智慧眼-数据统计
【数据统计】是按不同条件去统计整个智慧眼项目中的热点,共包含四大块,分别是数据统计、分类热点、待审核、回收站,下面我们来逐一进行介绍。 1、数据统计 ① 可以按所属分类、场景分组、所属场景、热点类型以及输入热点名去筛选对应的热点&…...

【Go】Goland项目配置运行教程
Golang项目配置运行教程 1.安装Golang下载安装包安装 2.Goland配置2.1 环境2.2 goland配置2.2.1 没有makefile的情况2.2.2 有makefile的情况 3.跨平台项目4.补充 注意,本项目描述的是git clone下来的Golang项目配置运行教程,并不是从头创建一个Golang项目…...

Docker容器与虚拟化技术:Docker consul 实现服务注册与发现
目录 一、理论 1.Docker consul 二、实验 1.consul部署 2. consul-template部署 三、总结 一、理论 1.Docker consul (1)服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性&…...

【大模型AIGC系列课程 2-2】大语言模型的“第二大脑”
1. 大型语言模型的不足之处 很多人使用OpenAI提供的GPT系列模型时都反馈效果不佳。其中一个主要问题是它无法回答一些简单的问题。 ● 可控性:当我们用中文问AI一些关于事实的问题时,它很容易编造虚假答案。 ● 实时性:而当你询问它最近发生的新闻事件时,它会干脆地告诉你…...

Java基础数据结构
二叉查找树 二叉查找树,又称二叉树或者二叉搜索树 特点:每一个节点上最多又两个子节点 任意节点左子树上的值都小于当前节点 任意节点右子树上的值都大于当前节点 二叉查找树添加节点:规则 小的存左边 大的存右边 一样的不存 平衡二叉树&am…...

PP-TS基于启发式搜索和集成方法的时序预测模型,使预测更加准确
时间序列数据在各行业和领域中无处不在,如物联网传感器的测量结果、每小时的销售额业绩、金融领域的股票价格等等,都是时间序列数据的例子。时间序列预测就是运用历史的多维数据进行统计分析,推测出事物未来的发展趋势。 为加快企业智能化转…...

vue 04-reactive与ref的选择
reactive与re两者区别? reactive可以转换对象成为响应式数据对象,但是不支持简单数据类型 ref可以转换简单数据类型为响应式数据对象,也支持复杂数据类型,但是操作的时候需要.value 推荐使用的话: 如果能确定数据是对象且字段名称也确定,可以使用reactive转成响应式…...

Mysql索引+事务+存储引擎
索引 索引的概念 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。 使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找…...

创建abp vnext项目
需求: 1.使用net core跨平台的方式支持windows和centos系统; 2.实现前后端分离部署 3.框架默认集成用户登录、权限、redis等模块 4.支持多种数据库的方式 5.前端使用vue,不需要使用框架自带的web 1.框架配置官网地址: https://ab…...

【OpenCV实战】3.OpenCV颜色空间实战
OpenCV颜色空间实战 〇、Coding实战内容一、imread1.1 函数介绍1.2 Flags1.3 Code 二. 色彩空间2.1 获取单色空间2.2. HSV、YUV、RGB2.3. 不同颜色空间应用场景 〇、Coding实战内容 OpenCV imread()方法不同的flags差异性获取单色通道【R通道、G通道、B通道】HSV、YUV、RGB 一…...

什么是回调函数(callback function)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 回调函数(Callback Function)⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这…...

零售再增长,直播登“C位”,美团稳稳交出成绩单
8月24日,美团发布2023年中期业绩和二季报,财报显示其二季度实现营收680亿元,同比增长33.4%;实现净利润47.13亿元,同比扭亏为盈,调整后净利润达历史最高水平。其中,与消费市场走势息息相关的美团…...

什么是需求可追溯性,为什么它对产品团队很重要?
随着产品变得越来越复杂,需求在开发过程中将在各个部门和利益相关方之间不断传递。可追溯性能帮助产品团队解决他们在需求管理过程中面临的一大挑战。 目前产品开发需要做出的决策比以往任何时候都多,每一种决策都需要充分考虑对具体需求和整体产品的影…...

Window基础命令
文章目录 查看哪些端口被禁用TCP协议删除开机启动项方案1方案2 查看哪些端口被禁用TCP协议 netsh interface ipv4 show excludedportrange protocoltcp删除开机启动项 方案1 列出所有启动项 bcdedit /enum仔细看你要删除的是哪一项(看description)&a…...

Java List的扩容机制原理及应用
Java List的扩容机制原理及应用 引言 在Java中,List是一种非常常用的数据结构,用于存储有序的元素集合。List的底层实现有多种,如ArrayList、LinkedList等。在使用List时,我们经常会遇到一个问题:当元素数量超过了Li…...

Cesium 显示经纬高
文章目录 需求分析 需求 页面展示经、纬度和高 分析 html <div id"latlng_show" style"width:340px;height:30px;position:absolute;bottom:40px;right:200px;z-index:1;font-size:15px;"><div style"width:100px;height:30px;float:left;…...

专访 Hyper Oracle:可编程的 zkOracle 打造未来世界的超算
许多 Web3 应用在实现的过程中,常常会遇到基础设施方面的限制,包括去中心化自动化、预言机、链上信息搜索等问题。绝大部分区块链的中间件网络都是依赖于节点质押来保证节点执行的诚实性,这样的模式会产生诸多衍生问题,例如安全性…...

ThreadLocal存放当前用户
用户信息必须由后端获取,不能通过前端传入的id是不可信的,,可能会出现越权的问题,,,怎么通过后端获取当前登录用户,,, 就需要将User 和 当前线程绑定在一起,&…...

es入门实战
创建索引 PUT /hotel/ { “mappings”:{ “properties”:{ “title”:{ “type”:“text” }, “city”:{ “type”:“keyword” }, “price”:{ “type”:“double” } } } } 给索引写入数据 POST /hotel/_doc/001 { “title”:“好再来大酒店”, “city”:“东京”, “pri…...

c++系列之指针
今天不是做题系列,是知识系列啦。 说到指针,我们初学这一定会气的牙痒痒把,笔者也是,这么我好久而不得呀,今天来让我们聊聊指针。 其一 首先,我们明确的知道,假如我们开一个变量,…...

网络安全:挑战与防护策略
一、引言 随着科技的快速发展,互联网已经成为我们生活和工作的重要组成部分。然而,随着网络技术的不断升级,网络安全问题也日益凸显。网络攻击、数据泄露、身份盗用等问题,不仅威胁到个人隐私,也对企业和国家的安全构…...

AI 插件:未来的浏览器、前端与交互
想象一下,你在浏览器中粘贴一个 URL,这个 URL 不仅仅是一个网址,而是一个功能强大、能执行多种任务的 AI 插件。这听起来像是未来的事情,但实际上,这种变革已经悄悄进行中。 1. 插件的魅力与局限性 当我第一次接触到…...

R包开发-2.1:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)
目录 0-前言 1-在RStudio中创建R包项目 2-创建R包 2.1通过R函数创建新包 2.2在RStudio通过菜单来创建一个新包 2.3关于R包创建的说明 3-添加R自定义函数 4-添加C函数 0-前言 目标:在RStudio中创建一个R包,这个R包中包含C函数,接口是Rc…...

土豆叶病害识别(图像连续识别和视频识别)
效果视频:土豆叶病害识别(Python代码,pyTorch框架,视频识别)_哔哩哔哩_bilibili 代码运行要求:Torch库>1.13.1,其它库无版本要求 1..土豆叶数据集主要包好三种类别(Early_Blight…...