lvs负载均衡之NAT模式/DR模式
一,概念
1,LVS简介
LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。
2,集群的含义
(1)集群,群集
(2)由多台主机构成,但对外只表现一个整体
3,根据群集所针对的目标差异,可分为三种类型
(1)负载均衡群集
(2)高可用群集
(3)高性能运算群集
4,负载均衡集群是目前企业用的最多的群集
5,群集负载调度技术的三种工作模式
(1)地址转换(NAT模式)
(2)IP隧道(Tunnel模式)
(3)直接路由(DR模式)
6,LVS的负载均衡调度算法
(1)轮询–rr
(2)加权轮询–wrr
(3)最少连接–LC
(4)加权最少连接–WLC
(5)基于局部的最少连接–LBLC
(6)带复制的基于局部性的最少连接–LBLCR
(7)目标地址散列调度–DH
(8)源地址散列调度–SH
(9)最短的期望的延迟–SED
(10)最少队列调度–NQ
二,实验过程详解
1,NAT模式
准备环境:
NET模式工作原理
将一台调度机作为内网与外网的交换桥梁,客户端只能访问到调度机地址,然后由调度机向真实服务器发送请求,真实服务器再向调度机提供资源,调度机再将资源提供给用户。
准备环境
一台调度器:配置双网卡 VM1:192.168.100.41 桥接网卡:10.0.2.73
两台WEB服务器集群池:
内网:192.168.148.130 外网192.168.24.133 调度服务器
192.168.24.131 wed服务器(nginx)
192.168.24.132 wed服务器(apache)
这边的网关必须指向192.168.24.133这个地址
一台windos10测试机
modprobe ip_vs //加载ip_vs模块
cat /proc/net/ip_vs //查看ip_vs 信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
翻译:
IP虚拟服务器版本1.2.1(大小=4096)
端口调度器标志
—> RemoteAddress:端口转发权重ActiveConn InActCon
yum install -y ipvsadm //安装ipvsadm 管理工具
[root@localhost ~]# ipvsadm -v //查看版本
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
ipvsadm -A -t 192.168.211.201:80 -s rr // 创建虚拟服务器
对于负载均衡调度器来说,VIP 必须是本机实际已启用的IP地址,若群集的VIP地址为192.168.211.201,针对80 端口提供分流服务,使用轮询的调度算法
注:-A 表示添加虚拟服务
-a 表示添加真实服务器
-t用来指定VIP地址及tcp端口,
-s用来指定负载调度算法{(轮询:rr),(加权轮询:wrr),(最少连接:lc),(加权最少连接:wlc).
指定节点:
ipvsadm -a -t 192.168.148.130:80 -r 192.168.24.132:80 -m -w 1
ipvsadm -a -t 192.168.148.130:80 -r 192.168.24.131:80 -m -w 1
格式:ipvsadm -a -t(指定虚拟ip地址) 调度机公有地址:端口 -r(指出地址参数) web服务器私有地址:端口 -m(表示NAT群集模式) -w(权重)
ipvsadm -ln //查看添加的节点
默认是80端口
上述输出结果,FORWARD列下Masq 对应Masquerade (地址伪装),表示采用的群集模式为NAT; 如果是Route,则表示采用的群集模式为DR。
ipvsadm -d -r192.168.211.135:80 -t 192.168.211.201:80 #删除服务节点
需要删除某一个节点时,使用选项-d
需要删除整个虚拟服务器时,使用选项-D
保存负载分配策略
使用 导入/导出 工具 ipvsadm-restore(导入) / ipvsadm-save(导出)
[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm #将策略保存到文件
[root@localhost ~]# cat /etc/sysconfig/ipvsadm
显示结果:-A -t www.b.com:http -s rr
-a -t www.b.com:http -r 192.168.131.128:http -m -w 1
配置负载调度器
(1)配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #再最后一行添加该代码
sysctl -p #*刷新一下*
到wed服务器中部署http服务
浏览器访问测试:
2,DR模式
(1)准备环境
四台Centos7虚拟机,并配置双网卡
(2)调度机配置
1.首先,创建一个vip虚拟地址。进入到网卡配置文件,复制网卡ens33并且命名为ens33:0,
cd/etc/sysconfig/network-scripts/ #进入网卡配置
cp ifcfg-ens33 ifcfg-ens33:0 #复制网卡,做虚拟VIP网卡
vim ifcfg-ens33:0 #编辑VIP地址
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.148.131
NETMASK=255.255.255.0
ifdown ens33:0;ifup ens33:0(systemctl restart network) #重启网卡
输入ip a 便可查看:
2.导入模块(modprobe ip_vs)并且下载ipvsadm命令
[root@localhost network-scripts]# modprobe ip_vs
3.添加vip地址作为调度器地址,并且加入节点服务器的真实ip地址:(注:有需要删除服务节点的话使用命令:ipvsadm -d -r192.168.148.131:80(虚拟ip地址) -t 192.168.148.132(节点服务器地址):80
)
ipvsadm -A -t 192.168.148.131:80 -s rr
ipvsadm -a -t 192.168.148.131:80 -r 192.168.148.132 -g -w 1
ipvsadm -a -t 192.168.148.131:80 -r 192.168.148.133 -g -w 1
使用命令查看是否添加成功:
[root@localhost network-scripts]# ipvsadm -ln
3.修改/etc/sysctl.conf配置文件,在尾部追加命令:
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
并输入sysctl -p来进行验证:
4.永久保存负载分配策略
使用 导入/导出 工具 ipvsadm-restore(导入) / ipvsadm-save(导出)
ipvsadm-save > /etc/sysconfig/ipvsadm #将策略保存到文件
cat /etc/sysconfig/ipvsadm #查看文件
重启并设置开机自启动:
systemctl enable ipvsadm
systemctl restart ipvsadm
(3)web服务器1/2(nginx/aPache)配置
1.使用ip a 命令查看双网卡是否配置成功,并重启服务
进入网卡配置文件,配置环回接口,将环回接口文件给复制下来并且命名为ifcfg-lo:0并且进行修改:
cd /etc/sysconfig/network-scripts/ #进入网卡配置
cp ifcfg-lo ifcfg-lo:0 #复制环回接口
vim ifcfg-lo:0 #编辑环回接口
systemctl restart network #重启网卡
2.进入/etc/sysctl.conf文件中在后面追加如下字段:
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.lo.all_ignore=1
net.ipv4.conf.lo.all_announce=2
使用命令sysctl -p 查看是否输入成功:
3.添加路由器,指明路由方向
route add -host 192.168.148.131 dev lo:0 #指明路由
route -n #查看路由
两台节点服务器配置相同,到这里我们就已经完成了节点服务器的配置。我们可以先利用windows10测试机进行一个验证,查看前面所作的配置是否成功。
输入192.168.148.131(调度机虚拟地址)
(4)测试
web服务器1:
web服务器2:
调度机: