LVS+Nginx高可用集群---搭建高可用集群负载均衡

1.LVS简介

Lvs(Linux Virtual Server):使用集群,对于整个用户来说是透明,用户访问的时候是单个高性能的整体。道理与nginx类似
在这里插入图片描述
在这里插入图片描述
LVS网络拓扑图:是基于四层。
在这里插入图片描述
用户通过浏览器发送请求,然后到达LVS.Lvs根据相应算法将请求发送到相应的真实的服务器上(RS).

2.为什么要使用LVS+NGINX

LVS基于四层,工作效率高:性能更高,接收到的请求是可以直接转发的。Nginx接收到请求后,还需要对请求进行相应的处理
单个nginx承受不了压力,需要集群。
LVS充当nginx集群的调度者:lvs不处理请求报文,相应效率更高
Nginx接受请求来回,LVS可以只接受不响应
在这里插入图片描述
在这里插入图片描述
Lvs的RS(真实服务器)集群处理完毕请求以后,通过集群将结果直接返回给用户
RS就是nginx
LVS的核心模块是ipvs->vip:192.168.1.150

3.LVS三种模式

NAT模式:适用于并发量不大,使用虚拟ip。LVS是公网,可以ping通,类似于nginx
在这里插入图片描述
TUN:ip隧道模式,需要为每个lvs配备网卡,RS是暴露在公网的,RS自己处理请求
在这里插入图片描述
DR模式:RS通过路由转发,不暴露在公网
在这里插入图片描述

4.搭建LVS-DR模式-配置LVS节点与ipvsadm

服务器与IP的约定:DIP与RIP的区别是在于nginx与lvs的功能不同
在这里插入图片描述
配置的详细步骤:
前期准备:
服务器与ip规划

LVS - 1台
VIP(虚拟IP):192.168.1.150
DIP(转发者IP/内网IP):192.168.1.151
Nginx - 2台(RealServer)
RIP(真实IP/内网IP):192.168.1.171
RIP(真实IP/内网IP):192.168.1.172
所有计算机节点关闭网络配置管理器,因为有可能会和网络接口冲突:

systemctl stop NetworkManager
systemctl disable NetworkManager

创建子接口:
进入到网卡配置目录,找到ens33:
在这里插入图片描述

拷贝并且创建子接口:

cp ifcfg-ens33 ifcfg-ens33:1
注:数字1为别名,可以任取其他数字都行
注:数字1为别名,可以任取其他数字都行
1
代码块
修改子接口配置: vim ifcfg-ens33:1

配置参考如下:
在这里插入图片描述

注:配置中的 192.168.1.150 就是咱们的vip,是提供给外网用户访问的ip地址,道理和nginx+keepalived那时讲的vip是一样的。
重启网络服务,或者重启linux:
在这里插入图片描述
重启成功后,ip addr 查看一下,你会发现多了一个ip,也就是虚拟ip(vip)
在这里插入图片描述
安装ipvsadm
现如今的centos都是集成了LVS,所以ipvs是自带的,相当于苹果手机自带ios,我们只需要安装ipvsadm即可(ipvsadm是管理集群的工具,通过ipvs可以管理集群,查看集群等操作),命令如下:

yum install ipvsadm

安装成功后,可以检测一下:
在这里插入图片描述
路由就是虚拟ip。VIP
阿里云服务器不支持虚拟ip,需要去购买官方提供的虚拟ip服务。
腾讯云支持虚拟ip,但是需要另外去购买,因为是建立在网卡之上,有成本,上限10.

5.搭建LVS-DR模式-为两台RS配置虚拟IP

配置虚拟网络子接口(回环接口)
进入到网卡配置目录,找到lo(本地环回接口,用户构建虚拟网络子接口),拷贝一份新的随后进行修改:
在这里插入图片描述
修改内容如下:
在这里插入图片描述
重启后通过ip addr 查看如下,表示ok:
在这里插入图片描述

6.搭建LVS-DR模式-为两台RS配置ARP

arp-ignore:ARP响应级别(处理请求):一般为1
在这里插入图片描述
arp-announce:ARP通告行为(返回响应):一般为2
在这里插入图片描述
配置ARP
打开sysctl.conf:

vim /etc/sysctl.conf

配置所有网卡、默认网卡以及虚拟网卡的arp响应级别和通告行为,分别对应:all,default,lo:

