LVS-DR 直接路由模式搭建

Linux Virtual Server - Direct Rounting Mode

  • 前置准备
  • 配置lvs节点(151)的虚拟ip=150
  • 配置lvs节点(150)的集群规则
  • 配置Real servers节点(130,131)的回环ip
  • 配置Real servers节点(130,131)的ARP响应级别
  • 验证连接及dr模式下的其他机制
      • 持久化机制
          • --persistent integer
          • --set integer integer integer
  • 其他问题
      • ! 关于ipvsadm的重启

前置准备

lvs节点 192.168.61.151 虚拟ip 192.168.61.150 安装ipvsadm(yum install -y ipvsadm)
real server 节点1 192.168.61.130 安装nginx,修改首页

LVS-DR 直接路由模式搭建_第1张图片

LVS-DR 直接路由模式搭建_第2张图片

real server 节点2 192.168.61.131 安装nginx,修改首页
LVS-DR 直接路由模式搭建_第3张图片

配置lvs节点(151)的虚拟ip=150

关闭网络管理器
systemctl stop NetworkManager
systemctl disable NetworkManager

复制一份你的当前网卡,取别名
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:1
vim /etc/sysconfig/network-scripts/ifcfg-ens33:1
配置如下

BOOTPROTO="static" #静态IP
DEVICE="ens33:1"  #网卡名
ONBOOT="yes" #配置开机启动
IPADDR="192.168.61.150" #配置虚拟ip
NETMASK="255.255.255.0" #配置子网掩码

保存后重启网络
systemctl restart network

查询ip,确认虚拟ip生效
ip addr
LVS-DR 直接路由模式搭建_第4张图片

安装集群管理工具 ipvsadm
yum install -y ipvsadm

验证安装
ipvsadm -ln
命令解释

  • -l list the table
  • -n numeric output of addresses and ports
    在这里插入图片描述
    可以看到,当前没有暴露任何的进程和端口,后续会进行配置

配置lvs节点(150)的集群规则

添加lvs集群服务器,配置规则为轮询

ipvsadm --add-service --tcp-service 192.168.61.150:80 --scheduler rr

查询配置是否生效
ipvsadm -ln
显示虚拟服务器1台,负载均衡算法为轮询

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.61.150:80 rr

为虚拟服务器192.168.61.150:80 添加真实服务器节点,配置dr模式

ipvsadm --add-server --tcp-service 192.168.61.150:80 --real-server 192.168.61.130:80 --gatewaying
ipvsadm --add-server --tcp-service 192.168.61.150:80 --real-server 192.168.61.131:80 --gatewaying

查询配置是否生效
ipvsadm -ln
LVS-DR 直接路由模式搭建_第5张图片
可以看到虚拟服务器的节点配置都成功了

将配置保存到规则库中,否则重启将失效
ipvsadm --save

配置Real servers节点(130,131)的回环ip

复制一份lo网卡(回环地址网卡),取别名
cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:1
vim /etc/sysconfig/network-scripts/ifcfg-lo:1
配置如下

DEVICE=lo:1
IPADDR=192.168.61.150
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
broadcast=127.255.255.255
ONBOOT=yes
NAME=loopback

重新加载回环地址
ifup lo 或者 systemctl restart network

查询配置是否生效
ip addr
LVS-DR 直接路由模式搭建_第6张图片
第二台真实服务器也做同样的配置

配置Real servers节点(130,131)的ARP响应级别

打开arp配置文件
vim /etc/sysctl.conf

添加如下配置

# configration for lvs 
net.ipv4.conf.all.arp_ignore = 1 
net.ipv4.conf.default.arp_ignore = 1 
net.ipv4.conf.lo.arp_ignore = 1 

net.ipv4.conf.all.arp_announce = 2 
net.ipv4.conf.default.arp_announce = 2 
net.ipv4.conf.lo.arp_announce = 2

ARP(Address Resolution Protocol,地址解析协议) 配置解释

arp-ignore 级别 筛选请求

  • 0:只要本机配置了ip,就能响应请求
  • 1:请求的目标地址到达对应的网络接口,才会响应请求

arp-annouce 级别 通告行为

  • 0:本机上任何网络接口都向外通告,所有的网卡都能接受到通告
  • 1:尽可能避免本网卡与不匹配的目标进行通告
  • 2:只在本网卡通告(回环)

重载arp配置
sysctl -p

增加一个网关,用于接收数据报文,当有请求到本机后,会交给lo去处理
route add -host 192.168.61.150 dev lo:1
永久添加该配置

echo "route add -host 192.168.61.150 dev lo:1" >> /etc/rc.local
tail -n 1 /etc/rc.local
source /etc/rc.local

查询配置是否生效
route -n
LVS-DR 直接路由模式搭建_第7张图片
第二台真实服务器也做同样的配置

验证连接及dr模式下的其他机制

如果防火墙有开启的话,需要开放80/tcp端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
或者直接关闭防火墙
systemctl stop firewalld

浏览器输入虚拟ip 192.168.61.150 ,测试访问
LVS-DR 直接路由模式搭建_第8张图片
可以看到访问到了130服务器

通过 ipvsadm -lnc 可以查看到当前的tcp连接
如图是多次刷新的结果,由于是本地虚拟机,所以是通过虚拟机网关访问的
LVS-DR 直接路由模式搭建_第9张图片

由于lvs负载均衡的持久化默认配置,无法直观的查看到我们配置的轮询负载的变化,可以通过修改持久化机制来观察lvs负载均衡。

持久化机制

–persistent integer

同一个客户端访问的真实服务器将在一定时间内保持不变,默认300(单位:s)

配置持久化链接规则5s,注意修改将覆盖之前的配置,因此需要把之前的分发机制轮询也写上
ipvsadm --edit-service --tcp-service 192.168.61.150:80 --scheduler rr --persistent 10

查询配置是否生效
ipvsadm -ln
LVS-DR 直接路由模式搭建_第10张图片

–set integer integer integer

设置tcp tcpfin udp链接的超时时间,该配置是一个全局的配置, 单位s, 0表示无意义,就是使用当前的配置。

  • 默认配置
    • tcp 900s
    • tcpfin 120s
    • udp 300s

设置tcp链接超时时间为10s
ipvsadm --set 10 0 0

查看配置是否生效
ipvsadm -l --timeout
在这里插入图片描述
查询链接情况 c 表示当前连接
ipvsadm -lnc

间隔五秒后刷新,可以看到配置真实服务器的变化

其他问题

! 关于ipvsadm的重启

重启可以使用命令 systemctl restart ipvsadm
但是重启关于虚拟服务器的配置需要重新进行。

注:重启如出现如下错误
LVS-DR 直接路由模式搭建_第11张图片
因为有的ipvsadm的配置文件名称为 ipvsadm-config 可以复制一份重命名为 ipvsadm
cp /etc/sysconfig/ipvsadm-config /etc/sysconfig/ipvsadm
或者
ipvsadm -S /etc/sysconfig/ipvsadm

又或者修改ipvsadm.service文件
cat /usr/lib/systemd/system/ipvsadm.service
LVS-DR 直接路由模式搭建_第12张图片
可以看到命令指向的配置文件地址是 /etc/sysconfig/ipvsadm 将其改为 /etc/sysconfig/ipvsadm-config 即可

你可能感兴趣的:(devops,lvs,dr,负载均衡)