LVS集群

一、集群

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

****2、作用:****解决系统的性能瓶颈

早期集群:垂直扩展(向上扩展)------增加单个机器的性能,升级硬件。硬件升级有瓶颈,运应而生水平扩展(淘汰)

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

3、类型

(1)负载均衡集群LB(Load Balance):多个主机组成,每个主机只承担一部分访问请求,依靠负载均衡算法实现

(2)高可用集群HA(High Availiability):避免单点故障SPOF(Single point of failure),系统中有一部分组件出现故障,可以保证整个系统继续运行。现在的集群既能实现主从,也能实现同步和负载均衡

(3)高性能集群HPC(High-performance computing):快速转发、快速响应------大型企业

4、可靠性指标

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

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

(3)A:系统的可靠性指标。A越高越好

计算公式:A=MTBF/(MTBF+MTTR)

假设A=99.9%,1年=365天=8760小时,故障时间=8760*0.1%=8.76小时

(4)停机时间:

①计划内停机:预定时间内的维护或者检修时间(自定义)

②计划外停机:运维人员关注重点

5、集群 设计 原则

(1)可扩展性:集群要有随时可以添加或删除设备的能力,动态的扩缩容能力

(2)可靠性:若集群中有节点发生故障,可以快速检测并自动切换

(3)负载均衡:合理的分配负载,避免单个节点过载影响整体性能

(4)可维护性:能够方便的进行配置、部署、维护、监控,降低成本------与运维无关

(5)安全性:防止恶意攻击、数据泄密、数据丢失------与运维无关

(6)易用性:相关的工作人员,可以方便的进入集群,快速的开发、部署、测试等------与运维无关

二、LVS 集群 linux virtual server

1、定义:LVS集群是一个部署在linux系统上,通过内核层面实现负载均衡的软件。开源免费

2、作用:多个后端服务器组成一个高可用,高性能,负载均衡的高性能集群。通过负载均衡的算法,将客户端请求发送到后端服务器实现高可用,高性能,负载均衡

3、术语

(1)VS(virtual server):lvs服务的逻辑名称,外部访问lvs集群时提供的一个虚拟ip地址和端口号DS(director server):lvs集群中的主服务器或调度器,是整个lvs集群的核心。作用:接收客户端的请求转发到后端RS

(2)RS(real server):lvs集群的后端的真实服务器的ip。作用:接收到DS请求后,由RS处理请求并返回响应结果

(3)CIP(client ip):客户端的ip地址

(4)VIP(virtual ip):对外提供访问的统一的、虚拟的ip地址

(5)DIP(director ip):DS调度器在lvs内部使用的ip地址。作用:用于和RS进行通信

(6)RIP(real ip):后端真实服务器的ip地址

4、lvs访问的大致流程

(1)客户端访问vip

(2)DS调度器接收到请求,根据调度算法选择后端服务器RS,请求发送给RS

(3)RS处理请求并将响应发送到DS调度器

(4)DS会把RS真实服务器的响应包装成自己的响应,然后发送到客户端

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

5、lvs的负载均衡方式

(1)NAT模式------地址转换(常用)

(2)DR模式------直接路由(最常用)

(3)TUN模式------隧道vpn协议(不用)【花钱】

NAT模式:

NAT模式是最常用的lvs负载均衡方式之一

工作原理:

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

2、配置一个可以和公网进行通信的vip

3、配置转发策略,如果访问vip,会把请求的数据转发到后台的RS。请求以报文的格式请求,调度器会修改目标ip地址和端口

12.0.0.1:80→192.0.168.233.30:80

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

192.168.233.30:80→调度器→nat转换→12.0.0.1:80→客户端

数据请求进入调度器做的是请求报文中ip地址的修改,数据响应进入调度器是根据nat配置进行地址转换

调度器的内网ip地址和真实服务器的ip地址要在同一网段,否则要用路由器转换

nat对于客户端来说请求地址始终不变,客户端不需要修改任何配置,转发由调度器通过算法来完成,后端服务器只管接收响应,也不需要修改任何配置。缺点:会造成调度器性能损失和单点故障

内网→外网:SNAT改变源ip地址

外网→内网:DNAT改变目的ip地址

DR模式:

特点:请求由调度器完成,响应给客户端由RS直接响应,不需要通过调度器

优点:性能高,可以配置vip地址的高可用,不存在单点故障

TUN模式:

特点:使用隧道协议把请求转发到后端服务器。需要在后端服务器配置隧道协议

6、设置lvs:

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

(1)命令:

-A 添加虚拟服务器

-D 删除整个虚拟服务器

-s 指定负载调度的算法

-a 添加真实服务器

-d 删除真实服务器

-t 指定vip地址的端口号

-r 指定RIP的端口号

-m 使用nat模式

-g 使用DR模式

-i 使用隧道模式

-w 设置真实服务器的权重

-p 60 设定连接保持的时间60(秒)。默认不带,需指定

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

(2)负载调度算法:

静态调度(固定调度):

①rr轮询

②wrr加权轮询

③dh目的地址hash

④sh源地址hash

动态调度:

①lc 最小连接数调度

②wlc加权最小连接数调度:权重高的转发多,为了避免性能瓶颈,再加上最小连接数算法,可以把请求往连接数量较少的服务器继续转发

③lblc基于地址的最小连接数调度:将来自同一个目的地址的请求分配给RS,若这台服务器尚未满负荷,将此请求分配给连接数最小的RS,而且在下一次转法时会优先考虑这台RS

(3)ipvs模块

三、基于nginx做LVS集群实验(nat模式)

****实验条件:****4台服务器

1台客户端20.0.0.41(后面要修改ip地址)

1台DS调度服务器20.0.0.11

2台RS真实服务器20.0.0.21 20.0.0.31

实验步骤:

1、nginx2真实服务器

nginx3真实服务器

2、nginx1调度服务器

(1)下载安装包yum -y install ipvsadm*

下载安装包yum -y install iptables-services.x86_64 iptables

解决方法:保存配置文件

(2)修改网卡:nginx1调度服务器,nginx2、nginx3真实服务器

(3)添加网卡ens36

(4)配置策略SNAT

(5)配置调度服务器策略

(6)打开转发功能

(7)测试

相关推荐
ulias21210 分钟前
Linux系统中的权限问题
linux·运维·服务器
青花瓷1 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
问简2 小时前
docker 镜像相关
运维·docker·容器
Dream of maid3 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾3 小时前
统信系统UOS常用命令集
linux·运维·服务器
Benszen3 小时前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…3 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
一叶知秋yyds4 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
专吃海绵宝宝菠萝屋的派大星5 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
斯普信云原生组5 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器