Centos7部署DR模式LVS负载均衡

LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式

LVS负载均衡群集—直接路由模式(LVS-DR)

lvs服务器:172.26.61.51
web服务器1:172.26.61.52
web服务器2:172.26.61.53
虚拟IP地址:172.26.61.60

首先关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

关闭防火墙并停用开机启动

systemctl stop firewalld.service
systemctl disable firewalld.service

更换阿里云yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

更新yum缓存

yum makecache

LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。以下操作可以手动加载ip_vs模块,并查看当前系统中ip_vs模块的版本信息

modprobe ip_vs #加载ip_vs模块
cat /proc/net/ip_vs 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

安装ipvsadm

yum install ipvsadm -y

新增调度脚本

#vi dispath.sh
#!/bin/bash
ifconfig eth0:0 172.26.61.60 broadcast 172.26.61.60 netmask 255.255.255.255 up #添加虚拟地址的虚接口
route add -host 172.26.61.60 dev eth0:0 #给eth0:0添加路由
ipvsadm -C #清除内核虚拟服务器表中的所有记录
ipvsadm -A -t 172.26.61.60:80 -s rr #创建虚拟服务器
ipvsadm -a -t 172.26.61.60:80 -r 172.26.61.52:80 -g #添加服务器节点
ipvsadm -a -t 172.26.61.60:80 -r 172.26.61.53:80 -g #添加服务器节点
ipvsadm -Ln #查看节点状态,加个“-n”将以数字形式显示地址、端口信息

保存退出,并给脚本执行权限

chmod +x dispath.sh

以上参数解读

"-A"表示添加虚拟服务器,
"-a"表示添加真实服务器
"-t"用来指定VIP地址及TCP端口
"-r"用来指定RIP地址及TCP端口
"-s"用来指定负载调度算法——rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)
"-m"表示使用NAT群集模式("-g"是DR模式,"-i"是TUN模式)

执行调度脚本

sh dispath.sh

返回

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.26.61.60:80 rr
  -> 172.26.61.52:80              Route   1      0          0         
  -> 172.26.61.53:80              Route   1      0          0

然后配置两台web服务器这里不做介绍,主要是介绍配置web服务器的DR模板

在两台web服务器创建相同脚本

#vi web.sh
#!/bin/bash
ifconfig lo:0 172.26.61.60 broadcast 172.26.61.60 netmask 255.255.255.255 up
route add -host 172.26.61.60 dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &>/dev/null

保存退出,给脚本执行权限

chmod +x web.sh

分别在两台web服务器上执行脚本并查看虚拟接口

sh web.sh
ifconfig #查看虚拟接口

{3E5709D3-0658-4BDC-AA4B-E02E4335FDCE}_20191104113631.jpg
最后我们可以找台服务器通过虚拟IP访问,多刷新几次,发现每次调度的不通的后端服务器

{4B37C9DD-DBB2-4361-A5C8-CAF72C976748}_20191104113132.jpg

{C058A9B4-9D8F-4DFB-B17F-CF55CE9264FA}_20191104113104.jpg


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/506.html