LVS集群

集群:nginx四层和七层+动静分离

概念

为了解决某个特定问题将多个计算机组合起来形成一个单系统

集群的目的就是为了解决系统的性能瓶颈。

垂直扩展:向上扩展,增加单个机器的性能,升级硬件,是有瓶颈的。

水平扩展:向外扩展,增加设备,并行的运行多个服务,主要是通过网络和算法,来调度服务分配的问题

集群的类型

1.负载均衡集群:英文表示LB loab blance 多个主机组成,每个主机只承担一部分访问机制,主要靠负载均衡算法来实现。

2.高可用集群:HA high avavailiablity 避免SPOF(single point failuer) 单点故障,系统当中,有一部分组件出现故障,可以保证,整个系统继续运行

3.主从---同步(某些特定的服务需要这个概念)----还能实现负载均衡

4.HPC:high-performance computing 快速转发,快速响应。

集群的可靠性指标

MTBF:mean time between failusre :系统在正常运行期间无故障的平均时间,一般用小时,或者天数表示。MTBF值越高,系统的可靠性越高,出现故障的概率也越小

MTBF:系统从发生故障到恢复正常运行的平均时间,一般用小时或者天数表示,MTTR值越小,说明系统恢复故障的能力越强。

A:系统的可靠性指标A值越高越好,A值一般用百分号来表示

A值怎么算的?

A=MTBF /(MTBF+MTTR)

举例

99.9%A值

1年=365天=8750小时

99.9=8760*01%=8.76小时

淘宝的要求

99.999%=52.6分钟

99.9999=31秒

国家电网要求是98%

停机时间

计划内停机:指的是预定时间内的维护或者检修时间,自定义。

计划外停机:运维人员主要关注的就是计划外,如突然出现的意外 7*24小时待命

设计集群时需要考虑的一些原则

  1. 可扩展性:集群要随时可以添加或者删除设备的能力,(专业说法叫动态扩容与缩容)
  2. 可靠性:在集群中如果有节点发生故障,可以快速检测并且自动切换。
  3. 负载均衡:合理的分配负载,避免单个节点过载,影响整体的性能
  4. 可维护性:能够方便的进行配置,部署,维护,监控,降低成本。
  5. 安全性:防止恶意的攻击以及数据泄露,数据丢失。
  6. 易用性:相关的工作人员,可以方便的进入这个集群,以便快速的开发,部署,测试等等

LVS集群概念

1.Lvs:linux virtual server 是一个部署在linux 系统的通过内核层面实现负载均衡的软件

2.开发者姓名:章文嵩 ,由祂发起的开源项目

3.其主要作用:由多个后端服务器组成一个高可用,高性能,负载均衡的高性能集群,通过负载均衡的算法将客户端请求发送到都断服务器

4.阿里的SLB server load balance 基于LVS+keepalived 实现

5.Lvs集群当中的术语

Vs:(virtual server)lvs服务的逻辑名字,外部访问lvs集群时提供的一个虚拟ip地址和端口

DS:Director server : LVS集群当中的主服务器,也叫调度器,是整个LVS集群的核心,接收客户端的请求转发到后端RS

RS:real server lvs 的后端真实服务器的ip,接收到了DS的请求之后,返回响应结果。

CIP:client ip 客户端的ip地址

Vip:virtual ip 对外访问的同一虚拟IP地址。

DIP:Director ip 调度器在lvs内部使用的IP地址,用于和真是服务器进行通信

RIP:后端真实服务器的ip地址

Lvs访问的大致流程

  1. 客户端访问的都是访问vip
  2. DS接收到请求,根据调度算法选择好后端服务器(rs)请求发送给rs
  3. RS处理请求并将响应发送到DS调度器
  4. DS把RS的真实响应包装秤自己的响应,发送到客户端

客户端既不知道请求的真实服务器,也不知道响应的服务器是谁

Lvs的负载均衡方式

NAT

DR

TUN

其中NAT和DR最常用的方式

NAT模式

NAT模式是最常用的LVS负载方式之一

NAT主要功能就是地址转换

Nat模式

  1. 在调度器上配置双网卡,一个指内,一个指外

  2. 配置一个可以和公网进行通信的VIP

  3. 配置转发策略,如果访问公网的vip,就会把请求的数据转发到后台的RS,请求的格式是报文,而调度器会修改请求的目标IP地址和端口

  4. RS处理完请求之后,响应客户端,先到调度器,调度器再进行地址转换,把内网地址转换成公网地址,响应给用户

数据请求进入调度器做的请求报文中ip地址的修改

数据响应进入调度器,根据NAT配置进行地址转换

有一点要注意:调度器的内网ip地址和真实服务器的ip地址要在同一网站

Nat:对于客户端来说请求地址始终不变,客户端不需要修改任何配置,转发由调度器通过算法来完成,后端服务器只管接收响应,也不需要修改任何配置。

但是他会有个问题会导致性能损失和单点故障

DR

dr模式也叫直接路由模式,它的特点是请求由调度器完成,但是响应客户端由真是服务器直接响应,不需要通过调度器,

好处是:性能高,而且可以配置vip地址的高可用,不存在单点故障。

Tun:隧道模式隧道协议,把请求转发到后端服务器,需要在后端服务器配置隧道协议

设置lvs

Ipvsadm工具:管理ipvs内核模块的命令行工具,可用于配置和管理lvs集群

-A:添加虚拟服务器

-D:删除整个虚拟服务器

-S:指定负载调度的算法

静态调度

Rr:轮询

Wrr:加权轮询

Dh:目的地址hash

根据ip地址查找静态hash表,获取需要真实的RS的地址

Sh:源地址hash

动态调度

Lc:最小连接数

Wlc:加权最小连接数调度

权重高的。转发的就多,为了避免性能瓶颈,在跟上最小连接数分配,可以把请求往连接数量较小的服务器继续转

Lblc:基于地址的最小连接数调度

将来自同一个目的地址的请求分配给RS,如果这台服务器尚未满负荷,就会把请求分配给最小RS,贰仟在下一次转发时会优先考虑这台RS。

-a:添加真实服务器

-d:删除真实服务器

-t:指定vip地址的端口号

-r:指定RIP的端口号

-m:表示使用nat模式

-g:表示使用DR模式

-i:表示使用隧道模式(TUN模式)

-w:设置真是服务器的权重

-p60:设置连接保持的时间为60秒(默认不带)

-ln:以数字和列表的形式查看lvs的配置信息

Nat模式的部署方式

负载调度器:配置双网卡: 192.168.233.10(内网) 12.0.0.1(ens36)

二台后端web真实服务器:192.168.233.20 192.168.233.30

一台NFS共享服务器:192.168.233.40

客户端

相关推荐
k09338 分钟前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
激流丶15 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
神奇夜光杯16 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue18 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧20 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
测试界的酸菜鱼31 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
让学习成为一种生活方式35 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
晨曦_子画41 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
Black_Friend1 小时前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法