4.LVS负载均衡集群

news2024/11/19 17:38:23

文章目录

  • LVS负载均衡集群
    • 集群介绍
    • 集群类型
    • LVS工作模式
    • LVS虚拟服务器介绍
    • LVS的NAT模式部署
        • 设置NFS服务器
        • 设置节点服务器
        • 配置负载调度器

LVS负载均衡集群

集群介绍

  • 群集的含义

    • Cluster,集群、群集
    • 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口 (域名或IP地址),相当于一台大型计算机
    • 多台服务器干一样的事叫集群,多台服务器各司其职叫分布式
  • 解决方法

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

集群类型

  • 根据群集所针对的目标差异,可分为三种类型

    • 负载均群集
    • 高可用群集
    • 高性能运算群集
  • 负载均衡群集 (Load Balance Cluster)

    • 提高应用系统的响应能力、尽可能处理更多的访问请求减少延迟为目标,获得高并发、高负载(LB)的整体性能
    • LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询” “反向代理”等
    • 应用代表:软件类:LVS、Nginx、HAproxy 硬件:F5、绿盟
  • 高可用群集(High Availability Cluster)

    • 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
    • 2-5个9之间
    • 代表:Keepalived、heartbeat
    • HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线
    • 主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点
      例如,“故障切换”“双机热备”等
  • 高性能运算群集 (High Performance Computer Cluster)

    • 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
    • 高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,“云计算”“网格计算”等
  • 负载均衡的结构

    • 第一层,负载调度器(Load Balancer或Director)
      • 访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP 地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
    • 第二层,服务器池 (Server Pool)
      • 群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
    • 第三层,共享存储 (Share Storage)
      • 为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。

在这里插入图片描述

  1. 客户端通过VIP地址,将访问请求发送到负载均衡器
  2. 调度器会根据调度算法找到适合的节点服务器,并将请求通过RIP转发到对应的节点服务器
  3. NAS或文件服务器一般也会与节点服务器在同一个局域网内,并会通过NFS服务将共享目录里的文件数据同步给各个节点服务器

LVS工作模式

  • 负载均衡群集是目前企业用得最多的群集类型

  • 群集的负载调度技术有三种工作模式

    • 地址转换
    • IP隧道
    • 直接路由
  • 地址转换

    • Network Address Translation,简称NAT模式
    • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
    • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

在这里插入图片描述

  • IP隧道
    • IP Tunnel,简称TUN模式
    • 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
    • 服务器节点分散在互联网中的不同位置具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

在这里插入图片描述

  • 直接路由
    • Direct Routing,简称DR模式
    • 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
    • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

在这里插入图片描述

LVS虚拟服务器介绍

  • Linux Virtual Server
    • 针对Linux内核开发的负载均衡解决方案
    • LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法
modprobe ip_vs     ##调用LVS
cat /proc/net/ip_vs

cd /net/
  • LVS的负载调度算法

    • 轮询 (Round Robin)

      • 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
    • 加权轮询(Weighted Round Robin)

      • 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
      • 保证性能强的服务器承担更多的访问流量
    • 最少连接 (Least Connections)

      • 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
    • 加权最少连接(Weighted Least Connections)

      • 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
      • 性能较高的节点将承担更大比例的活动连接负载
  • LVS调度器用的调度方法基本分为两类:

  • 固定调度算法:rr,wrr,dh,sh

    • ==rr:轮询算法,==将请求依次分配给不同的rs节点,即RS节点中均摊分配。适合于RS所有节点处理性能接近的情况。
    • ==wrr:加权轮训调度,==依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
    • dh:目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得所需RS。
    • sh:源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。
  • 动态调度算法:wlc,lc,lblc

    • ==wlc:加权最小连接数调度,==假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS。
    • ==lc:最小连接数调度(least-connection),==IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。
    • lblc:基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

LVS的NAT模式部署

ipvsadm 工具选项说明:

—A:添加虚拟服务器
—D:删除整个虚拟服务器
—s:指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: 1c、加权最少连接: 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

在这里插入图片描述

设置NFS服务器

设置NFS服务器

## 设置NFS服务器
IP为192.168.242.69

systemctl stop firewalld
systemctl disable firewalld
setenforce 0


yum -y install nfs-utils rpcbind

mkdir /opt/ggl 
mkdir /opt/abc
chmod 777 /opt/ggl 
chmod 777 /opt/abc
echo '<h1>this is first web</h1>' > /opt/ggl/index.html
echo '<h1>this is second web</h1>' > /opt/abc/index.html

vim /etc/exports
/opt/ggl 192.168.242.0/24(rw,sync)
/opt/abc 192.168.242.0/24(rw,sync)

systemctl start rpcbind
systemctl start nfs

systemctl enable rpcbind
systemctl enable nfs

showmount -e
##发布分享
exportfs -rv  

设置节点服务器

设置节点服务器

##设置节点服务器
节点1:192.168.242.67
节点2:192.168.242.68

systemctl stop firewalld
systemctl disable firewalld
setenforce 0


vim /etc/yum.repos.d/nginx.repo
  
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

yum install -y nginx

