当前位置: 首页 > news >正文

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上

 效果:

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

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

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

问题呈现:

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

 问题解决:

效果 :

http://www.dtcms.com/a/287987.html

相关文章:

  • 跨境卖家紧急自查,Endryko Karmadi四季版画版权维权
  • 单例模式的设计与实现
  • Helm常用命令大全(2025最新版)
  • 马拉车(Manacher)算法
  • 自动化立体仓库堆垛机控制系统上报堆垛机状态 FC5
  • PCA主成分分析
  • js (bom)
  • [论文阅读] 软件工程 | 用模糊逻辑“解锁”项目成功:告别非黑即白的评估时代
  • MybatisPlus-08.核心功能-IService开发基础业务接口
  • CAN通信驱动开发注意事项
  • 【工具自荐】配置文件管理器:支持本地与远程配置文件的统一管理、编辑、刷新
  • TCP/IP 哲学:端到端的 Postel 定律
  • 从单个神经元到数字识别神经网络的演变
  • 【黄山派-SF32LB52】—硬件原理图学习笔记
  • Java从入门到精通:全面学习路线指南
  • 阿里云ssl证书自动安装及续订(acme)
  • Python之--元组
  • 7月19日 台风“韦帕“强势逼近:一场与时间赛跑的防御战
  • 回溯算法(Backtracking Algorithm)
  • day056-Dockerfile案例与Docker Compose
  • docker run快速启动一个容器
  • C++ :vector的模拟
  • 第J8周打卡
  • 【Linux】LVS(Linux virual server)环境搭建
  • uni-app 应用、页面、组件生命周期
  • Python+大模型 day02
  • 1.2M 小工具! 解决 Windows 系统疑难杂症
  • MVP 最小可行产品
  • 《Electron应用性能深耕:资源加载与内存治理的进阶路径》
  • 【51单片机学习】LED、独立按键