一、集群
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)测试