第一章 LVS负载均衡+NAT模式部署

        群集/集群的含义:特定:由多个主机构成,都干相同的一件事,对外展现为一个整体,只提供一个访问入口(域名或ip地址),对于客户端来说它就相当于一台大型计算机。

        互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求。解决这个问题的方法其一是使用小型机或大型机这种性能更高、应用场景更专业的服务器,但这种价格昂贵其二是可以使用多台相对普通的服务器构建服务群集,通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务,LVS是在企业中常用的一种群集技术。

一、群集的类型

1)负载均衡群集 LB

提高系统的响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力。负载分配依赖于负载均衡器的分流算法(分流算法=调度算法:iphash  url哈希),将请求分发给多个服务器节点。

典型代表:软件类(Nginx  LVS  HAProxy  SLB)   硬件类(F5  绿盟)

2)高可用群集 HA

提高系统的可靠性,减少服务中断时间,确保服务的连续性(通过使用 N 个 9 来代表高可用的指标)

典型代表:keepalived、heartbeat

3)高性能计算群集 HPC

将多台服务器的硬件资源整合成资源池以获取高性能的CPU、内存等资源,来提高整体运算能力

典型代表:云计算、分布式计算

补充:你们公司的高可用指标是什么样?生产环境中通过几个9来表示。如999表示百分之九十九点九,即连续工作时间为一年的百分之九十九点九,剩余的百分之零点一表示中断的时间(不超过3万秒左右)。一般公司要求3-5个9,不要太高。金融公司、公共事业要求更高,等有些行业要求更高,99.999%。

二、LVS负载均衡的三种工作模式

1)NAT   地址转换

调度器会作为所有节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,所以调度器会承载双向流量的负载压力,可能会成为整个群集的性能瓶颈。

由于节点服务器都会处于内网环境并使用私网IP,所以NAT模式具有一定的安全性(最高)。

2)TUN   IP隧道   IP Tunnel

调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。

由于节点服务器需要部署在互联网环境中,所以需要有独立的公网IP。调度器与节点服务器是通过专用的IP隧道相互通信。因此IP隧道模式的成本较高、网络安全性较低密,且数据在IP隧道传输的过程中需要额外的封装和解封装过程,性能也会受到一定的影响。

3)DR    直接路由  Direct Rounting

调度器也是仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。(与NAT模式的区别)

节点服务器与调度器是部署在同一个物理网络中,因此不需要专用的IP隧道。(与IP隧道模式的区别)

DR模式是企业首选的LVS模式。

三、LVS调度算法

  • rr(轮询)    
  • wrr(加权轮询)    
  • lc(最小连接)    
  • sh(源地址哈希)    
  • dh(目的地址哈希)
  • wlc(加权最小连接):优先分配请求给 <连接数>/<权重> 的值最小的节点服务器
  • lblc(基于地址的最小连接):如果服务器末超载且可用,则针对相同的目的地址的流量被发送到同一后端服务器;否则,流量被发送到连接数较少的服务器
  • sed(最短预期延迟)
  • nq(永不排队)

lvs默认编译为ip_vs模块,通过lsmod | grep ip_vs过滤。modprobe ip_vs加载后,即可看到/proc/net/ip_vs

ipvsadm工具选项

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 [-t VIP:PORT]
 

ipvsadm -A -t 虚拟IP地址:80 -s rr [-p 60]                        #添加虚拟服务器的配置
ipvsadm -a -t 虚拟IP地址:80 -r 节点服务器的ip地址:80 -m [-w 1]    #添加节点服务器的配置
ipvsadm -D -t 虚拟IP地址:80 -r                                   #删除以上所有服务器的配置
ipvsadm -D -t 虚拟IP地址:80 -r 节点服务器的ip地址:80              #删除一个节点服务器的配置

四、LVS-NAT模式部署

web服务器1192.168.170.200
web服务器1192.168.170.100
NFS共享存储192.168.170.4
LVS负载均衡器

192.168.170.5(私网ip)

12.0.0.2(公网ip,也是vip)

客户机验证12.0.0.10

1)部署NFS共享存储

//安装nfs 和 rpcbind
yum install -y rpcbind nfs-utils

