LVS TUN 模式
1.TUN 网络规划
角色 | 主机名 | 虚拟网卡网络模式 | VIP | 内网 IP 地址(eth0) | 网关 |
---|---|---|---|---|---|
director lb | lvs | nat 模式 | 192.168.73.100 (ens33:0) | 192.168.73.128 | 192.168.73.2 |
real server1 | web01 | nat 模式 | 192.168.73.100 (tunl0) | 192.168.73.129 | 192.168.73.2 |
real server2 | web02 | nat 模式 | 192.168.73.100 (tunl0) | 192.168.73.130 | 192.168.73.2 |
2.web配置
#web配置server
[root@web01 ~]# yum install -y httpd
[root@web01 ~]# systemctl start httpd.service
[root@web01 ~]# systemctl enable httpd.service
[root@web01 ~]# echo 'web01'> /usr/share/nginx/html/index.html
[root@web01 ~]# curl 127.0.0.1
web01
[root@web02 ~]# yum install -y httpd
[root@web02 ~]# systemctl start httpd.service
[root@web02 ~]# systemctl enable httpd.service
[root@web02 ~]# echo 'web02'> /usr/share/nginx/html/index.html
[root@web02 ~]# curl 127.0.0.1
web02
#安装隧道模块 web01,02 都需要执行
[root@web01 ~]# modprobe ipip
[root@web01 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:01:7e:cd brd ff:ff:ff:ff:ff:ff
inet 192.168.73.129/24 brd 192.168.73.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::13f:acd5:a8f8:225e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
#配置/etc/sysctl.conf
[root@web01 ~]# tail -8 /etc/sysctl.conf
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.ens33.rp_filter = 0
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
- 有三个值,0、1、2,具体含义:
- 0:不开启源地址校验。
- 1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包。
- 2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不同,则直接丢弃该数据包。
#配置vip
[root@web01 ~]# ip addr add 192.168.73.100/32 dev tunl0
# 激活网络接口
[root@web01 ~]# ip link set tunl0 up
[root@web01 ~]# ip route add 192.168.73.100 dev tunl0
3.lvs配置
#安装ipvsadm
[root@lvs ~]# yum install -y ipvsadm
#加载激活隧道模块
[root@lvs ~]# modprobe ipip
#添加vip到调度器并启动
[root@lvs ~]# ip addr add 192.168.1.200/24 dev tunl0
[root@lvs ~]# ip link set tunl0 up
#添加策略
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -A -t 192.168.73.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.73.100:80 -r 192.168.73.129:80 -i
[root@lvs ~]# ipvsadm -a -t 192.168.73.100:80 -r 192.168.73.130:80 -i
#查看策略
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.73.100:80 rr
-> 192.168.73.129:80 Tunnel 1 0 0
-> 192.168.73.130:80 Tunnel 1 0 0
3.测试检验
#这里访问需要一台新的虚拟机,且在同一网段内才可访问,或者上浏览器访问
[root@web1 ~]# curl 192.168.73.100
web01
[root@web1 ~]# curl 192.168.73.100
web02
[root@web1 ~]# curl 192.168.73.100
web01
[root@web1 ~]# curl 192.168.73.100
web02