LVS实战-IP隧道模式(即TUN模式)配置
教程每周二、四、六更新
Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
公众号
首先,让我们看一下通过 IP 隧道的虚拟服务器的图。IP隧道模式与NAT模式最大的不同是IP隧道模式通过IP隧道向真实服务器发送请求,而NAT模式通过网络地址转换向真实服务器发送请求.
| hostname | IP |
|---|---|
| ds | 10.0.0.128(nat) |
| rs01 | 10.0.0.62 |
| rs02 | 10.0.0.63 |
| vip | 10.0.0.201 |
# 所有机器关闭防火墙、关闭selinux(具体命令不再单独列出)
# LVS主机
[root@ds ~]# yum -y install ipvsadm
# RS主机,两个都要做
[root@rs01 ~]# yum -y install nginx
[root@rs01 ~]# echo rs01 > /usr/share/nginx/html/index.html # 修改第二台的时候注意把rs01改成rs02,以便区分
[root@rs01 ~]# systemctl start nginx
[root@rs01 ~]# curl 10.0.0.62
rs01
LVS(ds服务器)服务器配置:
# 给ens33添加ip
[root@ds ~]# ip a add 10.0.0.201/24 dev ens33
[root@ds ~]# ip a
......
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a4:37:31 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.128/24 brd 10.0.0.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 10.0.0.201/24 scope global secondary ens33
valid_lft forever preferred_lft forever
......
# 开启内核转发
[root@ds ~]# cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@ds ~]# sysctl -p
# 设置LVS转发策略
[root@ds ~]# ipvsadm -A -t 10.0.0.201:80 -s rr
[root@ds ~]# ipvsadm -a -t 10.0.0.201:80 -r 10.0.0.62 -i
[root@ds ~]# ipvsadm -a -t 10.0.0.201:80 -r 10.0.0.63 -i
在RS(真实服务器)服务上(两台都要做):# 加载隧道模块
[root@rs01 ~]# modprobe ipip
[root@rs01 ~]# ip a add 10.0.0.201/32 dev tunl0
[root@rs01 ~]# ip link set up tunl0
[root@rs01 ~]# ip a
......
4: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
inet 10.0.0.201/32 scope global tunl0
valid_lft forever preferred_lft forever
# 关闭内核反向过滤功能
[root@rs01 ~]# cat /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 0 # 反向路由检查:Reverse Path Filter
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
[root@rs01 ~]# sysctl -p
客户端验证:[root@m01 ~]# curl 10.0.0.201
rs01
[root@m01 ~]# curl 10.0.0.201
rs02
注意:arp_ignore=1 表示对于网络上发来的arp广播包,realserver将会丢弃,因为如果做出应答,根据arp协议,相当于通告网络上其它主机VIP对应的Mac地址是realserver的Mac地址,而不是LB的Mac地址,这样客户端就会绕过lvs,直接与后端的realserver通信,负载调度就失去了意义。arp_announce=2 定义将自己的地址向外通告时的级别 。2表示仅向与本地接口上(ens33)地址匹配的网络进行通告
雷哥开通了抖音(云计算雷哥)和微信视频号,求关注!!!和大家一起学习 技术!

推荐阅读
《一站式教程之集群架构》:
看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
公众号

收录于合集 #一站式教程
259个上一篇LVS实战-NAT模式配置