Linux:lvs集群技术

一.集群和分布式

1.1 集群

集群是为了解决某个特定问题将多台计算机组合起来形成的单个系统。即当单独一台主机无法承载现有的用户请求量;或者一台主机因为单一故障导致业务中断的时候,就可以增加服务主机数,这些主机在一起提供服务,就叫集群。

类型:

LB(负载均衡);HA(高可用);HPC(高性能计算)

1.2 分布式

一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务。

1.3 集群与分布式的区别

集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的,即通过提高单位时间内执行的任务数来提升效率,不会因个别主机无法响应而无法进行业务访问。

分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务 分布式是以缩短单个任务的执行时间来提升效率的,若个别主机无法响应则会导致无法完成完整的业务,导致无法完成服务。

二.lvs运行原理

2.1 LVS概念

VS:调度器

RS:服务器

CIP:用户 IP

VIP: 调度器链接外网的IP

DIP: 调度器链接内网的IP

RIP: 服务器 IP

访问流程:CIP VIP == DIP RIP

2.2 lvs集群的类型

lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT

lvs-dr: 操纵封装新的MAC地址

lvs-tun: 在原请求IP报文之外新加一个IP首部

lvs-fullnat: 修改请求报文的源和目标IP

2.2.1 nat模式

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和

PORT实现转发。

工作原理

1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口 (9000port)

2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口

3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口 (9000port)

4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)

5.VS服务器把修改过报文的响应数据包回传给客户端

缺点:lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞。

部署NAT模式集群案例
实验环境
主机名ip角色
clienteth0:172.25.254.111/24用户主机
lvs

eth0:172.25.254.100/24(VIP)

eth1:192.168.0.100/24(DIP)仅主机

调度器

rs1

eth0:192.168.0.10(RIP1)web服务器1
rs2eth0:192.168.0.20(RIP2)web服务器2

配置命令

client:

1.设置路由

 

dr-lvs:

1.安装ipvsadm(下图为主机已安装的图片)

 2.设置内核路由功能

 3.添加和查看调度策略

 ipvsadm:

(1)管理集群服务中的增删改

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]

-A :添加

-E:修改

-Z:清空计数器

-C:清空lvs策略

-L:查看lvs策略

-t:tcp服务

-u:udp服务

-s:指定调度算法,默认为WLC -p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver -f #firewall mask 火墙标记,是一个数字

(2)管理集群中RealServer的增删改

ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]

-a:添加realserver

-e:更改realserver

-t:tcp协议

-u:udp协议

-f:火墙 标签

-r:realserver地址

-g:直连路由模式

-i:ip隧道模式

-m:nat模式

-w:设定权重

--rate :输出速率信息

 4.关闭火墙

rs1/rs2:

1.设置路由(以rs1为例):

2.关闭rs的防火墙/允许http服务通过火墙

效果 :

2.2.2 dr模式

工作原理

1.客户端发送数据帧给vs调度主机帧中内容为客户端IP+客户端的MAC+VIP+VIP的MAC

2.VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC,此时帧中的数据为客户端IP+客户端的MAC+VIP+RS1的MAC

3.RS1得到2中的数据包做出响应回传数据包,数据包中的内容为VIP+RS1的MAC+客户端IP+客户端IP的MAC

特点:

(1)Director和各RS都配置有VIP

(2)确保前端路由器将目标IP为VIP的请求报文发往Director

(3)在前端网关做静态绑定VIP和Director的MAC地址

部署DR模式集群案例
实验环境
主机名IP角色
clienteth0:172.25.254.111/24(CIP)客户端主机
route

eth0:172.25.254.100/24

eth1:192.168.0.100/24(仅主机)

路由器
lvs

eth0:192.168.0.220/24(VIP)(仅主机)

eth0:192.168.0.200/24(DIP)(仅主机)

调度器
rs1

lo:127.0.0.1/8

lo:192.168.0.220/32(VIP)

eth0:192.168.0.10(RIP)(仅主机)

web服务器1

rs2

lo:127.0.0.1/8

lo:192.168.0.220/32(VIP)

eth0:192.168.0.20(RIP)(仅主机)

web服务器2
配置命令

client:

1.如nat模式设置

route:

2.设置内核路由功能

lvs:

1.添加和查看调度策略

2.若未关闭火墙则将其关闭

 rs(以rs1为例):

解决rs的响应问题,使其不对外响应

效果:

2.2.3 tun模式

工作原理

1.客户端发送请求数据包,包内有源IP+vip+dport

2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头,新添加的IP报文头中包含TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到RS1

3.RS收到VS调度器发送过来的数据包做出响应,生成的响应报文中包含SRCIP(VIP)+DSTIP(CIP)+port,响应数据包通过网络直接回传给client

2.2.4 fullnet模式

特点:

fullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发

CIP --> DIP VIP --> RIP

1.VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP

2.RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client

3.请求和响应报文都经由Director

4.支持端口映射

2.3 lvs持久链接

