企业集群的应用
什么是集群
由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(ip与域名),相当于一台大型计算机
集群使用在哪些场景
集群可以在需要大规模计算、高性能、高可用和分布式存储等场景下发挥重要作用,提供更好的计算和存储能力
集群的分类
负载均衡器
提高应用系统的响应能力,尽可能处理更多的访问请求,减少延迟为布标,获得高并发、高负载(LB)的整体性能
LB的负载分配依赖于主节点的分流算法
强调减少响应延迟、提高并发处理能力
高可用
提高应用系统的可靠性,尽可能的减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
HA的工作方式包括双工和主从两种模式
强调系统稳定性,减少服务中断时间,减少损失
高性能
提高应用程序的cpu运算速度,扩展硬件资源和分析能力为目标、获得相当于大型、超级计算机的高性能运算能力
高性能依赖于分布式计算、并行计算,通过专用硬件和软件将多个服务器的cpu、内存等资源整合在一起,实现制有大型、超级计算机才具备的计算能力
强调高性能运算能力,分布式,并发
负载均衡集群的架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P3GEO95W-1688968395205)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230704112245950.png)]
负载调度器
访问整个集群系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为集群ip地址。通常会配置主备两台调度器实现热备份,当主调度器失效后能平滑替换至备用调度器,确保高可用性
服务器池
集群所提供的应用服务、由服务器池承担,其中每个节点具有独立的rip地址(真实ip),只处理调度器分发过来的客户机请求,当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池
共享存储
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个集群的统一性,共享存储可以使用NAS设备、或者提供NFS共享服务的专用服务器
负载均衡集群的工作模式
地址转换 nat模式
类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
服务器节点使用私有ip地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
调度作为网关,是访问请求的入口。也是响应访问的出口,在高并发场景中负载压力很高,可以提高安全性
ip隧道 tun模式
采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,二不在经过负载调度器
服务器节点分散在互联网中的不同位置,具有独立的公网ip地址,通过专用ip隧道与负载调度器相互通信
仅是访问请求的入口,相应数据不经过调度器。但是需要大量的公网IP地址,还是要有专用的ip隧道,成本太高,数据转发受到ip隧道的影响
直接路由 dr模式
采用半开放式的网络结构,与tun模式的结构类似,但是各个节点并不是分散在各地,而是与调度器位于同一个物理网络
负载调度器与各个节点服务器通过本地网络连接,不需要建立专用的ip隧道
仅是访问请求的入口,相应数据不经过调度器。节点服务器和调度器在同一个物理网络中,数据转发不受额外影响
LVS虚拟服务器
针对Linux内核的负载均衡解决方案
是基于内核态的netfilter框架实现的IPVS功能,工作在内核态
用户配置VIP等相关详细信息并传递到IPVS就需要用到ipvsadm工具
ipvsadm:是lvs用户态的配套工具,可以实现VIP和rs的增删改查功能
LVS的作用
主要用于多服务器的负载均衡
工作在网络层,可实现高性能,高可用的服务集群技术
廉价,可把许多低性能的服务器组合在一起,形成一个超级服务器
易用,配置简单,有多种负载均衡的方法
稳定可靠,即使在集群的服务器中有某台服务器无法正常工作,也不影响整体的效果
可扩展性
LVS与nginx的比较
lvs比nginx具有更强的抗负载能力,性能高,对内存和cpu资源消耗低
lvs工作在网络层,网络依赖性大,稳定性高。nginx安装配置较简单,网络型依赖小
lvs不支持正则匹配处理,无法实现动静分离,nginx可实现这方面的功能
lvs适用的协议范围广,nginx仅支持http和https email协议,适用于范围小
LVS负载调度算法
轮询
将受到的访问请求按照顺序轮流分配给群集中的各节点,均等的对待每一台服务器,而不管服务器实际的连接数和系统负载
加权轮询
根绝调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
保证性能强的服务器承担更多的访问流量
最少连接
根据真是服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少得节点
加权最少连接
在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
性能较高的节点将承担更大比例的活动连接负载
VIP工作原理 备份 冗余
vip地址特性:只会存在于同一个热备组中优先级最高的设备上 (抢占模式)
VIP的好处:VIP占用一个IPv4地址,常规情况下,VIP占用的IPv4的地址也是不可重复的
vrrp应用场景:高可用,解决单点故障
NAT模式 LVS负载均衡群集部署
1.部署共享存储
1.1关闭防火墙
[root@nfs /]# systemctl stop firewalld.service
[root@nfs /]# systemctl disable firewalld.service
1.2安装nfs服务,并设置开机自启
[root@nfs /]# yum install -y nfs-utils rpcbind
[root@nfs /]# systemctl start nfs.service
[root@nfs /]# systemctl start rpcbind.service
[root@nfs /]# systemctl enable nfs.service
[root@nfs /]# systemctl enable rpcbind.service
1.3设置nfs共享目录 赋予权限并设置配置文件
[root@nfs /]# mkdir /opt/kgc /opt/benet
[root@nfs /]# chmod 777 /opt/kgc /opt/benet
[root@nfs /]# vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.116.0/24(rw,sync)
/opt/benet 192.168.116.0/24(rw,sync)
1.4发布共享
[root@nfs /]# exportfs -rv
exporting 192.168.116.0/24:/opt/benet
exporting 192.168.116.0/24:/opt/kgc
exporting *:/usr/share
[root@nfs /]# showmount -e
Export list for nfs:
/usr/share *
/opt/benet 192.168.116.0/24
/opt/kgc 192.168.116.0/24
2配置web1节点服务器
2.1安装httpd服务并设置开机自启
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# systemctl start httpd.service
[root@web1 ~]# systemctl enable httpd.service
2.2安装nfs服务,并设置开机自启
[root@web1 ~]# yum install -y nfs-utils rpcbind
[root@web1 ~]# systemctl start rpcbind.service
[root@web1 ~]# systemctl enable rpcbind.service
2.3查看nfs服务器上的可挂载目录并挂载
[root@web1 ~]# showmount -e 192.168.116.10
Export list for 192.168.116.10:
/usr/share *
/opt/benet 192.168.116.0/24
/opt/kgc 192.168.116.0/24
设置挂载
[root@web1 local]# mount.nfs 192.168.116.10:/opt/kgc /var/www/html/
[root@web1 local]# echo 'this is kgc' > /var/www/html/index.html
[root@web1 html]# vim /etc/fstab
192.168.116.10:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
[root@web1 html]# mount -a
3配置web2节点服务器
3.1查看nfs服务器上的可挂载目录并挂载
[root@web2 ~]# showmount -e 192.168.116.10
Export list for 192.168.116.10:
/usr/share *
/opt/benet 192.168.116.0/24
/opt/kgc 192.168.116.0/24
设置挂载
[root@web2 ~]# mount.nfs 192.168.116.10:/opt/benet /var/www/html/
[root@web2 ~]# echo 'this is benet' > /var/www/html/index.html
[root@web2 ~]# vim /etc/fstab
192.168.116.10:/opt/benet /var/www/html nfs defaults,_netdev 0 0
mount -a
4配置负载调度器LVS
4.1开启ipv4转发功能
[root@lvs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
重新加载 使配置文件生效
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1
4.2清除nat表中所有的配置并配置
[root@lvs ~]# iptables -t nat -F
[root@lvs ~]# iptables -F
[root@lvs ~]# iptables -t nat -nL
[root@lvs ~]# iptables -t nat -A POSTROUTING -s 192.168.116.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
4.3加载lvs内核模块
[root@lvs ~]# modprobe ip_vs
[root@lvs ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
4.4安装ipvsadm工具,保存负载分配策略并开启服务
[root@lvs ~]# yum install -y ipvsadm
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl start ipvsadm.service
4.5配置负载分配策略
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -A -t 10.0.0.1:80 -s rr
[root@lvs ~]# ipvsadm -a -t 10.0.0.1:80 -r 192.168.116.11:80 -m -w 1
[root@lvs ~]# ipvsadm -a -t 10.0.0.1:80 -r 192.168.116.12:80 -m -w 1
4.6启动策略并查看是否配置成功,保存策略
[root@lvs ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP lvs:http rr
-> 192.168.116.11:http Masq 1 0 0
-> 192.168.116.12:http Masq 1 0 0
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
面试题
1.lvs是干什么的 在项目架构上是第几层?
lvs是具有负载均衡功能的服务之一
lvs是后端真实服务器,提供负载均衡和跳转的功能
单台lvs是作为4层负载均衡的服务tcp协议的负载均衡
lvs+keepalive组成的HA高可用集群,可以作为L7层负载均衡
PS:L4和L7的负载均衡有什么区别
L4是通过tcp协议建立连接之后的ip:port来接收请求和基于ip:port端口的转发
L7是通过tcp协议建立三次握手,通过http协议传输数据,7层提供负载均衡器,需要根据http协议来传输过来的请求,进行对应的跳转,这个跳转是先基于tcp协议的传输(ip:port)+http数据的传输
如果是L4层:协议只有tcp就是ip:port的转发
如果是L7层:tcp 三次握手 长连接+http规范的传输数据
简单来说
单台lvs就是4层
lvs+keepalive就是7层
2.lvs有几种模式 如何提供负载均衡功能,是用什么来管理?
①lvs-nat模式
主要通过防火墙规则来完成内外网的nat映射+ipvsadm工具的管理
实现方式:基于主机(192.168.116.180)来作为访问入口 通过ipvsadm -A -t 192.168.116.180 -rr 通过lvs的功能,来定义后端地址池 ipvsadm -a -t 192.168.116.180 -r 192.168.116.10 -m -w 1
以L4层的方式,直接基于tcp协议的ip:port端口进行转发
nat模式的特性:负载均衡器和真实服务器均在同一个网络,接受请求、响应请求均通过负载均衡器,内外网的映射是通过lvs服务器上的iptables规则来完成的
②lvs-tun模式
贵 因为负载调度器和真实服务器不在同一个网络,真实服务器需要公网ip
接受请求+转发请求是通过lvs负载调度器完成的,但是响应请求是直接通过隧道的方式相应客户端
③lvs-dr模式
关闭lvs负载调度器上的路由和重定向
定义ens33一个虚拟接口(ens33:0),来承载虚拟ip
清空防火墙的规则/关闭防火墙
使用ipvsadm配置后端真实服务器的地址池(-g使用dr模式)和rr轮询来进行转发
小结:就是使用ipvsadm来控制lvs服务使用dr模式进行转发(主要L4层ip:port形式实现)真实服务器