LVS集群-NAT模式
集群的概念:
集群:nginx四层和七层+动静分离
集群标准意义上的概念:为解决特定问题将多个计算机组合起来形成一个单系统
集群的目的就是为了解决系统的性能瓶颈。
垂直扩展:向上扩展,增加单个机器的性能,升级硬件,硬件升级是有瓶颈的
水平扩展:向外扩展,增加设备,并行的运行多个服务,通过网络和算法来调度服务分配的问题
集群的类型:
- 负载均衡集群:LB load blance 多个主机组成,每个主机只承担一部分的访问请求,靠负载均衡算来来实现
- 高可用集群:HA high availiablity 避免SPOF(single point failure)单点故障,系统中只有一部分组件出现故障,可以保障整个系统继续运行
主从---同步(某些特定的服务需要)---负载均衡
HPC:high-performance computing快速转发,快速响应。
集群的可靠性指标:
MTBF:mean time between failure 系统在正常运行期间无故障的平均时间,一般用小时或者天数来表示,MTBF值越高,系统的可靠性越高,出现的概率就越小
MTTR:系统从发生故障到恢复正常运行的平均时间,一般用于小时和天数,MTTR值越小,说明系统恢复故障的能力越强
A:系统可靠性指标A值越高越好
A=MTBF/(MTBF+MTTR)
停机时间:
计划内停机:指的是预定时间内的维护和检修时间
计划外停机:运维人员主要关注的就是计划外
发版期:
设计集群时需要考虑的一些原则:
- 可扩展性:集群要有随时可以添加或者删除设备的能力。 动态的扩缩容
- 可靠性:集群当中如果有节点发生故障,可以快速检测并且自动切换
- 负载均衡:合理分配每台服务器的负载,避免单个节点过载,影响整体性能
- 可维护性:要能够方便的进行配置部署,维护,监控,降低成本。
- 安全性:防止恶意攻击,以及数据泄露,数据丢失
- 易用性:相关的工作人员可以放便的进入集群,能够快速的开发,部署,测试等等
Lvs: Linux virtual server 是一个部署在Linux系统通过内核层面实现负载均衡的软件
开发者:章文嵩
主要作用:多个后端服务器形成一个高可用,高性能负载均衡的高性集群,通过负载均衡的算法将客户端的请求发送到后端服务器
阿里的SLB server load balance基于lvs+keepalived实现
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访问的大致流程:
- 客户端访问都是访问vip
- DS接受到请求,根据调度算法选择好后端服务器(RS)
请发送给rs
- RS处理请求并将响应发送到DS
- DS把RS的响应包装成自己响应,发送到客户端
客户端既不知道请求的真实服务器,也不知道响应的服务器是谁
Lvs的负载均衡方式:
NAT DR TUN
其中NAT和DR是最常用的两中方式
NAT模式:
NAT模式是最常用的负载方式之一
NAT的作用就是地址转换
Nat模式工作的核心原理:
- 在调度器上配置网卡,一个指内,一个指外
- 配置一个可以和公网进行通信的vip
- 配置转发策略,如果访问vip,就会把请求的数据包转发到后台的RS
请求的格式:报文。调度器会修改请求的目标IP地址和端口
- RS处理完请求之后响应客户端,先到调度器,调度器进行转换,把内网地址转换成外网地址,响应给客户
192.168.233.30:80------调度器-----nat转换-------12.0.0.1:80-----客户端
数据请求进入调度器的请求报文IP地址的修改
数据响应进入调度器,根据nat配置进行地址转换
调度器的内网IP地址和真实服务器的IP要在同一网段
NAT模式:
Nat:对于客户端来说请求地址始终不变,客户端不需要修改任何配置,转发由调度器通过算法来完成,后端服务器只管接受响应,也不需要修改任何配置
特点:性能损失和单点故障
DR模式:
DR:直接路由模式,请求由调度器完成,但是响应客户端由真实服务器直接响应,不需要通过调度器
好处是:性能高,而且可以配置vip地址的高可用,不存在单点故障
TUN模式:
Tun:隧道协议把请求转发后端服务器,需要在后端服务器配置隧道协议
核心:请求VPN地址
如何设置lvs:
Ipvsadm工具:管理内核模块的命令行工具,可用于配置和管理lvs集群
-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s:制定负载调度的算法:
静态调度:
rr:轮循
wrr:加权轮询
dh:目的地址hash
根据IP地址查找静态hash表,获取需要真实的RS的地址
Sh源地址hash
动态调度:
lc:最小连接数调度
wlc:加权最小连接数调度
权重高的,转发的就多,为了额避免性能瓶颈,再跟上最小连接数分配,可以把请求往连接数较小的服务器继续转发
Iblc:基于地址的最小连接数调度
将来自同一个目的地地址的请求分配给RS,如果这台服务器尚未满负荷,就会把请求分配给连接数最小的RS,而且在下一次转发时会优先考虑这台RS
-a:添加真实的服务器
-d:删除真实的服务器
-t:指定vip地址的段口号
-r:指定RIP的端口号
-m:表示使用的nat模式
-g:表示使用的DR模式
-i:表示使用的TUN模式
-w:设置真实的服务器的权重
-p 60:设置连接保持的时间60秒(默认不带)
-ln:以数字和列表的形状查看lvs的配置信息
Nat模式的部署方式:
四台服务器:
负载调度器:配置双网卡:20.0.0.51(内网)12.0.0.1(ens36)
二台后端web真实服务器:20.0.0.52 20.0.0.53
一台NFS共享服务器:20.0.0.54
客户端54
架构图:
先来配置共享服务54
配置web服务器52,53 两台真实服务器也安装一下NFS共享
52服务器:
53服务器:
配置调度器
添加一个网卡设备
复制网卡
改ifcfg-36的网卡信息
配置交地址转换策略
安装ipvsadm*
重新添加节点服务器
修该web服务机的网卡
重新添加节点服务器