在我们客户上网过程中有很多情况下需要和服务器进行交互,客户需要提交响应信息给服务器,如果单 纯的进行调度会导致客户填写的表单丢失,为了解决这个问题我们可以用sh算法,但是sh算法比较简单 粗暴,可能会导致调度失衡

解决方案

在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把 这个源的主机调度到了那个RS上 如果在短期(默认360S)内同源再来访问我仍然按照内存中记录的调度信息,把这个源的访问还调度到 同一台RS上。 如果过了比较长的时间(默认最长时间360s)同源访问再次来访,那么就会被调度到其他的RS上

 效果:

三.lvs的调度算法

3.1 lvs调度算法类型

静态方法:仅根据算法本身进行调度,不考虑RS的负载情况

动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度

3.2 lvs静态调度算法

1. RR:roundrobin 轮询 RS分别被调度,当RS配置有差别时不推荐

2. WRR:Weighted RR,加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少

3. SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往 第一次挑中的RS,从而实现会话绑定

4. DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS

3.3 lvs动态调度算法

主要根据RS当前的负载状态及调度算法进行调度Overhead=value较小的RS会被调度

1. LC:least connections(最少链接发)

适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活 动链接数)

2. WLC:Weighted LC(权重最少链接) 默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight 3、SED:Shortest Expection Delay,

初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight 但是,当node1的权重为1,node2的权重为10,经过运算前几次的调度都会被node2承接

4. NQ:Never Queue,第一轮均匀分配,后续SED

5. LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理

6. LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制 到负载轻的RS

四.防火墙标签解决轮询错误

以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出现了一个轮询错乱的问题

当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上

问题呈现:

RS1和RS2中安装mod_ssl并重启apache(以rs1为例)

 问题解决:

效果 :

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

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

相关文章

【管理】持续交付2.0:业务引领的DevOps-精要增订本,读书笔记(理论模型,技术架构,业务价值)

【管理】持续交付2.0:业务引领的DevOps-精要增订本,读书笔记(理论模型,技术架构,业务价值) 文章目录1、持续交付的理论模型(第1-3章)1.1 结构图1.2 持续交付的演进1.3 双环模型理论体…

Wilcox检验的星星怎么规定的?

在 R 里&#xff0c;常见的把 p 值映射为“星号”标记&#xff08;显著性水平&#xff09;的规则通常是&#xff1a;p 值范围标记p ≤ 0.0001“****”0.0001 < p ≤ 0.001“***”0.001 < p ≤ 0.01“**”0.01 < p ≤ 0.05“*”0.05 < p ≤ 0.1“.”p > 0.1…

https与DNS的运行流程

HTTPS流程&#xff1a;HTTPS核心:加了TLS层&#xff0c;加密传输身份认证TLS:信息加密、校验机制、身份证书TLS&#xff08;Transport Layer Security&#xff09;握手是建立安全通信通道的关键过程&#xff0c;发生在客户端&#xff08;如浏览器&#xff09;和服务器之间。其主…

板子 5.29--7.19

板子 5.29–7.19 目录 1. 树状数组 2. KMP 3. 矩阵快速幂 4. 数位DP 5. 状压枚举子集 6. 快速幂&#xff08;新版 7. priority_queue 8. dijkstra 9. 单调栈 10. debug内容 1. 树状数组 // 树状数组 快速求前缀和 / 前缀最大值 // 维护位置数量(离散化)...// (区间加 区间求和…

min-max容斥学习笔记

最近报了航电的春季赛&#xff0c;在一道题目里面遇到了做法&#xff0c;感觉挺有意思。 考虑一个&#xff08;多重&#xff09;集合S{ai}S\{a_i\}S{ai​}&#xff0c;有如下的等式成立 min⁡ai∈S(ai)∑T⊆S,T≠∅(−1)∣T∣−1max⁡ai∈T(ai)\min_{a_i\in S}(a_i)\sum_{T\sub…

使用帆软制作项目

https://zhuanlan.zhihu.com/p/23429318335 项目背景 为加快大数据体系建设&#xff0c;稳步推进数字化转型战略&#xff0c;规范数据架构体系和数据治理体系&#xff0c;运用大数据推进全行数字化转型建设&#xff0c;为业务发展提供创新动力&#xff0c;目标是利用金融科技和…

论C/C++的条件编译#if、#ifdef、#ifndef、#undef

我们以实例来演示&#xff1a; ------------------------------------------实验①------------------------------------------ 子函数&#xff1a;主函数&#xff1a;当定义了COMMENT_FLAG该宏&#xff0c;且其为0&#xff0c;则运行结果如下&#xff1a;只执行了sub_func_1函…

21、鸿蒙Harmony Next开发:组件导航(Navigation)

目录 设置页面显示模式 设置标题栏模式 设置菜单栏 设置工具栏 路由操作 页面跳转 页面返回 页面替换 页面删除 移动页面 参数获取 路由拦截 单例跳转 子页面 页面显示类型 页面生命周期 页面监听和查询 页面转场 关闭转场 自定义转场 共享元素转场 跨包…

