什么是集群:
- 就是将多台主机作为一个整体,对外提供共同的服务
使用场景:
- 高并发
集群的分类:
- 负载均衡集群:减少响应延迟,提高并发处理能力
- 高可用集群:保持系统稳定,减少服务器中断时间,减少损失
- 高性能集群:高性能运算能力,分布式、高并发
负载均衡器的集群架构:
1、负载均衡调度器:
- 访问整个群集系统的唯一入口,对外使用所有服务器共有VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效之后能够平滑替换至备用服务器,确保高可用性。
2、服务器池
- 群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
3、共享存储
- 为服务器池中的所有节点提供稳定、一致的文件存取服务, 确保整个群集的统一性
负载均衡器的工作模式:
1、地址转换(NAT模式):
- 调度作为网关,是访问请求的入口,也是响应访问的出口,在高并发场景中负载压力很高NAT转换可以提高安全性
2、ip隧道(TUN模式):
- 仅是访问请求的入口,响应数据不经过调度器,但是需要大量的公网ip,还需要额外的IP隧道(成本太高)数据转发受IP隧道的额外影响
3、直接路由(DR模式):
- 仅是访问请求的入口,响应数据不经过调度器,节点服务器和调度器在一个物理网络中数据进行转发不受额外影响
负载均衡器的调度算法:
1、轮询:
将接收到的访问请求按照顺序依次分配给集群中的每一台服务器
2、加权轮询:
将接收到的访问请求按照权重值进行分配,权重值越高,收到的请求越多
3、最少连接数
根据服务器已经建立的连接数,优先将访问请求分配给连接数最少的服务器
4、加权最少连接
在服务器性能差异较大时,可以调整服务器的权重值,权重值高的服务器将承受更多的访问请求
lvs的组成:
- lvs基于内核态的netfilter框架实现的IPVS功能,工作在内核态,用户配置VIP等相关信息并且传递到IPVS就需要用到IPVSadm工具
- ipvsadm是lvs用户态的一个配套工具,可以实现VIP和RS增删改查
IPVSadm就是类似于iptables工具地位
lvs的作用:
- 主要用于服务器的负载均衡
- 工作在网络层,可实现高性能、高可用的服务集群技术
- 廉价,可以把许多低性能服务器组合在一起,形成一个超级服务器
- 易用,配置简单,有多重负载均衡的方式
- 稳定可靠,解释在集群的服务器中,某台服务器无法正常工作,也不影响整体效果
- 可扩展性好
LVS-Nat实验
Web1 节点服务器1:192.168.86.11
Web2 节点服务器2:192.168.86.22
LVS负载调度器:ens33:192.168.86.33 ens37:10.0.0.1
NFS服务器:192.168.86.44
1、部署共享存储(NFS服务器:192.168.86.44)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y nfs-utils rpcbind
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet
vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.86.0/24(rw,sync)
/opt/benet 192.168.86.0/24(rw,sync)
#发布共享
exportfs -rv
showmount -e
2、配置节点服务器(后端服务器)(192.168.86.11 和 192.168.86.22)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#修改网卡网关为LVS服务器
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service
yum install -y nfs-utils rpcbind
systemctl start rpcbind.service
systemctl enable rpcbind.service
showmount -e 192.168.86.44
web1:192.168.86.11
mount.nfs 192.168.86.44:/opt/kgc /var/www/html/
echo 'this is kgc' > /var/www/html/index.html
vim /etc/fstab
192.168.86.44:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a
web2:192.168.86.22
mount.nfs 192.168.86.44:/opt/benet /var/www/html/
echo 'this is benet' > /var/www/html/index.html
vim /etc/fstab
192.168.86.44:/opt/benet /var/www/html nfs defaults,_netdev 0 0
mount -a
LVS配置负载调度器:ens33:192.168.86.33 ens37:10.0.0.1
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
1、配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
iptables -t nat -F
iptables -F
iptables -t nat -nL
iptables -t nat -A POSTROUTING -s 192.168.86.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
2、加载LVS内核模块
modprobe ip_vs #手动加载ip_vs模块
cat /proc/net/ip_vs #查看ip_vs版本信息
3、安装ipvsadm管理工具
yum install -y ipvsadm
#注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
4、配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 192.168.86.11:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 192.168.86.22:80 -m -w 1
ipvsadm #启动策略
ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
ipvsadm -d -t 10.0.0.1:80 -r 192.168.10.16:80 -m -w 1 #删除群集中某一节点服务器
ipvsadm -D -t 10.0.0.1:80 #删除整个虚拟服务器
systemctl stop ipvsadm #停止服务(清除策略)
systemctl start ipvsadm #启动服务(重建规则)
ipvsadm-restore > /etc/sysconfig/ipvsadm #恢复LVS策略
使用浏览器访问10.0.0.1,刷新浏览器测试负载均衡(PS:刷新间隔时间需要稍长一点)