目录
一、配置准备
二、NET模式
修改LVS端
开启路由
修改对内网卡 ens160
修改对外网卡 ens224
加载网卡配置文件
修改web1端
修改网卡信息
重启网络
检测
配置web2
检测
验证配置是否正常
启动nginx服务
验证以上配置
添加lvs规则
验证
三、DR模式
修改lvs端
调整ARP参数
使用ens160承载
更改lvs规则
重启ipvsadm服务
修改web1端
内核配置
配置虚拟IP
添加回环路由
编辑
修改web2端
内核配置
配置虚拟IP
添加回环路由
验证
编辑四、tun模式
修改lvs端
添加并加载模块
还原配置
添加lvs规则
修改web2端
还原设置
加载隧道模块
配置隧道
ARP抑制
配置web1
还原配置
加载隧道模块
配置隧道接口
ARP抑制
一、配置准备
对每台主机都进行关闭防火墙、上下文等,减少阻碍
[root@everyone ~]# systemctl stop firewalld
[root@everyone ~]# setenforce 0
安装服务
[root@everyone ~]# yum install -y ipvsadm ##安装服务
[root@everyone ~]# yum install -y nginx ##检测是否成功
向 web1 与 web2 中的nginx网页添加内容,用来验证是否成功
二、NET模式
将3台主机网络均改为VMnet1模式(模拟在同一内网中)
向lvs端添加一块对外的网卡
修改LVS端
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# cp ifcfg-ens160 ifcfg-ens224
开启路由
[root@lvs network-scripts]# sed -i 's/^net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
[root@lvs network-scripts]# sysctl -p
修改对内网卡 ens160
[root@lvs network-scripts]# vim ifcfg-ens160
修改对外网卡 ens224
[root@lvs network-scripts]# vim ifgcf-ens224
加载网卡配置文件
[root@lvs network-scripts]# ifdown ens160 ; ifup ens160
[root@lvs network-scripts]# ifdown ens224 ; ifup ens224
[root@lvs network-scripts]# ip a
修改web1端
修改网卡信息
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
重启网络
[root@web1 ~]# ifdown ens160 ; ifup ens160
检测
配置web2
[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
[root@web2 ~]# ifdown ens160 ; ifup ens160
检测
验证配置是否正常
启动nginx服务
验证以上配置
添加lvs规则
[root@lvs network-scripts]# ipvsadm -C
[root@lvs network-scripts]# ipvsadm -Ln
[root@lvs network-scripts]# ipvsadm -A -t 192.168.11.35:80 -s rr
[root@lvs network-scripts]# ipvsadm -a -t 192.168.11.35:80 -r 192.168.100.1:80 -m
[root@lvs network-scripts]# ipvsadm -a -t 192.168.11.35:80 -r 192.168.100.2:80 -m
[root@lvs network-scripts]# ipvsadm -Ln
验证
三、DR模式
在nat基础上进行配置
修改lvs端
删除多余网卡
调整ARP参数
[root@lvs ~]# vim /etc/sysctl.conf
[root@lvs ~]# sysctl -p
使用ens160承载
也可写入配置文件,永久保存
更改lvs规则
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
[root@lvs ~]# ipvsadm -A -t 192.168.100.101:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.100.101 -r 192.168.100.1:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.100.101 -r 192.168.100.2:80 -g
[root@lvs ~]# ipvsadm -Ln
重启ipvsadm服务
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl restart ipvsadm
修改web1端
内核配置
[root@web1 ~]# vim /etc/sysctl.conf ##插入以下net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce=2[root@web1 ~]# sysctl -p1. net.ipv4.conf.all.arp_ignore:将其设置为1,表示Web节点将忽略针对本地IP地址的ARP请求。这样可以防止Web节点响应其他节点的ARP请求,避免网络混乱。
2. net.ipv4.conf.all.arp_announce:将其设置为2,表示Web节点将使用自己的IP地址作为发送ARP请求时的源地址。这样可以确保响应的ARP请求返回到负载均衡器,而不是被路由丢弃。
3. net.ipv4.conf.default.arp_ignore和net.ipv4.conf.default.arp_announce:类似于前两个参数,但仅适用于默认网络接口。
4. net.ipv4.conf.lo.arp_ignore和net.ipv4.conf.lo.arp_announce:类似于前两个参数,但仅适用于环回接口(lo)。在DR模式下,为了实现返回流量的负载均衡,环回接口也需要进行相应的配置。
配置虚拟IP
可配置文件,永久生效
[root@web1 ~]#ifconfig lo:0 192.168.100.101/32
添加回环路由
[root@web1 ~]# route add -host 192.168.100.101/32 dev lo:0
修改web2端
内核配置
[root@web2 ~]# vim /etc/sysctl.conf ##插入以下net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce=2[root@web2 ~]# sysctl.conf -p
配置虚拟IP
添加回环路由
[root@web2 ~]# route add -host 192.168.100.101/32 dev lo:0
验证
四、tun模式
修改lvs端
添加并加载模块
[root@lvs ~]# vim /etc/modules-load.d/ipvs.conf
[root@lvs ~]# modprobe -a $(cat /etc/modules-load.d/ipvs.conf)
还原配置
添加虚拟ip
添加lvs规则
root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
[root@lvs ~]# ipvsadm -A -t 192.168.11.1:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.11.1:80 -r 192.168.100.1:80 -i
[root@lvs ~]# ipvsadm -a -t 192.168.11.1:80 -r 192.168.100.2:80 -i
[root@lvs ~]# ipvsadm -Ln
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl restart ipvsadm
修改web2端
还原设置
加载隧道模块
[root@web2 ~]# echo "ipip" > /etc/modules-load.d/ipip.conf
[root@web2 ~]# modprobe ipip
配置隧道
[root@web2 ~]# ip tunnel add tunl0 mode ipip remote 192.168.100.100 local $(hostname -I | awk '{print $1}')
[root@web2 ~]# ip link set tunl0 up
[root@web2 ~]# ip addr add 192.168.11.1/32 dev tunl0
[root@web2 ~]# ip a
ARP抑制
[root@web2 ~]# echo "1" > /etc/sysctl.d/arp_ignore.conf
[root@web2 ~]# echo "2" > /etc/sysctl.d/arp_announce.conf
[root@web2 ~]# sysctl -p /etc/sysctl.d/arp_announce.conf
[root@web2 ~]# sysctl -p /etc/sysctl.d/arp_ignore.conf
配置web1
还原配置
加载隧道模块
[root@web1 ~]# echo "ipip" > /etc/modules-load.d/ipip.conf
[root@web1 ~]# modprobe ipip
配置隧道接口
[root@web1 ~]# ip tunnel add tunl0 mode ipip remote 192.168.100.100 local $(hostname -I | awk '{print $1}')
[root@web1 ~]# ip link set tunl0 up
[root@web1 ~]# ip addr add 192.168.11.1/32 dev tunl0
ARP抑制
[root@web1 ~]# echo "1" > /etc/sysctl.d/arp_ignore.conf
[root@web1 ~]# echo "2" > /etc/sysctl.d/arp_announce.conf
[root@web1 ~]# sysctl -p /etc/sysctl.d/arp_announce.conf
[root@web1 ~]# sysctl -p /etc/sysctl.d/arp_ignore.conf