LVS下的其他模式 ( NAT TUN )

作业 1:LVS 的NAT 模式1.什么是NAT 模式?
答:
NAT 英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet 工程任务组)标准, 允许一个整体机构以一个公用IP(Internet Protocol) 地址ft现在Internet 上。顾名思义,它是一种把内部私有网络地址(IP 地址)翻译成合法网络 IP 地址的技术。NAT 模式下,网络数据报的进ft都要经过 LVS 的处理。LVS 需要作为 RS(真实服务器)的网关。
当包到达 LVS 时,LVS 做目标地址转换(DNAT),将目标 IP 改为 RS 的 IP。RS 接收到包以后,仿佛是客户端直接发给它的一样。RS 处理完,返回响应时,源 IP 是 RS IP,目标 IP 是客户端的 IP。这时 RS 的包通过网关
(LVS)中转,LVS 会做源地址转换(SNAT),将包的源地址改为 VIP,这样,这个包对客户端看起来就仿佛是LVS 直接返回给它的。
2.NAT 模式的优缺点? 答:
优点:集群中的物理服务器可以使用任何支持TCP/IP 操作系统,物理服务器可以分配 Internet 的保留私有地址,只有负载均衡器需要一个合法的IP 地址。
缺点:扩展性有限。当服务器节点(普通 PC 服务器)数增长到 20 个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP 包的平均长度是 536 字节的话,平均包再生延迟时间大约为 60us(在 Pentium 处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为 8.93M/s,假定每台物理服务器的平台容许能力为 400K/s 来计算,负责均衡器能为22 台物理服务器计算。
3.NAT 模式具体的搭建:
<1>因为在NAT 模式下调度器就相当于一个路由器,对进来的ip 进行ip 的转换,将源ip 和目标ip 经过调度器就发生改变,因此首先得在调度器上设置双网卡,在服务器上设置网关,以便正常的调用
->为调度器添加一个新的网卡

Eth1:172.25.151.1/24 对内的网段Eht0:172.25.254.1/24 对外的网段
虚拟的ip,调度器的 ip ,VIP 的设定可以手动也可以利用ld 自动配置策略

VIP:172.25.254.100/24	绑定在eht0 上HTTP:server2:ip:172.25.151.2/24
GW:172.25.151.1
HTTP:server3:ip:172.25.151.3/24
GW:172.25.151.1

<2>在调度器上开启真实的地址转发Server1:->vim /etc/sysctl.conf

查看路由转发是否开启: ->sysctl -p
此时server2 server3 均可 Ping 通 172.25l.254.1
解决:如果ping 不通检查server1 上的 eth1 的网卡上的Ip 是否添加成功,最好在配置文件中修改eth1 的设置

<3>在调度器中利用ldiectord 做自动策略的添加
1.安装ldiectord 的包,如果源中没有在源中的配置中添加,
2.使用:rpm -ql ldiectord 的配置文件复制到
/etc/ha.d 中去
3.编辑:vim /etc/ha.d/ldirectord.cf

4.让ldirectord 的服务开启
5.可以在调度器中查看自动编写的策略
问题:如果ft现以下的情况可能是服务端的httpd 服务没有开启,开启后端的服务

6.查看策略书写成功

<4>在客户端进行测试
问题:不能测试到要做轮询的页面

解决:在物理机上测试不到调度器的页面,检查调度器上是否具有虚拟的VIP,ldirectord 只会自动书写ipvsadm 的策略并不会为调度器添加虚拟的VIP,因此要手动添加到eth0 上与外网的网段上

再次在物理机上测试就可以检测到轮询的页面,LVS 的NAT 就搭建成功了

作业 2:LVS 的TUN 模式1.什么是TUN 模式?
答:
采用NAT 模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈。为了解决这个问题,
调度器把请求的报文通过IP 隧道转发到真实的服务器。真实的服务器将响应处理后的数据直接返回给客户端。这样调度器就只处理请求入站报文,由于一般网络服务

应答数据比请求报文大很多,采用 VS/TUN 模式后,集群系统的最大吞吐量可以提高 10 倍。
LVS/TUN 的工作流程图如下所示,它和 NAT 模式不同的是,它在 LB 和 RS 之间的传输不用改写 IP 地址。而是把客户请求包封装在一个IP tunnel 里面,然后发送给RS 节点服务器,节点服务器接收到之后解开 IP tunnel 后, 进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB 服务器。

2.TUN 模式的优缺点? 答:
优点:负载均衡器只负责将请求包分发给物理服务器, 而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能
为超过 100 台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用 VS-TUN 方式,如果你的负载均衡器拥有100M 的全双工网卡的话,就能使得整个 Virtual Server 能达到 1G 的吞吐量。
不足:但是,这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议,我仅在Linux 系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。
3.TUN 模式具体的搭建: 实验环境:server1(LVS):
添加两个物理网卡:eth0:172.25.254.1/24
Eth1:用作TUN 隧道使用HTTP:server2:ip:172.25.254.2/24 HTTP:server3:ip:172.25.254.3/24
物理机:172.25.254.151/24
实验中利用ssh 服务可以方便的调试
<1>ip 配置完成以后对调度器进行 TUN 模式的配置,
1.配置好ip 后开启隧道模式,并为隧道添加ip 并启
动
-> modprobe ipip

2. 给隧道分配一个ip 并和隧道向连接
-> ip addr add 172.25.254.100/24 dev tunl0
可以理解为将ip 的数据包和隧道相连接,当由ip 数据包的请求时,包就会通过隧道传给真实的服务器
->ip link set up dev tunl0

2.给tunl0 添加路由,并开启这个路由
->route add -host 172.25.0.100 dev tunl0
->vim /etc/sysctl.conf

使用命令查看路由是否开启
->sysctl -p
3.添加ipvsadm 的策略,算法为 rr,在做实验之前,将之前的实验的策略清空
->ipvsadm -C

:表示为调度器添加算法为轮询
->ipvsadm -A -t 172.25.254.100:80 -s rr
:表示为虚拟的服务器群添加真实的服务器 -i 表示LVS 采用的是 TUN 模式
->ipvsadm -a -t 172.25.254.100:80 -r
172.25.254.2:80 -i
->ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -i

<2>在服务器上建立隧道(服务器->客户,数据包返回时无需经过调度器,直接由客户端返回给客户,)
问题:为什么要在服务器上搭建一个隧道?
使用TUN 模式的时候,调度器--真实服务器 之间是以隧道相连接 用户发送一个数据包,在调度器上使用TUN 协议对包进行封装,由隧道到达真实的服务器,当服务器到到这个包后,要对这个包进行解封,因此在服务器上也要搭建隧道才能使得数据进行下一步操作
1.在server2 上添加 TUNL0 隧道,并对其建立连接

2.在server2 中对 tunl0 添加路由
问题:为什么添加的路由是调度器的路由?
我的理解:路由是隧道的一种驱动的行为,也就是说有了隧道以后还需要路由的调配才可以决定数据包怎么到达客户请求的真实的服务器端
数据包经过封装由路由的调配到达服务器端,由服务器
进行解封,最后由服务器通过网外发到客户端
调度器中的路由应该可以对数据包进行分配,服务器上添加了调度器的路由,就表示两个路由之间由某种关系的分配,就可以将包传送到服务器上
简单来说IP 隧道技术就是将 【IP 数据包】 的上面再封装一层【IP 数据包】, 然后路由器根据最外层的 IP 地址路由到目的地服务器,目的地服务器拆掉最外层的IP 数据包,拿到里面的 IP 数据包进行处理。
路由是决定这个包应该向哪里转发的关键
让服务器的路由和负载均衡的路由相连接,以便可以封装和解封

3.禁止反向过滤并开启路由
问题:为什么要关闭反向过滤的路由? Linux 默认启用了反向路由检查
当Linux IP 协议栈收到一个IP 包时,会找路由。
本机的包会往上层协议送,而非本机的包会根据路由转发。
为了防止非法的包被转发或送给上层协议,查找路由后Linux 还会调用 fib_validate_source()以
检查其来源的合法性,基本原理是根据包的源地址查找路由的ft接口,然后比较包的原始入接口是
否和查到的ft接口一致;如果一致则放过,如果不一致查询skb->dev 的 rp_filter 值,为 1 时将丢弃这个包,0 时放过。
查看反向过滤的路由的开启状态,关闭反向过滤,开启路由
->sysctl -a |grep rp_filter
-> sysctl -w net.ipv4.conf.tunl0.rp_filter=0
-> sysctl -w net.ipv4.ip_forward = 1

4.对server2 上的 100 的地址做火墙的策略,类似于DR 中的策略的实现,不同的是DR 中的 100 添加的是真实的物理网卡,而TUN 则是添加到建立的隧道上
->开启arptables_jf 的服务,如果没有则在yum 中下载
-> /etc/init.d/arptables_jf start
->vim /etc/sysconfig/arptables

5.开启server2 上的 httpd 服务,以便轮询的时候便于观察实验结果
<3>在server3 上的配置在 server2 中同样配置,注意修改ip

<4>在真机中做测试:查看调度器是否可以访问到真实的服务并返回给客户

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值