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 【也可以恢复】

相关推荐
yuanManGan23 分钟前
Linux基本指令(一)
linux·运维·服务器
Pi_Qiu_39 分钟前
Python初学者笔记第十三期 -- (常用内置函数)
java·笔记·python
珹洺1 小时前
Linux操作系统从入门到实战(十)Linux开发工具(下)make/Makefile的推导过程与扩展语法
linux·运维·服务器
HCIE考证研究所1 小时前
考完数通,能转云计算/安全方向吗?转型路径与拓展路线分析
网络·安全·华为·云计算·网络工程师·华为认证·数通
搞数据的小杰2 小时前
spark广播表大小超过Spark默认的8GB限制
大数据·数据库·分布式·spark
不过普通话一乙不改名2 小时前
扩展:操作系统之高性能网络计算
网络·笔记
花海如潮淹3 小时前
物联网设备管理工具实战:用AR运维镜击穿6.8天修复魔咒
运维·物联网·ar
isNotNullX3 小时前
数据怎么分层?从ODS、DW、ADS三大层一一拆解!
大数据·开发语言·数据仓库·分布式·spark
不会敲代码的XW3 小时前
LVS(Linux Virtual Server)详细笔记(理论篇)
linux·笔记·lvs
nbsaas-boot3 小时前
如何设计一个合理的 Java Spring Boot 项目结构
java·运维·云计算