# configration for lvs
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

刷新配置文件:
在这里插入图片描述
增加一个网关,用于接收数据报文,当有请求到本机后,会交给lo去处理:
在这里插入图片描述
防止重启失效,做如下处理,用于开机自启动:

echo “route add -host 192.168.1.150 dev lo:1” >> /etc/rc.local
在这里插入图片描述

7.搭建LVS-DR模式-验证ipvsadm配置集群规则

创建LVS节点,用户访问的集群调度者

ipvsadm -A -t 192.168.1.150:80 -s rr -p 5

-A:添加集群
-t:tcp协议
ip地址:设定集群的访问ip,也就是LVS的虚拟ip
-s:设置负载均衡的算法,rr表示轮询
-p:设置连接持久化的时间
创建2台RS真实服务器

ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.171:80 -g
ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.172:80 -g

-a:添加真实服务器
-t:tcp协议
-r:真实服务器的ip地址
-g:设定DR模式
保存到规则库,否则重启失效
ipvsadm -S

检查集群
查看集群列表

ipvsadm -Ln

查看集群状态
ipvsadm -Ln --stats

其他命令:

 重启ipvsadm,重启后需要重新配置
service ipvsadm restart
# 查看持久化连接
ipvsadm -Ln --persistent-conn
# 查看连接请求过期时间以及请求源ip和目标ip
ipvsadm -Lnc# 设置tcp tcpfin udp 的过期时间(一般保持默认)
ipvsadm --set 1 1 1
# 查看过期时间
ipvsadm -Ln --timeout

更详细的帮助文档:

ipvsadm -h
man ipvsadm

8 . LVS负载均衡算法

LVS的负载均衡算法
静态算法
静态:根据LVS本身自由的固定的算法分发用户请求。

轮询(Round Robin 简写’rr’):轮询算法假设所有的服务器处理请求的能力都一样的,调度器会把所有的请求平均分配给每个真实服务器。(同Nginx的轮询)

加权轮询(Weight Round Robin 简写’wrr’):安装权重比例分配用户请求。权重越高,被分配到处理的请求越多。(同Nginx的权重)

源地址散列(Source Hash 简写’sh’):同一个用户ip的请求,会由同一个RS来处理。(同Nginx的ip_hash)

目标地址散列(Destination Hash 简写’dh’):根据url的不同,请求到不同的RS。(同Nginx的url_hash)

动态算法
动态:会根据流量的不同,或者服务器的压力不同来分配用户请求,这是动态计算的。

最小连接数(Least Connections 简写’lc’):把新的连接请求分配到当前连接数最小的服务器。

加权最少连接数(Weight Least Connections 简写’wlc’):服务器的处理性能用数值来代表,权重越大处理的请求越多。Real Server 有可能会存在性能上的差异,wlc动态获取不同服务器的负载状况,把请求分发到性能好并且比较空闲的服务器。

最短期望延迟(Shortest Expected Delay 简写’sed’):特殊的wlc算法。举例阐述,假设有ABC三台服务器,权重分别为1、2、3 。如果使用wlc算法的话,当一个新请求进来,它可能会分给ABC中的任意一个。使用sed算法后会进行如下运算:

A:(1+1)/1=2
B:(1+2)/2=3/2
C:(1+3)/3=4/3
最终结果,会把这个请求交给得出运算结果最小的服务器。
最少队列调度(Never Queue 简写’nq’):永不使用队列。如果有Real Server的连接数等于0,则直接把这个请求分配过去,不需要在排队等待运算了(sed运算)。

总结:
LVS在实际使用过程中,负载均衡算法用的较多的分别为wlc或wrr,简单易用。

对lvs集群的负载算法有一定的了解即可,因为你要和运维人员进行有效沟通;但是如果作为运维的话那么是要深入钻研LVS了,一个企业如果发展并且使用到LVS了,那么业务量是十分巨大的,并且也会有专门的运维团队来负责网络架构的。

9.搭建LVS-DR模式-验证DR模式,探讨LVS持久化机制

在这里插入图片描述
LVS有持久化链接。ipvsadm -h:查询所有的命令

