目录
群集的含义
-
Cluster:集群、群集
-
由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机
通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务。
根据群集所针对的目标差异,可分为三种类型
-
负载均衡群集
-
高可用群集
-
高性能运算群集
负载均衡群集
-
提高应用系统的响应能力、尽可能处理更多的访问请求,减少延迟为目标,获得高并发、高负载(LB)的整体性能
-
LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询”、“反向代理”等
-
典型代表:软件类(nginx、LVS、HAProxy、SLB);硬件类(F5、绿盟)
高可用群集
-
提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性(通常使用N个9来代表高可用的指标),达到高可用(HA)的容错效果
-
HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如,“故障切换”“双机热备” 等
高性能运算群集
-
提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
-
通过云计算或分布式计算将硬件资源整合成
-
高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,“云计算”、“网格计算”等
负载均衡集群架构
负载均衡的结构
-
第一层,负载调度器 (Load Balancer或Director)
-
访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
-
-
第二层,服务器池 (Server Pool)
-
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址 (真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
-
-
第三层,共享存储 (Share Storage)
-
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器
-
LVS负载均衡群集工作模式分析
负载均衡群集是目前企业用得最多的群集类型
LVS负载均衡群集的负载调度技术有三种工作模式
-
地址转换(NAT模式)
-
IP隧道(TUN模式)
-
直接路由(DR模式)
NAT模式
地址转换
-
Network Address Translation,简称NAT模式
-
类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的默认网关,即作为客户机的访问入口,也是各服务器节点回应客户机的访问出口,所以会承载双向流量的负载压力,可能会成为整个集群的性能瓶颈
-
由于节点都会处于内网环境,使用私网IP,所以具有一定的安全性
-
服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
TUN模式
IP隧道
-
IP Tunnel,简称TUN模式
-
采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
-
服务器节点分散在互联网中的不同位置具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
-
IP隧道模式的成本较高、安全性较低,且数据在IP隧道传输的过程中需要额外的封装和解封装,性能也会收到一定影响
DR模式
直接路由
-
Direct Routing,简称DR模式
-
采用半开放式的网络结构,与TUN模式的结构类似,仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调度器(与NAT模式的区别)
-
服务器各节点并不是分散在各地,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道(与IP隧道模式 的区别)
-
DR模式是企业首选的LVS模式
LVS调度算法
-
rr(轮询)
-
wrr(加权轮询)
-
sh(源地址哈希)
-
dh(目的地址哈希)
-
lc(最小链接)
-
wlc(加权最小连接):优先分配请求给<连接数>/<权重值>的值最小的节点服务器
-
lblc(基于地址的最小连接):优先根据目的地址哈希将请分配给一个节点服务器,若此节点服务器满负荷了则优先将请求分配当前连接数最小的节点服务器
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 60:表示保持长连接60秒(默认关闭连接保持)
-
-l:列表查看LVS虚拟服务器(默认为查看所有)
-
-n:以数字形式显示地址、端口等信息,常与“-l”选项组合使用:ipvsadm -ln
LVS-NAT模式部署:
-
配置NFS共享存储
-
部署Web节点服务器,注意:节点服务器的默认网关要指向调度器的内网IP,测试时可关闭连接保持
-
部署调度器,配置双网卡,开启IP路由转发功能,如果内网中的节点服务器,需要访问外网,则要配置SNAT规则,安装ipvsadm工具,添加虚拟服务器和真实服务器的相关配置,使用-m选项选择nat模式
-
客户端设置默认网关,指向调度器的外网IP,并使用客户端工具测试
部署共享存储
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装nfs服务
yum install nfs-utils rpcbind -y
3. #新建目录,并创建站点文件
cd /opt/
mkdir xiao bao
echo "this is xiao" > xiao/index.html
echo "this is bao" > bao/index.html
4. #开启服务
systemctl start rpcbind
systemctl start nfs
5. #授权
chmod 777 xiao/ bao/
6. #设置共享策略
vim /etc/exports
/opt/xiao 192.168.190.0/24(rw,sync)
/opt/bao 192.168.190.0/24(rw,sync)
7. #发布服务
systemctl restart nfs
exportfs -rv
节点Web服务器
第一台(192.168.190.130)
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装httpd
yum install -y httpd
3. #查看nfs服务
showmount -e 192.168.190.129
4. #挂载站点
#法一:临时挂载
mount 192.168.190.129:/opt/xiao /var/www/html/
df
cat /var/www/html/index.html
#法二:永久挂载
vim /etc/fstab
192.168.190.129:/opt/xiao/ /var/www/html/ nfs defaults,_netdev 0 0
mount -a
5. #开启httpd服务
systemctl start httpd
6. #指定网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.190.132
#DNS1=8.8.8.8
7. #重启网络服务
systemctl restart network
第二台(192.168.190.131)
1. #关闭防火墙
systemctl stop firewalld && setenforce 0
3. #安装httpd
yum install -y httpd
4. #查看nfs服务
showmount -e 192.168.190.129
5. #挂载站点
#法一:临时挂载
mount 192.168.190.129:/opt/bao /var/www/html/
df -h
cat /var/www/html/index.html
#法二:永久挂载
vim /etc/fstab
192.168.190.129:/opt/bao/ /var/www/html/ nfs defaults,_netdev 0 0
mount -a #刷新
6. #开启httpd服务
systemctl start httpd
7. #指定内网网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.192.132
#DNS1=8.8.8.8
8. #重启网络服务
systemctl restart network
负载调度器
内网:192.168.190.132(ens33)
外网:12.0.0.10(ens36)
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装ipvsadm
yum install -y ipvsadm*
3. #添加一块网卡,我这里是ens38,配置网卡,重启网络
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
#去掉网关、UUID、修改IP
vim ifcfg-ens33
#去掉网关
systemctl restart network
4. #打开路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
5. #防火墙做策略
#查看策略
iptables -nL -t nat
#清空策略
iptables -F
#添加策略
iptables -t nat -A POSTROUTING -s 192.168.190.0/24 -o ens36 -j SNAT --to 12.0.0.10
#查看策略
iptables -nL -t nat
6. #加载LVS内核模块
modprobe ip_vs
cat /proc/net/ip_vs
7. #开启ipvsadm服务
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
8. #清空策略
ipvsadm -C
9. #制定策略
#指定IP地址 外网的入口 -s rr 轮询
ipvsadm -A -t 12.0.0.10:80 -s rr
#先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式
ipvsadm -a -t 12.0.0.10:80 -r 192.168.190.130:80 -m
ipvsadm -a -t 12.0.0.10:80 -r 192.168.190.131:80 -m
#开启服务
ipvsadm
10. #查看策略
ipvsadm -ln
Windows客户机
1. #进入更多适配器选项
#Ethernet0右击选择属性
#双击IPv4协议
#手动配置ip地址
IP地址:12.0.0.20
子网掩码:255.0.0.0
默认网关:12.0.0.10
#配置DNS服务器地址
首选:114.114.114.114
备用:8.8.8.8
打开浏览器连接12.0.0.10