目录
1 群集(集群) cluster
1.1 群集的类型
2 LVS的工作模式及其工作过程
2.1 NAT模式(VS-NAT)
2.2 直接路由模式(VS-DR)
2.3 IP隧道模式(VS-TUN)
3 LVS-NAt 模式配置步骤
3.1 部署共享存储
3.2 配置节点服务器
3.3 配置负载调度器
3.3.1 加ens36 网卡并进行相关配置
3.3.2 配置SNAT转发规则
3.3.3 加载LVS内核模块
3.3.4 安装ipvsadm 管理工具
3.3.5 配置负载分配策略
3.4 测试 LVS 群集
1 群集(集群) cluster
集群就是将多台主机作为一个整体,对外提供相同的服务
特点:由多个主机构成,都干同样的一件事,对外界展现为一个整体
场景:高并发,并发量过大时候加服务器的方式就是向外扩展(横向扩展),就是集群
1.1 群集的类型
1)负载均衡群集 LB
提高系统响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力
典型代表:软件类:LVS、 Nginx、HAProxy 等 硬件类:F5 绿盟
2)高可用群集 HA
提高系统可靠性,减少中断时间,确保服务的连续性(通常使用N个9来代表可用的指标)
典型代表:Keepalived heartbeat
3)高性能运输群集 HPC
通过云计算或分布式计算来获取高性能的CPU、内存等资源,来提高整体运算能力
2 LVS的工作模式及其工作过程
LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式)、VS/DR(路由模式)、VS/TUN(隧道模式)。
2.1 NAT模式(VS-NAT)
调节器会作为所有以节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,也就是说调节器会承受双向数据流量的负载压力,可能会成为整个集群的性能瓶颈。由于节点服务器都处于内网环境,使用私网IP地址,所以具有一定安全性。
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
- 优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。
- 缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。
2.2 直接路由模式(VS-DR)
DR 直接路由Direct Routing
调节器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调节器。(与NAT模式的区别)节点服务器与调节器是部署在同一物理网络内,因此不需要建立专用的IP隧道。(与TUN模式的区别)
DR 模式是企业首选的LVS模式。
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。
- 优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。
- 缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
2.3 IP隧道模式(VS-TUN)
TUN IP隧道 IP Tunnel
调节器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调节器。但是由于节点服务器需要部署在不同位置的公网环境中,需要具有独立的公网IP,调节器与节点服务器是通过专用的IP隧道实现相互通信的。因此IP隧道模式的成本较高、安全性较低,且IP隧道需要额外的封装和解封装,性能会受到一定的影响。
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。
- 优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。
- 缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持“IP Tunneling”。
3 LVS-NAt 模式配置步骤
- 配置NFS共享存储
- 节点服务器安装web服务,注意:默认网关要指向调节器的IP地址,测试的时候关闭连接保持
- 调节器服务器要开启IP路由转发功能和设置SNAT等iptables 规则,安装ipvsadm工具,配置虚拟服务器和真实节点服务器相关配置
- 客户端测试的时候网关要指向 调节器的IP地址
负载调度器:内网关 ens33:192.168.30.105,外网关 ens36:12.0.0.1
Web节点服务器1:192.168.30.107
Web节点服务器2:192.168.30.108
NFS服务器:192.168.30.106
客户端:12.0.0.12
3.1 部署共享存储
NFS服务器:192.168.30.106
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.servicesystemctl enable nfs.service
systemctl enable rpcbind.servicemkdir /opt/cyw /opt/cww
chmod 777 /opt/cyw /opt/cww
echo 'Cao yu wang is a bood boy !' > /opt/cyw/index.html
echo 'FBI open the door !' > /opt/cww/index.htmlvim /etc/exports
/usr/share *(ro,sync)
/opt/cyw 192.168.30.0/24(rw,sync)
/opt/cww 192.168.30.0/24(rw,sync)--发布共享---
exportfs -rv
安装所需软件 nfs、rpcbind并启动
配置静态网页
NFS(Network File System)共享的目录和权限
发布共享
3.2 配置节点服务器
192.168.30.107、192.168.30.108
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.serviceyum install nfs-utils rpcbind -y
showmount -e 192.168.80.13systemctl start rpcbind
systemctl enable rpcbind--192.168.80.100---
mount.nfs 192.168.80.13:/opt/kgc /var/www/htmlvim /etc/fstab
192.168.80.13:/opt/kgc /var/www/html nfs defaults,_netdev 0 0--192.168.80.101---
mount.nfs 192.168.80.13:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.htmlvim /etc/fstab
192.168.80.13:/opt/benet /var/www/html nfs defaults,_netdev 0 0
关闭防火墙及selinux
两台服务器安装httpd服务并开启
安装所需软件 nfs、rpcbind并启动
---192.168.30.107---
挂载
---192.168.30.108---
挂载
3.3 配置负载调度器
内网关 ens33:192.168.30.105,外网关 ens36:12.0.0.1
3.3.1 加ens36 网卡并进行相关配置
配置ens36
重启并网络联通测试
3.3.2 配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1或 echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -piptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens36 -j SNAT --to-source 12.0.0.1
3.3.3 加载LVS内核模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
3.3.4 安装ipvsadm 管理工具
ipvsadm 工具选项说明:
选项 | |
-A | 添加虚拟服务器 |
-D | 删除整个虚拟服务器 |
-s | 指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc) |
-a | 表示添加真实服务器(节点服务器) |
-d | 删除某一个节点 |
-t | 指定 RIP地址及 TCP端口 |
-m | 表示使用 NAT群集模式 |
-g | 表示使用 DR模式 |
-i | 表示使用 TUN模式 |
-w | 设置权重(权重为 0 时表示暂停节点) |
-p 60 | 表示保持长连接60秒(默认关闭连接保持) |
-l | 列表查看 LVS 虚拟服务器(默认为查看所有) |
-n | 以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln |
启动服务前须保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm
3.3.5 配置负载分配策略
(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C #清除原有策略
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.30.107:80 -m -w 1
ipvsadm -a -t 12.0.0.1:80 -r 192.168.30.108:80 -m -w 1-A 添加虚拟服务器
-s 指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a 表示添加真实服务器 (后端节点服务器)
-t 指定 VIP地址及 TCP端口
-m 表示使用 NAT群集模式.
-w 设置权重 (权重为 0 时表示暂停节点)ipvsadm #启动策略
ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
删除时候使用
ipvsadm -d -t 12.0.0.1:80 -r 192.168.30.107:80 -m -w 1 #删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.1:80 #删除整个虚拟服务器
systemctl stop ipvsadm #停止服务(清除策略)
systemctl start ipvsadm #启动服务(重建规则)
ipvsadm-restore > /etc/sysconfig/ipvsadm #恢复LVS策略
配置调度器的网关
web01
vim /etc/sysconfig/network-scripts/ifcfg-ens33
注释掉DNS,将lns(lb负载调度器)的ip配置成web01的网关
同理web02一致
systemctl restart network 重启网络
web1
web2
3.4 测试 LVS 群集
在一台IP为12.0.0.20 的客户机使用浏览器访问 http://12.0.0.1/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点(或者关闭Web服务的连接保持)。