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

LVS的集群技术和分布式

关于LVS实验环境

配置参考

lvs主机:ens160(对外的):172.25.254.100  。 ens192:192.168.0.100

RS主机两个(仅主机):192.168.0.10 和 192.168.0.20

测试机(NAT):172.25.254.11

lvs主机:# vim /etc/sysctl.conf   【配置参数文件,开启路由功能,可以 # sysctl -p 查看】

        net.ipv4.ip_forward=1

火墙:

# systemctl enable --now httpd

# firewall-cmd --list-ports | grep '80'

# firewall-cmd --add-service=http --permanent

# firewall-cmd --reload

检测:

lvs主机可以相互ping通两个RS主机的192.168.0.10/20

两个RS主机:# echo "RS" > /var/www/html/index.html,lvs主机可以# curl  RS的IP 访问

安装LVS

# dnf install ipvsadm -y      【安装lvs】

# ipvsadm --help        【查看lvs命令写法】

集群和分布式简介

系统性能扩展

Scale UP :向上扩展,提高性能

Scale Out :向外扩展,调度分配,Cluster

集群Cluster

Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统

Cluster常见的三种类型:

        LB:LoadBalancing(负载均衡)由多个主机组成,每个主机只承担一部分访问

        HA:High Availiablity(高可用)SPOF(single Point Of failure)

                MTBF:Mean Time Between Failure 平均无故障时间,正常时间

                MTTR:Mean Time To Restoration( repair)平均恢复前时间,故障时间

                A=MTBF/(MTBF+MTTR) (0,1):99%, 99.5%, 99.9%, 99.99%, 99.999%

                SLA:Service level agreement(服务等级协议)是在一定开销下为保障服务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。在常规的领域中,总是设定所谓的三个9,四个9来进行表示,当没有达到这种水平的时候,就会有一些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。

                停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外停机时间

        HPC:High-performance computing(高性能计算,国家战略资源,不在课程范围内)

分布式

分布式存储:Ceph,GlusterFs,FastDFS,MogileFs

分布式计算:hadoop,Spark

分布式常见应用:

        分布式应用-服务按照功能拆分,使用微服务

        分布式静态资源--静态资源放在不同的存储集群上

        分布式数据和存储--使用key-value缓存系统

        分布式计算--对特殊业务使用分布式计算,比如Hadoop集群

注意:集群是一个不能用了其他的还可以用,分布式是一个不能用了全部都不能用了

集群和分布式

        集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的

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

        分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率,

        对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败

Lvs 运行原理

        LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩,阿里的四层SLB(Server LoadBalance)是基于LVS+keepalived实现

LVS 相关术语

        VS: Virtual Server,负责调度

        RS:RealServer,负责真正提供服务

lvs集群体系结构:

工作原理:

VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法挑选RS

LVS概念

        VS:Virtual Server

        RS:Real Server

        CIP:Client IP

        VIP: Virtual serve IP VS外网的IP

        DIP: Director IP VS内网的IP

        RIP: Real server IP

访问流程:CIP <--> VIP == DIP <--> RIP

lvs集群的类型   【lvs四种模式】

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

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

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

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

nat模式

Ivs-nat:

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

        RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP

        请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈

        支持端口映射,可修改请求报文的目标PORT

        VS必须是Linux系统,RS可以是任意OS系统

nat模式数据逻辑

发起请求:

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

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

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

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

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

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

目标地址:

        客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通过PREROUTING后被ipvs结果并作nat转发。

        因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工作。所以在做lvs时要把iptables的火墙策略全清理掉。

lvs部署命令

lvs软件相关信息

        程序包: ipvsadm

        Unit File:  ipvsadm.service

        主程序: /usr/sbin/ipvsadm

        规则保存工具: /usr/sbin/ipvsadm-save

        规则重载工具: /usr/sbin/ipvsadm-restore

        配置文件: /etc/sysconfig/ipvsadm-config

