前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LVS-IP TUN集群

LVS-IP TUN集群

作者头像
胡齐
发布2019-09-23 16:40:57
1.5K0
发布2019-09-23 16:40:57
举报
文章被收录于专栏:运维猫运维猫运维猫

DR方式是通过MAC,规模是一个交换网络。而TUN方式,是通过给数据包加上新的IP头部来实现,这个可以跨整个广域网。

异地机房的好处:容灾

但是是否可以保证边界最近访问到对应的real server呢?不能,这是最大的问题

DNS view功能实现边界最近访问。 智能DNS

172.17.1.150 配置成Director:

1,配置网络:

eth0 DIP 172.17.1.150

eth1 VIP 172.17.1.160

[root@localhost network-scripts]# echo 1 > /proc/sys/net/ipv4/ip_forward

2, 配置LVS TUN模式

[root@localhost network-scripts]# yum install ipvsadm

[root@localhost network-scripts]# ipvsadm -C

[root@localhost network-scripts]# ipvsadm -A -t 172.17.1.160:80 -s rr

[root@localhost network-scripts]# ipvsadm -a -t 172.17.1.160:80 -r 172.17.1.151 -i

[root@localhost network-scripts]# ipvsadm -a -t 172.17.1.160:80 -r 172.17.1.152 -i

# -i 隧道模式

[root@localhost network-scripts]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 172.17.1.160:80 rr

-> 172.17.1.151:80 Tunnel 1 0 0

-> 172.17.1.152:80 Tunnel 1 0 0

RealServer: 172.17.1.160

3,配置IP:

配置 eth0的 RIP为: 172.17.1.151

[root@localhost ~]# modprobe ipip #在加载好ipip模块后就会有默认的tunl0隧道。

注,如果没有在此处手动加载,那么使用ifconfig tunl0 时,会自动加载ipip隧道模块。

使用ifconfig查看。没有tun0 ,加参数-a 时,查看可以看到tun0

[root@localhost ~]# ifconfig -a #查看。

eth0 Link encap:Ethernet HWaddr 02:00:73:5E:03:F6

inet addr:172.17.1.151 Bcast:172.17.15.255 Mask:255.255.240.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:2046 errors:0 dropped:0 overruns:0 frame:0

TX packets:57 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:129393 (126.3 KiB) TX bytes:8778 (8.5 KiB)

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

tunl0 Link encap:IPIP Tunnel HWaddr

NOARP MTU:1480 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

[root@localhost ~]# lsmod | grep ipip

ipip 8403 0

tunnel4 2975 1 ipip

配置VIP:

生成ifcfg-tunl0配置文件:

[root@localhost ~]# ifconfig tunl0 172.17.1.160 netmask 255.255.255.255 up

[root@localhost ~]# service network restart

4,关闭ARP转发

echo '0' > /proc/sys/net/ipv4/ip_forward

echo '1' > /proc/sys/net/ipv4/conf/tunl0/arp_ignore

echo '2' > /proc/sys/net/ipv4/conf/tunl0/arp_announce

echo '1' > /proc/sys/net/ipv4/conf/all/arp_ignore

echo '2' > /proc/sys/net/ipv4/conf/all/arp_announce

echo '0' > /proc/sys/net/ipv4/conf/tunl0/rp_filter

echo '0' > /proc/sys/net/ipv4/conf/all/rp_filter

# tunl0/rp_filter 默认为1 ,需要改为0,关闭此功能。Linux的rp_filter用于实现反向过滤技术,也即uRPF,它验证反向数据包的流向,以避免伪装IP攻击。然而,在LVS TUN 模式中,我们的数据包是有问题的,因为从realserver eth0 出去的IP数据包的源IP地址应该为192.168.1.62,而不是VIP地址。所以必须关闭这一项功能。DR和TUN在网络层实际上使用了一个伪装IP数据包的功能。让client收到数据包后,返回的请求再次转给分发器。

echo '0' > /proc/sys/net/ipv4/conf/all/rp_filter #这个值默认就是0,此功能就是关闭的。所以在LVS DR模式中,不需要修改这一样内核参数

永久生效:

[root@localhost ~]# vim /etc/sysctl.conf #以文件最后添加以下内容

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

net.ipv4.conf.all.rp_filter = 0

[root@xuegod62 ~]# sysctl -p

4,配置web服务器

[root@localhost ~]#yum install httpd

[root@localhost ~]# echo yunweimao > /var/www/html/index.html

[root@localhost ~]# service httpd restart

RealServer: 172.17.1.152

5,配置IP地址:

配置eth0 RIP 172.17.1.152

[root@localhost ~]# modprobe ipip

#在加载好ipip模块后就会有默认的tunl0隧道

配置VIP:

[root@localhost ~]# ifconfig tunl0 172.17.1.160 netmask 255.255.255.255

查看:

[root@localhost ~]# ifconfig

eth0 Link encap:Ethernet HWaddr 02:00:2A:B0:03:F7

inet addr:172.17.1.152 Bcast:172.17.15.255 Mask:255.255.240.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:2286 errors:0 dropped:0 overruns:0 frame:0

TX packets:128 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:144835 (141.4 KiB) TX bytes:15940 (15.5 KiB)

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

tunl0 Link encap:IPIP Tunnel HWaddr

inet addr:172.17.1.160 Mask:255.255.255.255

UP RUNNING NOARP MTU:1480 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

6,关闭ARP转发

echo '0' > /proc/sys/net/ipv4/ip_forward

echo '1' > /proc/sys/net/ipv4/conf/tunl0/arp_ignore

echo '2' > /proc/sys/net/ipv4/conf/tunl0/arp_announce

echo '1' > /proc/sys/net/ipv4/conf/all/arp_ignore

echo '2' > /proc/sys/net/ipv4/conf/all/arp_announce

echo '0' > /proc/sys/net/ipv4/conf/tunl0/rp_filter

echo '0' > /proc/sys/net/ipv4/conf/all/rp_filter

永久生效:

[root@localhost network-scripts]#vim /etc/sysctl.conf #以文件最后添加以下内容

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

net.ipv4.conf.all.rp_filter = 0

[root@localhost network-scripts]# sysctl -p

7,配置web服务器

[root@localhost ~]# yum install httpd

[root@localhost ~]# echo maoxiaopu > /var/www/html/index.html

[root@localhost ~]# service httpd restart

测试:

先测试realserver:

http://172.17.1.151

http://172.17.1.152

正常打开

测试VIP:

注:不能在分发器上直接测试,需要去其他机器上测试

[root@localhost network-scripts]# elinks 172.17.1.160 --dump

NAT/DR/TUN比较

比较

NAT DR TUN

配置复杂度

复杂 简单 复杂

拓展性

很好 差 好

支持数量

>100 <20 >100

特点

封装IP 地址转化 修改MAC

支持OS

需要支持IPIP隧道 Any 大部分

三种模式下的简单压力测试

简单的压力测试采用Apache ab命令,500并发用户,10w的请求总数。

[root@localhost network-scripts]# rpm -qf `which ab`

httpd-tools-2.2.15-15.el6.x86_64

结果如下:

LVS模式 总耗时(s) TPS(#/sec) TPS(Transaction Per Second)每秒系统处理事务的数量

NAT 22.480 4448.34

TUNNEL 10.707 9339.80

DR 10.177 9825.68

可以看出NAT性能要比后两种差一倍。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档