//创建共享目录
mkdir /share/file1
mkdir /share/file2
vim /etc/exports
   /share 192.168.170.0/24(ro)  #共享给170网段所有主机,只读权限
   /share2 192.168.170.0/24(ro)  #共享给170网段所有主机,只读权限
exportfs -rv              #发布共享
showmount -e

//开启nfs和rpcbind服务
systemctl enable --now rpcbind nfs

//准备好测试页面文件
cd /share/
echo 'this is nginx test web1' > test.html
cd /share2
echo 'this is nginx test web2' > test.html

2)部署Web服务器

注意:节点服务器的默认网关要指向调度器的网卡地址,测试时可关闭连接保持

//nignx1和nginx2同时安装nginx并创建空目录
rz -e      #上传nginx.repo
yum install -y nginx
cd /usr/share/nginx/html/
mkdir xy101

//nginx1 挂载目录
vim /etc/fstab
192.168.170.4:/share /usr/share/nginx/html/class   nfs  defaults,_netdev 0 0

//nginx2 挂载目录
vim /etc/fstab
192.168.170.4:/share2  /usr/share/nginx/html/class   nfs  defaults,_netdev 0 0

//查看2台web服务器的挂载情况,启动nginx服务
mount -a
df -hT
vim /etc/nginx/nginx.conf       #关闭长连接keepalive_timeout 0;
systemctl enable --now nginx

//网关地址指向lvs调度器的内网网址,重启网络
vim /etc/sysconfig/network-scripts/ifcfg-ens33 
systemctl restart network

3)部署调度器

配置双网卡,开启IP路由转发,若内外主机要访问外网则需要配置SNAT规则,安装ipvsadm工具,添加虚拟服务器和真实服务器的配置,使用 -m 选项选择LVS-NAT模式

//配置双网卡
ifconfig
vim /etc/sysconfig/network-scripts/ifcfg-ens33
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
vim /etc/sysconfig/network-scripts/ifcfg-ens36
systemctl restart network

//开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p  加载

//清空规则添加snat规则
iptables -F && iptables -t nat -F
iptables -nL  #查看规则
iptables -t nat -A POSTROUTING -s 192.168.170.0/24 -o ens36 -j SNAT --to 12.0.0.30 
iptables -nL -t nat  #查看规则

//加载模块
[root@localhost ~]# for i in $(ls /usr/lib/modules/3.10.0-1160.71.1.el7.x86_64/kernel/net/netfilter/ipvs/ | awk -F. '{print $1}')
> do
> modprobe $i
> done
[root@localhost ~]# lsmod

//安装ipvsadm工具
rqm -q ipvsadm
mount /dev/sr0 /mnt
yum install -y ipvsadm

//启动ipvsadm时报错
systemctl start ipvsadm.service
journalctl -u ipvsadm.service
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
systemctl enable --now ipvsadm.service

//若内外主机要访问外网则需要配置SNAT规则,安装ipvsadm工具,添加虚拟服务器和真实服务器的配置,使用 -m 选项选择LVS-NAT模式
ipvsadm -A -t 12.0.0.30:80 -s rr                       #添加虚拟服务器地址
ipvsadm -a -t 12.0.0.30:80 -r 192.168.170.200:80 -m    #指定rr轮询算法,指定vip地址和真实服务器地址,-m表示nat模式
ipvsadm -a -t 12.0.0.30:80 -r 192.168.170.100:80 -m    #指定rr轮询算法,指定vip地址和真实服务器地址,-m表示nat模式
ipvsadm                                               #加载启用策略
ipvsadm -ln                                           #查询当前lvs的调度规则等信息
 

4)客户端验证

设置默认网关指向调度器的网卡地址,使用浏览器进行测试

补充

ipvsadm-save -n > /opt/ipvsadm.txt                     #导出策略保存
ipvsadm -C                                             #清空规则
ipvsadm-restore < /opt/ipvsadm.txt                     #导入策略恢复
ipvsadm -d -t 12.0.0.30:80 -r 192.168.170.100:80       #删除一个真实服务器
ipvsadm -D -t 12.0.0.30:80                             #删除整个虚拟服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值