ipvs调度规则文件:/etc/sysconfig/ipvsadm

ipvsadm命令

        作用:集群服务管理:增、删、改 。    集群服务的RS管理:增、删、改 。   查看集群

# ipvsadm -D -t|u|f service-address    删除

# ipvsadm –C       清空

# ipvsadm –R       重载

# ipvsadm -S [-n]    保存

管理集群服务中的增删改

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

# watch -n 1  "ipvsadm -Ln"  监控代码

        -A         # 添加

# ipvsadm -A -t 172.25.254.100:80 -s rr    【添加集群】

        -E         # 修改

# ipvsadm -E -t 172.25.254.100:80 -s wrr   【修改集群】

        -C          # 全部刷新掉

# ipvsadm -C

        -t          # tcp服务

        -u          # udp服务

        -d          # 删除

# ipvsadm -D -t 172.25.254.100:80

        -s          # 指定调度算法,默认为WLC

        -p          # 设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver

        -f           # firewall mask 火墙标记,是一个数字

管理集群中RealServer的增删改      

【要先ipvsadm -A -t 172.25.254.100:80 -s rr建立集群】

格式: 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          #直连路由模式

# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -g     【添加realserver】

        -i          #ipip隧道模式

# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.20:80 -i    【更改realserver】

        -m          #nat模式

# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m    【添加realserver,设定nat模式】

        -w          #设定权重

# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.20:80 -i -w 2   【更改并配置权重】

        -Z          #清空计数器

# ipvsadm -Z

        -C          #清空lvs策略

        -L          #查看lvs策略

        -n          #不做解析

        --rate       # 输出速率信息

# ipvsadm-save     【以易读格式输出当前 IPVS 规则(包含服务名称解析)】

# ipvsadm-save -n     【选项表示以数字格式输出(不进行服务名称解析,输出IP)】

备份和恢复

# ipvsadm-save -n > /mnt/ipvsadm.rule     【备份保存】

# ipvsadm -C      【删除全部】

# ipvsadm-restore < /mnt/ipvsadm.rule     【恢复】

# ipvsadm-save -n > /etc/sysconfig/ipvsadm     【另一种备份方法】

# ipvsadm -C      【删除全部】

# systemctl enable --now ipvsadm.service    【也可以恢复】

http://www.xdnf.cn/news/15531.html

相关文章:

  • HTTP 四种常见方法
  • 飞桨AI Studio云编程环境搭建
  • redis实现红锁
  • MCP终极篇!MCP Web Chat项目实战分享
  • 【牛客刷题】小红的数字删除
  • 算法:投票法
  • VUE export import
  • MinIo快速入门
  • JJ20 Final Lap演唱会纪念票根生成工具
  • MIPI DSI (一) MIPI DSI 联盟概述
  • Oracle 学习笔记
  • Docker入门基础
  • GaussDB between的用法
  • 文心一言 4.5 开源深度剖析:中文霸主登场,开源引擎重塑大模型生态
  • 用基础模型构建应用(第九章)AI Engineering: Building Applications with Foundation Models学习笔记
  • # 检测 COM 服务器在线状态
  • python 双下划线开头函数
  • 网络协议和基础通信原理
  • Go泛型完全指南:从基础到实战应用
  • Fluent许可文件安装和配置
  • 车载诊断框架 --- 车载诊断GuideLine
  • 如何集成光栅传感器到FPGA+ARM系统中?
  • 如何更改Blender插件安装位置呢?
  • qt 使用memcpy进行内存拷贝时注意的问题
  • 硬盘爆满不够用?这个免费神器帮你找回50GB硬盘空间
  • EasyExcel实现Excel文件导入导出
  • [Nagios Core] 事件调度 | 检查执行 | 插件与进程
  • 解决Qt中“known incorrect sRGB profile“警告的Photoshop修改方法
  • 如何基于FFMPEG 实现视频推拉流
  • DataWhale AI夏令营 Task2笔记