集群:nginx四层和七层+动静分离
为解决某个特定的问题讲多个计算机组合起来形成单个的系统
集群的目的就是为了解决系统的性能瓶颈
垂直扩展:向上扩展 增加单个机器的性能 升级硬件 硬件升级是有瓶颈的
水平扩展:向外扩展 增加设备 并行的运行多个服务 通过网络和算法来调度服务分配的问题
集群的类型:
负载均衡集群 LB loab blance 多个主机组成 每个主机只承担一部分请求 靠负载均衡算法来实现
高可用集群 HA high availiablity 避免SPOF 系统中有一部分组件出现故障 可以保证整个系统继续运行
主从—同步(数据库)---负载均衡
集群的可靠性指标:
MTBF 值越高 出现故障概率小
MTTR 从发生故障到恢复正常运行的平均时间 值越小 系统恢复故障的能力越强
A 系统的可靠性指标 越高越好
停机时间:
计划内停机 预定时间内的维护或者检修时间
计划外停机 突然出现故障
设计集群时需要考虑的原则:
LVS:部署在Linux系统通过内核层面实现负载均衡软件
主要作用:多个后端服务器组成一个高可用 高性能 负载均衡的高性能集群 通过负载均衡的算法讲客户端请求发送到后端服务器
Lvs的术语:
Vs:外部访问lvs集群时提供的一个虚拟IP地址和端口
Ds:lvs集群中的主服务器 也叫调度器 时整个集群的核心 接受客户端的请求转发得到后端rs
RS:lvs的后端真实服务器的ip 接收到ds请求之后 返回响应结果
CIP:客户端的IP地址
Vip IP对外提供访问的同意虚拟IP地址
DIP 调度器在lvs内部使用的IP地址 用于和真实服务器进行通信
RIP 后端真实服务器的IP地址
Lvs流程:
客户端访问都是访问VIP 由调度器DS根据算法选择后端服务器(RS)把请求发送给RS 由RS处理请求之后将响应发送到DS DS把RS的响应包装成自己的响应 发送到客户端
客户端既不知道请求的真实服务器 也不知道响应的服务器是谁
Lvs的负载均衡方式:NAT DR TUN NAT和DR是最常用的方式
NAT模式是最常用的LVS负载方式之一:地址转换
1、在调度器上配置双网卡 一个指内 一个指外
2、配置一个可以和公网进行通信的VIP
3、配置转发策略 如果访问VIP就会把请求的数据转发到后端的RS
请求的是报文格式 调度器会修改请求的目标IP地址和端口
4、RS处理完请求之后响应客户端 先到调度器 调度器进行地址转换 把内网地址转换成公网地址 调度器响应给用户
数据请求进入调度器做的请求报文中IP地址的修改
数据响应进入调度器 根据nat配置进行地址转换
调度器的内网IP地址和真实服务器的IP地址要在同一网段
Nat:对于客户端来说 请求地址不变 客户端不需要修改任何配置 转发由调度器通过算法完成 后端服务器值管接受响应 也不需要改任何配置
性能损失和单点故障
DR模式:直接路由模式 请求由调度器完成 但是响应客户端由RS真实服务器直接响应 不需要通过调度器
性能高 可以配置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 表示使用net模式
-g 表示使用DR模式
-I 表示使用隧道模式
-w 设置真实服务器的权重
-p 60 设置连接保持的时间 单位是s(默认不带)
-ln 以数字和列表的形式查看lvs的配置信息
Nat模式的部署方式:
负载调度器 配置双网卡 192.168.1.10(内网) 12.0.0.1(外网)
两台后端web真实服务器 192.168.1.11 192.168.1.12
一台nfs共享服务器 192.168.1.13