核心原因:man ipvsadm :默认的时间是300s
在这里插入图片描述
修改有效时间:5秒的持久化时间
Ipvsadm -E -t 192.168.1.150:80 -s -rr -p 5
Ipsvadm -Ln:查看配置
在这里插入图片描述
刷新地址还是没有什么用。实际上还有配置设置超时时间。
修改配置:ipsvadm --set 1 1 1,先不进行刷新
即可实现轮询,并且每次有效的时间为60s.
在这里插入图片描述
刷新之后,网页发生变化。
在这里插入图片描述
每次不超时,就会落在相应的节点上。
再次刷新,没有任何列表,访问172服务器。
在这里插入图片描述
再次查询,172也可以查询得到,显示过期时间
在这里插入图片描述
正常情况下都使用默认的设置

10.搭建keepalived+LVS+NGINX 高可用集群负载均衡-配置Master

Master相关配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ipvsadm -C:清除之前的相关负载均衡的规则
查询清理的结果
在这里插入图片描述
重启keepalived:systemctl restart keepalived

出现错误:之前配置的虚拟ip的ip地址是错误的。
192.168.1.150 80
Backup的配置基本同上。

测试LVS:
检测方式:先停掉Master上的keepalived。Backup上虚拟ip生效。访问页面没有问题。
重新打开Master上的keepalived。Backup的虚拟ip没有了。
前端界面访问一直没有问题.

测试nginx:
关闭171进行测试。用户请求只能访问到172.
通过LVS检查结果。
在这里插入图片描述
恢复171后。
测试完成

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

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

相关文章

AI PC创造新商机,ISP与HPD集成单芯片方案受欢迎

今年以来,AI PC逐渐成为市场的焦点,因为AI PC给多年一成不变的PC市场带来了新的看点,也给了消费者升级的理由。今年是AI PC的元年,上半年不论是芯片厂商,还是PC厂商都在AI PC市场快速布局。AI PC相关的大模型、生态&am…

ollama + fastgpt 搭建免费本地知识库

目录 1、ollama ollama的一些操作命令: 使用的方式: 2、fastgpt 快速部署: 修改配置: config.json: docker-compose.yml: 运行fastgpt: 访问OneApi: 添加令牌和渠道: 登陆fastgpt,创建知识库和应用 3、总结: 附录: 1. 11434是ollama的端口: 2. m3e 测…

处理多维特征的输入(Multiple Dimension Input)

输入x有多个特征features,最终得到输出y的类别。 在上一节提到,左边是我们最开始了解的线性回归,右边是我们的logistics回归(返回值为一个离散的集合)。对于本节,就是在logistics回归输入x的基础上让其多一…

中伟视界:矿山智能化——AI引领创新,行车不行人检测算法实现实时预警,防范行车不行人事故发生

行车不行人检测AI分析算法通过利用人工智能和深度学习技术,对井下行人和车辆的行驶情况进行实时检测和识别。该算法在提升矿山安全管理、减少事故发生方面具有重要作用。本文将详细介绍该AI算法的识别过程、应用场景及其技术特点。 一、识别过程 行车不行人检测AI分…

Hadoop安装报错

报错:ERROR 2023-03-09 21:33:00,178 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions. 解决方案: 在安装失败得客户端执行 编辑 /etc/python/cert-verification.cfg 配置文件,将 [https] 节的 verify 项 设为禁用…

怎么查看一个网站的ip地址?

