一、集群
1、集群:为解决某个特定问题将多个计算机组合起来形成一个单系统
2、目的:为了解决系统的性能瓶颈
3、发展
(1)垂直扩展(向上扩展):增强单个机器的性能,升级硬件是有瓶颈
(2)水平扩展(向外扩展):增加设备,并行运行多个服务,主要是通过网络和算法来调度服务分配的问题****(目前使用)****
4、类型
(1)负载均衡集群(LB-load blance):多个主机组成,每个主机只承担一部分访问的请求,靠负载均衡算法来实现
(2)高可用集群(HA-availiablity):避免SPOF(single point of failure)单点故障,系统当中有一部分组件出现故障,可以保障整个系统继续运行
①高可用集群的特点:实现主从、同步(某些特定的服务需要)、负载均衡
(3)HPC(high performance computing)快速转发、快速响应(用于大型网站)
目前使用类型:负载均衡+高可用
5、集群的可靠性指标
(1)MTBF(mean time between failure):系统在正常运行期间无故障的平均时间,一般用小时或者天数来表示。MTBF值越高,系统的可靠性越高,出现故障的概率也越小
(2)MTTR:系统从发生故障到恢复正常运行的平均时间(解决问题花费的时间),一般用小时或者天数表示。MTTR值越小,表示系统恢复故障的能力越强
(3)A:系统可靠性指标,A值越高越好
(4)三者之间的关系:A=MTBF/(MTBF+MTTR)
99.9%
1年=365天=8760小时
故障时间=8760*0.1%=8.76小时
(5)停机时间
①计划内停机:预定时间内的维护或者检修时间,自定义时间。
②计划外停机( 运维人员主要关注 )
6、设计集群的原则
(1)****可扩展性:****集群要有随时可以添加或者删除设备的能力(动态的扩缩容)
(2)****可靠性:****集群中如果有节点发生故障,可以快速检测并且自动切换
(3)负载均衡:合理的分配负载,避免单个节点过载,影响整体的性能
(4)可维护性:能够方便的进行配置、部署、维护和监控,从而降低成本
(5)安全性:防止恶意攻击,以及数据泄密、数据丢失
(6)易用性:相关的工作人员,可以方便的进入集群,能够快速的开发、部署、测试等等
二、LVS集群(Linux virtual server)
(一)LVS的相关概念
1、LVS:是一个部署在Linux系统上通过内核层面实现负载均衡的软件
2、主要作用:多个后端服务器组成一个高可用、高性能、负载均衡的高性能集群,通过负载均衡的算法将客户端请求发送到后端服务器
阿里的SLB 基于lvs+Keepalived实现的
(二)LVS集群中的术语
1、VS(virtual server):lvs服务的逻辑名称,外部访问lvs集群时提供的一个虚拟ip地址和端口
2、DS(director server):lvs集群当中的主服务器,也是调度器,使整个lvs集群的核心,接受客户端的请求转发到后端RS(real server)
3、RS(real server):lvs后端的真实服务器,接受DS的请求之后,返回响应结果
4、CIP(client ip):客户端的ip地址
5、VIP(virtual ip):对外提供访问的统一虚拟ip地址
6、DIP(director ip):调度器在lvs内部使用的ip地址,用于和真实服务器进行通信
7、RIP(real ip):后端真实服务器的ip地址
(三)LVS访问流程
1、客户端访问都是访问VIP
2、DS接受到请求,根据调度算法(负载均衡算法)选择好后端服务器(rs)、把请求发送给RS
3、RS处理请求并把响应发送给DS
4、DS把RS的响应包装成自己的响应,发送到客户端
客户端既不知道请求的真实服务器,也不知道响应的服务器是谁
(四)lvs负载均衡的方式
1、NAT(最常用)
2、DR(最常用)
3、TUN
(五)NAT模式(地址转换)
1、NAT模式:是最常用的lvs负载方式之一
2、NAT模式的访问流程
(1)在调度器上配置双网卡,一个指内,一个指外
(2)配置一个可以和公网进行通信的VIP
(3)配置转发策略,如果访问VIP,就会把请求的数据转发到后台的RS
请求的格式:报文。调度器会修改请求的目标ip地址和端口
12.0.0.1:80 192.168.233.30:80
(4)RS处理完请求之后响应客户端,先到调度器,调度器进行地址转换,把内网地址转换成公网地址,响应给用户
192.168.233.30:80------调度器------nat转换------12.0.0.1:80------客户端
3、总结
(1)数据请求进入调度器,做的是请求报文中ip地址的修改
(2)数据响应进入调度器,根据NAT配置进行地址转换
(3)调度器的内网ip地址和RS的ip地址要在同一网段
4、NAT模式的特点
(1)对于客户端来说请求地址始终不变,客户端不需要修改任何配置,转发由调度器通过算法来完成,后端服务器只管接受响应,也不需要修改任何配置
(2)会有性能损失和单点故障
(六)DR模式(直接路由)
1、特点:请求由调度器完成,响应客户端由RS直接响应,不需要通过调度器
2、优点:性能高,可以配置VIP地址的高可用,不存在单点故障
(七)TUN模式------基本不用
1、通过隧道协议,把请求转发到后端服务器,需要在后端服务器配置隧道协议(VPN)
三、ipvsadm工具
ipvsadm工具:管理ipvs内核模块的命令行工具,可用于配置和管理lvs集群
(一)ipvsadm的命令选项
|-------------|---------------------|
| 选项 | 含义 |
| -A | 添加虚拟服务器 |
| -D | 删除整个虚拟服务器 |
| -s | 指定负载调度的算法 |
| -a | 添加真实服务器 |
| -d | 删除真实服务器 |
| -t | 指定VIP地址的端口号 |
| -r | 指定RIP地址的端口号 |
| -m | 表示使用nat模式 |
| -g | 表示使用DR模式 |
| -i | 表示使用TUN模式 |
| -w | 设置真实服务器的权重 |
| -p | 设置连接保持的时间60秒,默认不带 |
| -ln | 以数字以及列表形式查看lvs的配置信息 |
(二)算法
1、静态调度(固定调度)
(1)rr:默认算法,轮询
(2)wrr:加权轮询
(3)dh:目的地址hash(类似于ip_hash)
(4)sh:源地址hash
dh和sh根据ip地址查找静态hash表,获取需要的真实RS地址
2、动态调度
(1)lc:最小连接数调度
(2)wlc:加权最小连接数调度
(权重高的转发的就多,为了避免性能瓶颈,加上最小连接数分配,可以把请求往连接数量较小的服务器继续转发)
(3)lblc:基于地址的最小连接数调度(将来自同一个目的地址的请求分配给RS,如果这台服务器尚未满负荷,把请求分配给连接数最小的RS,而且在下一次转发时,会优先考虑这台RS,类似于url_hash)
四、NAT模式配置
负载调度器:配置双网卡
20.0.0.10(内网)
12.0.0.1(外网 ens36)
二台后端web真实服务器:20.0.0.11 20.0.0.12
一台NFS共享服务器:20.0.0.70
一台客户端:20.0.0.20
(一)配置共享服务(基于nginx服务配置)
1、操作nginx1、nginx2、test7
2、配置test7
3、配置nginx1和nginx2
(1)安装nginx
(2)挂载
(3)配置网卡
5、调度器配置
(1)修改网卡
(2)添加虚拟网卡
(3)配置地址转换
( 4 ) 配置调度器的VIP地址
(5)打开服务器的转发功能
6、配置客户端、测试