showmount -e 192.168.242.69

设置节点服务器一

IP地址:192.168.242.67
修改网关:192.168.242.66

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

IPADDR=192.168.242.67
NETMASK=255.255.255.0
GATEWAY=192.168.242.66

systemctl restart network

##yum安装的nginx服务的主目录在   /usr/share/nginx/html/
mount 192.168.242.69:/opt/ggl /usr/share/nginx/html/

cd /etc/nginx/
vim nginx.conf

keepalive_timeout 0;

systemctl restart nginx

设置节点服务二

IP地址:192.168.242.68
修改网关:192.168.242.66

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

IPADDR=192.168.242.68
NETMASK=255.255.255.0
GATEWAY=192.168.242.66

systemctl restart network

mount 192.168.242.69:/opt/abc /usr/share/nginx/html/

cd /etc/nginx/
vim nginx.conf

keepalive_timeout 0;

systemctl restart nginx

配置负载调度器

配置负载调度器

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



##设置两个网卡

ens32:192.168.242.66
ens33:12.0.0.30


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

IPADDR=192.168.242.66
NETMASK=255.255.255.0


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

IPADDR=12.0.0.30
NETMASK=255.255.255.0

systemctl restart network

配置SNAT转发规则

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

sysctl -p

iptables -t nat -F && iptables -F
iptables -nL

iptables -t nat -A POSTROUTING -s 192.168.242.0/24 -o ens33 -j SNAT --to 12.0.0.30


iptables -t filter -A FORWARD -p tcp --dport 80 -j ACCEPT

加载LVS内核模块

modprobe ip_vs                 ##加载ip_vs模块
cat /proc/net/ip_vs            ##查看ip_vs版本信息

cd /usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/net/netfilter/ipvs/
##ip_vs的模块的位置,在内核文件中

安装ipvsadm管理工具

yum -y install ipvsadm

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

ipvsadm-save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm

ipvsadm -C           ##清空所有规则
ipvsadm -A -t 12.0.0.30:80 -s rr                ##添加虚拟服务器

##添加节点服务器
ipvsadm -a -t 12.0.0.30:80 -r 192.168.242.67:80 -m -w 1
ipvsadm -a -t 12.0.0.30:80 -r 192.168.242.68:80 -m -w 1

##激活策略
ipvsadm

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

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

相关文章

卷积神经网络之父的强人工智能路线图:自监督,推理,规划

导读 2023 年 6 月 9 日&#xff0c;智源大会第一天。在这场众星云集的盛会中。目前「深度学习三驾马车」中最活跃的 Yann LeCun 教授带来了重磅演讲「朝向能学习&#xff0c; 思考和计划的机器进发&#xff08; Towards Machines that can Learn, Reason, and Plan&#xff09…

QtXlsxWriter make报错:[Makefile:45:sub-xlsx-make_first] 错误

新安装的银河麒麟系统&#xff08;x64版&#xff09;&#xff0c;编译QtXlsxWriter库的时候报错&#xff1a; rootzhouyingge1104-GB01:/home/zhouyingge1104/Downloads/QtXlsxWriter-master# make cd src/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Make…

AD09 PCB拼板制作完整流程

1、新建PCB文件 画好PCB之后&#xff0c;先在原有工程文件下新建一个PCB文件&#xff08;可以保存为XXX拼板&#xff09;&#xff0c;PCB大小根据拼板前大小以及拼板阵列确定&#xff08;也可以在做好工艺边后再修改大小&#xff09;。 2、放置PCB阵列 如上图&#xff0c;来…

《微服务实战》 第二十九章 分布式事务框架seata AT模式

前言 本章节介绍微服务分布式项目中&#xff0c;使用的事务框架seata。 官网&#xff1a;http://seata.io/zh-cn/ springcloud-nacos-seata&#xff1a;https://github.com/seata/seata-samples/tree/master/springcloud-nacos-seata 1、概念 Seata 是一款开源的分布式事务解…

线程堵塞(挂起)导致消息队列消息挤压

一、背景 A服务作为生产者&#xff0c;每天发送上百万的mq消息&#xff0c;每一个消息包含500个用户id数据。 B服务作为消费者&#xff0c;接受MQ消息并通过http调用第三方请求进行业务处理&#xff0c;消费组使用了rabbitmq 的多线程消费组&#xff0c;一个实例并发40个mq消…

四种Bootloader程序安全机制设计

正文 大家周末好&#xff0c;我是bug菌~ 不管是玩单片机还是嵌入式linux&#xff0c;基本上都会接触到bootloader&#xff0c;所以bootloader程序也是一个关键的组件&#xff0c;进行硬件初始化&#xff0c;应用程序的合法性、完成性检测、升级功能等等都与其息息相关。 像一些…

【ABAP】数据类型(二)「预定义数据类型」

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…

【哈希的模拟实现】

文章目录 1 哈希概念2 哈希冲突2.1 直接定址法 (常用)2.2 除留余数法 (常用)2.3 平方取中法2.4 折叠法2.5 随机数法2.6 数学分析法 3 闭散列3.1 线性探测3.2 二次探测 4 开散列4.1 开散列概念4.2哈希桶的模拟实现4.3 开散列与闭散列的比较 1 哈希概念 顺序结构以及平衡树中&…

Science|改变微生物群落可以增强树木对气候变化的耐受性

改变微生物群落可以增强树木对气候变化的耐受性 Shifting microbial communities can enhance tree tolerance to changing climates Research Article&#xff0c;2023-5-25&#xff0c;Science&#xff0c; [IF 63.714] DOI&#xff1a;10.1126/science.adf202 第一作者&…

Java常用快捷键

在编写java代码时&#xff0c;要提升自己的编写代码的速度&#xff0c;光是靠鼠标来完成各种的操作是不行的&#xff0c;还会显得十分不成熟&#xff0c;所以这是就需要我们使用一定的快捷键&#xff0c;在键盘点击之间&#xff0c;完成代码的操作。接下来我就为大家介绍常用的…

7.2DIY可视化后台表格自定义列显示类型

后台表格自定义列显示类型 本教程均在第一节中项目启动下操作 后台表格自定义列显示类型前言一、图片格式内容显示:二. 效果展示: http://localhost:9999/#/hdp三:自定义列使用:1.添加字段:自定义列,取值自幻灯片title2. 设置自定义信息: 三.效果展示本文章原自bilibli作者视频…

6月6日复盘总结 11H10min-|23:15~23:25*

​​​​​​​ 7:20-8:20 背书翻译单词 【1h】 8:30-9:00 乐词 【30min】 9:00-10:00 TPO66 L1 精听 【1h】 10:00-10:30 TPO66 L1 错题分析 【30min】 10:30-11:30 L2 Fish Movement 精听 【1h】 11:40-12:40 午饭+水果🍑+玩手机…

【华为OD统一考试B卷 | 100分】经典屏保(C++ Java JavaScript Python)

题目描述 DVD机在视频输出时,为了保护电视显像管,在待机状态会显示“屏保动画”,如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹。 请根据如下要求,实现屏保Logo坐标的计算算法。 屏幕是一个800*600像素的矩形,规定屏幕的左上角点坐标原点,沿横边向右方向为X轴…

jeecg-boot权限篇

前言 本文档是对jeecg-boot官方文档的一个分析和补充&#xff0c;具体的可以同时互相参照来看&#xff0c;难免个人理解有出路&#xff0c;如有错误&#xff0c;还望补充和指正&#xff5e; 文章目录 角色、用户、部门普通权限控制特殊定制化权限按钮控制文本输入禁用 列表控制…

碳中和城市建筑能源系统(2):网络篇(龙惟定)2022

碳中和城市建筑能源系统(2):网络篇 摘要 本文是碳中和城市建筑能源系统系列文章的第二篇,分别概要介绍了城市能源系统中的电网、热网和燃气网在碳中和背景下的新概念、新技术及新方法。强调未来的能源网以电网为主,三网融通,构成城区的能源互联网。综述了智能电网的灵活性、热…

我们不会很快有GPT-5;让 ChatGPT 帮我们总结 Hacker News

&#x1f989; AI新闻 &#x1f680; OpenAI联合创始人Sam Altman&#xff1a;我们不会很快有GPT-5 摘要&#xff1a;在2023北京智源大会的“AI安全与对齐”主题论坛上&#xff0c;OpenAI联合创始人Sam Altman表示&#xff0c;目前他们没有答案&#xff0c;不会很快有GPT-5&a…

OpenCV 项目开发实战--对图像种的斑点进行检测(Python、C++代码实现)

什么是斑点? Blob 是图像中一组连接的像素,它们共享一些共同的属性(例如,灰度值)。在上图中,暗连接区域是斑点,斑点检测旨在识别和标记这些区域。 文末附相关测试代码的下载链接 SimpleBlobDetector 示例 OpenCV 提供了一种基于不同特征检测和过滤斑点的便捷方法。让…

es相关的知识点

海量数据下如何提升es的操作性能 .filesystemcache os cache操作系统缓存 es中的数据,实际上写入磁盘,磁盘文件的操作系统,实际上会将数据写入到oscache中 es的搜索引擎严重依赖于底层的filesystemcache 如果filesystemcache的内存足够大,可以容纳所有的index segmentfile索引…

Mac环境下在vs code中配置copilot

1、下载vs code编辑器 2、在GitHub个人设置里&#xff0c;把copilot设为allow&#xff0c;这里涉及要开通服务就不再详述。 3、在vs code插件市场里下载GitHub copilot 安装好了以后根据指示输入你的GitHub账号即可 编译器底部出现copilot图标即表示安装成功 使用方法就是你先…

GD32F4单片机实现接收超时中断+DMA实现串口的不定长接收和DMA发送

1、通常的实现方式介绍 环形缓冲区定时器超时中断的方式 优点 环形缓冲区可以接收多帧数据数据帧超时间隔可以设置 缺点 设备任务比较繁重时&#xff0c;使用中断接收可能会丢失数据。尤其是在长时间关闭中断或者串口中断优先级不高时频繁进出中断。在使用RTOS的系统中&#x…