欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LVS-DR模式搭建

程序员文章站 2024-03-21 12:14:22
...

前置准备

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模式搭建

real server 节点2 192.168.61.131 安装nginx,修改首页
LVS-DR模式搭建

配置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模式搭建

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

验证安装
ipvsadm -ln
命令解释

  • -l list the table
  • -n numeric output of addresses and ports
    LVS-DR模式搭建
    可以看到,当前没有暴露任何的进程和端口,后续会进行配置

配置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模式搭建
可以看到虚拟服务器的节点配置都成功了

将配置保存到规则库中,否则重启将失效
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模式搭建
第二台真实服务器也做同样的配置

配置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模式搭建
第二台真实服务器也做同样的配置

验证连接及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模式搭建
可以看到访问到了130服务器

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

由于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模式搭建

–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
LVS-DR模式搭建
查询链接情况 c 表示当前连接
ipvsadm -lnc

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

其他问题

! 关于ipvsadm的重启

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

注:重启如出现如下错误
LVS-DR模式搭建
因为有的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模式搭建
可以看到命令指向的配置文件地址是 /etc/sysconfig/ipvsadm 将其改为 /etc/sysconfig/ipvsadm-config 即可