“外卖大战”正在改变国内“大零售”

出品 | 何玺排版 | 叶媛7月18日&#xff0c;市场监管总局约谈美团、饿了么、京东三家外卖平台&#xff0c;要求“理性竞争、规范促销”&#xff0c;剑指近期愈演愈烈的“0元购”“0.1秒杀”等外卖补贴乱象。但约谈之后&#xff0c;平台们是真整改&#xff0c;还是玩话术&#x…

当CAN握手EtherCAT:视觉检测系统的“双芯合璧”时代来了

在汽车制造的高速生产线上&#xff0c;设备间的“语言不通”曾是工程师们的头疼事&#xff1a;CAN总线像踏实的老司机&#xff0c;稳扎稳打传输传感器数据&#xff1b;而EtherCAT网关则是追求极致速度的“闪电侠”&#xff0c;主导着实时控制的重任。当视觉检测系统需要同时对接…

【C语言】动态内存管理全解析:malloc、calloc、realloc与free的正确使用

C语言学习 动态内存分配 友情链接&#xff1a;C语言专栏 文章目录C语言学习前言&#xff1a;一、为什么要有动态内存分配二、malloc和free2.1 malloc2.2 free三、calloc和realloc3.1 calloc3.2 realloc总结附录上文链接下文链接专栏前言&#xff1a; 在C语言编程中&#xff0…

基于Arduino智能家居环境监测系统—以光照强度检测修改

2 相关技术与理论 2.1 Arduino 技术 Arduino 是一款广受欢迎的开源电子原型平台&#xff0c;由硬件和软件组成&#xff0c;为开发者提供了便捷且低成本的解决方案&#xff0c;尤其适用于快速搭建交互式电子项目&#xff0c;在本智能家居环境监测系统中担当核心角色。​ 硬件方…

前端上传 pdf 文件 ,前端自己解析出来 生成界面 然后支持编辑

要在前端解析 PDF 文件并生成可编辑界面&#xff0c;我们可以使用 PDF.js 库来解析 PDF 内容&#xff0c;然后将其转换为可编辑的 HTML 元素。 主要特点和工作原理如下&#xff1a; PDF 解析&#xff1a; 使用 Mozilla 的 PDF.js 库解析 PDF 文件内容&#xff0c;提取文本信息。…

Linux“一切皆文件“设计哲学 与 Linux文件抽象层:struct file与file_operations的架构解析

在Linux系统中&#xff0c;“一切皆文件”&#xff08;Everything is a file&#xff09;是一个核心设计哲学&#xff0c;它抽象了系统资源的访问方式&#xff0c;使得几乎所有硬件设备、进程、网络连接等都可以通过统一的文件接口&#xff08;如open()、read()、write()、clos…

蓝桥杯零基础到获奖-第3章 C++ 变量和常量

蓝桥杯零基础到获奖-第3章 C 变量和常量 文章目录一、变量和常量1.变量的创建2.变量初始化3.变量的分类4.常量4.1 字⾯常量4.2 #define定义常量4.3 const 定义常量4.4 练习练习1&#xff1a;买票https://www.nowcoder.com/practice/0ad8f1c0d7b84c6d8c560298f91d5e66练习2&…

物理AI是什么技术?

当英伟达CEO黄仁勋在链博会上明确提出“物理AI将是AI的下一浪潮”时&#xff0c;这个看似陌生的概念瞬间引发了科技圈的广泛关注。究竟什么是物理AI&#xff1f;它与我们熟悉的人工智能有何不同&#xff1f;又将如何重塑我们与物理世界的交互方式&#xff1f; 物理AI&#xff1…

GRIB数据处理相关指令

GRIB 数据格式简介 GRIB(General Regularly distributed Information in Binary form)&#xff0c;是由世界气象组织&#xff08;WMO&#xff09;设计和维护的一种用于存储和传输网格数据的标准数据格式&#xff0c;它是一种自描述的二进制压缩格式&#xff0c;通常具有扩展名…

微服务学习(六)之分布式事务

微服务学习&#xff08;六&#xff09;之分布式事务一、认识Seata二、部署TC服务1、准备数据库表2、准备配置文件3、docker部署三、微服务集成seata1、引入依赖2、改造配置3、添加数据库表4、测试四、XA模式1、两阶段提交2、seata的XA模型3、优缺点4、实现步骤五、AT模式1、Sea…

Go实现用户登录小程序

写一个用户登录注册的小程序 运行程序&#xff0c;给出提示1. 注册输入用户名、密码、年龄、性别 {"用户名": "root", "passwd": "123456", "age": 18, "sex": "男"}注册前要判断是否存在此用户2. 登录…

鸿蒙蓝牙通信

https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-bluetooth-low-energy 蓝牙权限 module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.ACCESS_BLUETOOTH","reason": "…