1、使用nslookup nslookup 是一个网络诊断工具,用于查询域名系统(DNS)记录,将域名解析为IP地址,或者查询其他DNS记录类型,如MX(邮件交换记录)、CNAME(别名记录&#xff…

css - - - - - 环形倒计时进度条实现

css - - - - - 环形倒计时进度条实现 1. 效果图展示2. 代码展示 1. 效果图展示 2. 代码展示 // html <view class"father"><view class"progress" style"--progress:{{red}}; --last:{{gray}}"></view> </view>// css …

mac合并pdf文件最简单的方法,mac如何合并pdf文件

在数字化办公和学习的过程中&#xff0c;pdf 格式因其稳定性和跨平台兼容性而广受欢迎。但有时候&#xff0c;我们免不了需要将多个pdf文件合并为一个&#xff0c;以便于管理和分享。今天&#xff0c;就让我来为大家介绍几种简单高效的pdf合并方法&#xff0c;让你轻松合并文件…

深度学习落地实战:手势识别

前言 大家好&#xff0c;我是机长 本专栏将持续收集整理市场上深度学习的相关项目&#xff0c;旨在为准备从事深度学习工作或相关科研活动的伙伴&#xff0c;储备、提升更多的实际开发经验&#xff0c;每个项目实例都可作为实际开发项目写入简历&#xff0c;且都附带完整的代…

Android 11 HAL层集成FFMPEG

1.集成目录&#xff1a; android/vendor/noch/common/external/NoboMediaCodec 2.文件夹目录 3. Android.mk实现 # Copyright #LOCAL_PATH : $(call my-dir)SF_COMMON_MK : $(LOCAL_PATH)/common.mkinclude $(call first-makefiles-under,$(LOCAL_PATH))4.common.mk实现 # #…

【EI检索】第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

一、会议信息 大会官网&#xff1a;www.mvipit.org 官方邮箱&#xff1a;mvipit163.com 会议出版&#xff1a;IEEE CPS 出版 会议检索&#xff1a;EI & Scopus 检索 会议地点&#xff1a;河北张家口 会议时间&#xff1a;2024 年 9 月 13 日-9 月 15 日 二、征稿主题…

Mysql解忧杂货铺

欢迎来到一夜看尽长安花 博客&#xff0c;您的点赞和收藏是我持续发文的动力 对于文章中出现的任何错误请大家批评指出&#xff0c;一定及时修改。有任何想要讨论的问题可联系我&#xff1a;3329759426qq.com 。发布文章的风格因专栏而异&#xff0c;均自成体系&#xff0c;不足…

【python虚拟环境管理】【mac m3】 使用pipx安装poetry

文章目录 一. 安装 pipx二. 安装Poetry1. 安装2. advanced 操作 官网文档&#xff1a;https://python-poetry.org/docs/ pipx介绍文档&#xff1a;https://blog.51cto.com/u_15064632/2570626 一. 安装 pipx pipx 用于全局安装 Python 命令行应用程序&#xff0c;同时在虚拟环…

注册安全分析报告:OneApm

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

【大型实战】企业网络实验(华为核心交换、ESXI7.0vmware虚拟机、DHCP中继、服务端网络及用户端网络配置)

需求 实验 vmware网络配置&#xff08;企业内部一般为ESXI&#xff09; 这样服务器虚拟机使用192.168.200.X网段才能与用户侧互通 vmware虚拟机配置&#xff08;DHCP服务器网络配置&#xff09; 打开网络管理页面 nmtui重置一下网络连接&#xff08;重启网卡&#xff09; …

十分钟“手撕”七大排序

前言&#xff1a;可以通过目录来找你需要的排序的源代码。先是解释底层原理&#xff0c;后附带代码。 目录 稳定的概念 一、插入排序 二、希尔排序 三、选择排序 四、堆排序 五、冒泡排序 六、快速排序 七、归并排序 八、排序总结 额外&#xff1a;计数排序 稳定的…

论文翻译:Explainability for Large Language Models: A Survey

https://arxiv.org/pdf/2309.01029 目录 可解释性在大型语言模型中&#xff1a;一项调查摘要1 引言2 LLMs的训练范式2.1 传统微调范式2.2 提示范式 3 传统微调范式的解释3.1 局部解释3.1.1 基于特征归因的解释3.1.2 基于注意力的解释3.1.3 基于示例的解释 3.2 全局解释3.2.1 基…

大规模优化问题,Scipy?Ceres?PyTorch!

背景&#xff1a; 优化问题一般通过scipy.optimize或者Ceres Solver优化器求解。但在参数量较大的优化问题上&#xff0c;scipy提供的BFGS、L-BFGS-B、CG、SLSQP等梯度优化算法其复杂度和存储需求指数级上升&#xff0c;无法满足计算效率&#xff1b;而Ceres需要额外的语言来支…

VTK----3D picking的原理、类型及实现

目录 3D picking概述 3D射线投射原理 VTK picking框架 vtkPicker(选Actor) vtkPointPicker(选点) vtkCellPicker(选单元) vtkAreaPicker(框选) 3D picking概述 3D picking 是一种在三维场景中确定用户点击或指向的对象的技术。这在3D应用程序和游戏中非常常见,…

React Native 自定义 Hook 获取组件位置和大小

在 React Native 中自定义 Hook useLayout 获取 View、Pressable 等组件的位置和大小的信息 import {useState, useCallback} from react import {LayoutChangeEvent, LayoutRectangle} from react-nativeexport function useLayout() {const [layout, setLayout] useState&l…