一、群集的含义
集群、群集
由多台主机构成,但对外,只表现为一个整体,只提供一个访问入口(域名或IP),相当于一台大型计算机。
1、群集存在的必要
互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器无法满足负载均衡及高可用的需求。
2、解决方法
1、使用价格昂贵的小型机、大型机。
2、使用多台相对廉价的普通服务器构建服务群集。
通过整合多台服务器,使用LVS来达到服务器高可用和负载均衡,并于同一个IP地址对外提供相同服务。
这就是企业中常用的一种群集技术——LVS(Linux Virtual Server ,Linux虚拟服务器)。
二、群集的类型
1.负载均衡群集 LB
提高系统的响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力
典型代表:软件类(Nginx LVS HAProxy SLB) 硬件类(F5 绿盟)
2.高可用群集 HA
提高系统的可靠性,减少服务中断时间,确保服务的连续性(通过使用 N 个 9 来代表高可用的指标)
典型代表:keepalived、heartbeat
3.高性能计算群集 HPC
将多台服务器的硬件资源整合成资源池以获取高性能的CPU、内存等资源,来提高整体运算能力
典型代表:云计算、分布式计算
三、LVS负载均衡的三种工作模式
1.NAT 地址转换
调度器会作为所有节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,所以调度器会承载双向流量的负载压力,可能会成为整个群集的性能瓶颈。
由于节点服务器都会处于内网环境并使用私网IP,所以NAT模式具有一定的安全性。
2.TUN IP隧道 IP Tunnel
调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。
由于节点服务器需要部署在互联网环境中,所以需要有独立的公网IP。
调度器与节点服务器是通过专用的IP隧道相互通信。
因此IP隧道模式的成本较高、网络安全性较低密,且数据在IP隧道传输的过程中需要额外的封装和解封装过程,性能也会受到一定的影响。
3.DR 直接路由 Direct Rounting
调度器也是仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。(与NAT模式的区别)
节点服务器与调度器是部署在同一个物理网络中,因此不需要专用的IP隧道。(与IP隧道模式的区别)
DR模式是企业首选的LVS模式。wuLVS的负载调度算法
1、轮询(Round Robin)
● 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器) ,均等地对待每一台服务器 ,而不管服务器实际的连接数和系统负载
2、加权轮询 (Weighted Round Robin)
● 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
● 保证性能强的服务器承担更多的访问流量
3、最少连接 (Least Connections )
● 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
4、加权最少连接(Weighted L east Connections )
● 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
● 性能较高的节点将承担更大比例的活动连接负载
5、sh (源地址哈希)
5、dh目的地址哈希
6、sed(最短预期延迟)
7、nq(永不排队)
五、ipvsadm工具
六、NAT模式LVS负载均衡群集部署
实验:
1.配置实验环境 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
一、配置nfs共享
yum install-y nfs-utils rpcbind
1.准备共享目录
mkdir /share #创建共享目录
mkdir /share2
vim /etc/exports #编辑共享文件的配置文件
在nfs服务器中 创建测试文件
cd /share/
echo "this is nginx web1 test page " > test.html
cd /share2/
echo "this is nginx web2 test page " > test.html
ro 是只读的意思 再exportfs -rv
2.开启 rpcbind nfs 再showmount -e 查看本机
二、web服务器nginx的部署
1.安装nginx
rz -E
yum install -y nginx
2.在web1中 vim /etc/fastab 设置开机自动挂载
将192.168.80.12的/share目录挂载到 /usr/share/nginx/html/xy101目录中
再mount -a 根据配置文件挂载
df -hT #查看挂载情况
systemctl restart nginx
在web2中 vim /etc/fastab 设置开机自动挂载
将192.168.80.12的/share2目录挂载到 /usr/share/nginx/html/xy101目录中
再mount -a 根据配置文件挂载
df -hT #查看挂载情况
systemctl restart nginx
修改两个web服务器的网关地址
cd /etc/sysconfig/netwrok-scripts
vim ifcfg-ens32
两个web服务器网关网关指向ens32 然后重启网卡
三.配置网关服务器
1.添加网卡
2.修改网卡文件
cd /etc/sysconfig/netwrok-scripts
cp ifcfg-ens32 ifcfg-ens33
vim ifcfg-ens32
vim ifcfg-ens33
ens32
ens33
之后全部重启网卡
3.修改系统配置文件 /etc/sysctl.d
sysctl -p # 加载
4.清空原有规则
iptables -F && iptables -t nat -F
5.添加规则
6.加载模块
modprobe ip_vs #加载 ip_vs模块
7.安装ipvsadm 管理工具
yum insatll -y ipvsadm #安装ipvasadm
touch /etc/sysconfig/ipvsadm #创建ipvsadm文件
systemctl restart ipvsadm.service #启动ipvsadm
8.配置负载分配策略
配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C #清除原有策略
ipvsadm -A -t 12.0.0.30:80 -s rr [-p 60]
ipvsadm -a -t 12.0.0.30:80 -r 192.168.80.10:80 -m [-w 1]
ipvsadm -a -t 12.0.0.30:80 -r 192.168.80.20:80 -m [-w 1]
ipvsadm #启用策略
ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save -n > /opt/ipvsadm #保存策略
测试: