目录
高可用集群(High Availability Cluster)
高性能运算集群(High Performance Computer Cluster)
加权最少连接(Weighted Least Connections)
一、集群
集群是由多台主机沟工程,但是对外只表现为一个整体,只提供一个访问入口(域名或者IP地址)
普通的服务器构建服务器集群
通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务,常用的一种群集技术LVS(Linux虚拟服务器,Linux Virtual Server)
负载均衡集群(Load Balance Cluster)
提高应用系统的相应能力,尽可能处理更多的访问请求,减少延迟,获得更高的高并发,高负载(LB)的整体性能,LB的负载分配依赖于主节点的分流算法
高可用集群(High Availability Cluster)
提高应用系统的可靠性,尽可能的减少终端时间为目标,确保服务的连续性,达到高可用(HA)的容错效果,HA的工作方式包括双工和主从的两种工作模式
高性能运算集群(High Performance Computer Cluster)
提高应用系统的CPU运算速度,扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
高性能依赖于 “ 分布式运算 ” 、“ 并行运算 ” 通过专用硬件和软件将多个服务器的CPU和内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
二、负载均衡工作模式
VIP地址特性(虚拟IP地址)
只会存在于同一个热备组中优先级最高的设备上,以上是抢占模式
VIP地址的好处
VIP地址常规情况下占用一个IPv4地址,VIP占用的IPv4地址也是不可重复的,VRRP解决单点故障的问题,采用高可用的解决方案
NAT模式(地址转换)
Network Address Translation 简称为NAT模式,类似于防火墙的私有网络结构,负载均衡器作为客户机的访问入口,也是各节点回应客户机的访问出口
服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
数据流向
① 客户端发送请求,这时目的IP为虚拟IP(LVS设置的外网地址)所以请求数据包进入负载调度器(调度服务器)
② 由于服务器通过netfilter框架来管理网络数据,数据包会被系统设置好的策略分配到PREROUTING规则链中
③ 进入规则链后,判断是否目标IP为本机,如果是本机则转入INPUT规则链
④ 在INPUT中LVS的ipvsadm分配策略,通过调度算法,将数据包中的目的IP修改为Web服务器中的RIP(真实IP地址)
⑤ 修改后的数据包再转入POSTROUTING,再进由路由转发到真实服务器当中
⑥ 真实服务器从共享存储当中寻找数据,处理请求内容,然后由于同一网段,便直接发回调度器处理的结果
⑦数据回到调度器,再通过判断一层层转发,最后进入网络,再反馈给客户端
TUN模式(IP隧道)
IP Tunnel 简称为TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用的IP隧道与负载调度器相互通信
DR模式(直接路由)
Direct Routing 简称为DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但是各节点并不是分散在各地,而是与调度器位于同一个物理网络
负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
DR模式特点
① 负载调度器和真实服务器必须在同一个物理网络当中,工作在第二层数据链路层
② 真实服务器可用私有地址,也可用公有地址,可通过互联网对RIP(真实IP地址)进行直接访问
③ 负载调度器作为集群访问入口,但不作为网关使用
④ 所有请求报文经由负载调度器,但回复响应报文不能经过负载调度器
⑤ 真实服务器网关不允许指向负载调度器的IP地址,真实服务器发送的数据包不允许经过负载调度器
⑥ 真实服务器上的LO接口配置VIP的IP地址(虚拟IP地址)
优点与缺点
优点
负载均衡服务器只负责将请求的包分发给物理服务器,而物理服务器将应答包直接发送给用户,所以负载均衡器可以处理很巨大的请求量,使用这种方式
缺点
这种方式需要所有的负载均衡和节点服务器都在同一广播,不支持异地容灾
LVS基于内核进行转发,已经成为Linux内核的一部分,默认编译为 ip_vs 模块,必要时能够自动调用,在CentOS 7中,可以手动加载 ip_vs 模块,并查看 ip_vs 的版本信息,工作在内核态当中,基于内核态的netfilter框架实现IPVS功能,用户配置VIP等相关详细信息并且传递到IPVS,需要用到额外安装的ipvsadm工具
三、内核态与用户态
内核态
也叫内核空间,是内核进程/线程所在的区域,主要负责运行系统和硬件的交互
用户态
也叫用户空间,是用户进程/线程所在的区域,主要用于执行用户程序
内核态与用户态的区别
内核态的特点
运行的代码不受任何限制,CPU可以直接执行任何指令,速度也很快
用户态的特点
运行代码需要收到CPU的很多检查和过滤,不能直接访问内核数据和程序,也就是说不可以像内核线程一样访问任何有效的地址
操作系统在执行用户程序时,主要工作在用户态,只有在其执行没有权限的任务操作时,会自动切换到内核态
四、LVS主要作用
① 主要作用于多服务器的负载均衡
② 工作在网络层,可以实现高性能、高可用集群技术
③ 廉价,可以把许多低性能服务器组合在一起形成一个超级服务器
④ 易用,配置简单,有多重负载均衡的方法
⑤ 稳定可靠,即使集群中某台服务器无法正常工作,也不影响整体
⑥ 可扩展性好
LVS与Nginx比较
① LVS比nginx具有更强的抗负载能力,性能高,对内存和CPU资源消耗低
② LVS工作在网络层,网络依赖性大,稳定性高,Nginx安装配置比较简单,网络依赖性小
③ LVS不支持正则匹配处理,无法实现动静分离效果,Nginx可以实现
④ LVS适用的协议范围广,Nginx只支持HTTP、HTTPS和E-Mail协议,使用范围小
LVS负载调度算法
轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给集群中的各个节点(真实服务器)均匀分摊给每个服务器,不管服务器实际连接数量和系统负载
加权轮询(Weighted Round Robin)
根据设置权重来分配请求,值越高的节点,优先获得任务,分配到的请求数量也越多,保证性能强的服务器承担更多的访问量
最少连接(Last Connections)
根据真实服务器已建立的连接数进行分配,将收到的请求优先分配给当前连接最少的节点
加权最少连接(Weighted Least Connections)
当服务器性能差异较大时,可以为真实服务器自动调整权重,性能较高的节点将承担更大比例的活动连接负载
五、ipvsadm工具
使用ipvsadm工具可以实现虚拟服务器创建,并指定LVS负载调度算法方式,指定VIP(虚拟地址)和RIP(真实地址),指定负载均衡的集群工作模式(NAT模式,DR模式,TUN模式)
ipvsadm工具选项
-A #添加虚拟服务器
-D #删除整个虚拟服务器
-s #指定负载调度算法(rr轮询,wrr加权轮询,lc最少连接,wlc加权最少连接)
-a #表示添加真实服务器(节点服务器)
-d #删除某一个指定节点
-t #指定VIP地址以及TCP端口
-r #指定RIP地址以及TCP端口
-m #表示使用NAT模式
-g #表示使用DR模式
-i #表示使用TUN模式
-w #设置权重(权重为0时,表示暂停节点)
-p [时间] #表示保持长连接指定时间(秒)
-l #列表查看LVS虚拟服务器(默认查看所有)
-n #以数字形式显示地址、端口等信息,常与 -l 结合使用,例如 -ln
六、LVS-NAT模式部署
第一步 关闭防火墙安全机制
命令:systemctl stop firewalld
setenforce 0