注册 登录
  • 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

LVS负载均衡—NAT调度模式测试(二)

集群和存储 彭东稳 4405次浏览 已收录 0个评论

LVS两段式介绍

ipvs:工作在内核空间,TCP/IP协议栈INPUT钩子函数上的框架(Linux2.5内核之后内置ipvs代码,LVS跟netfilter不能同时使用)。

ipvsadm:工作在用户空间,负责管理集群服务编写规则的命令行工具,需要手动安装。

ipvsadm管理命令

一、管理集群服务

1)添加集群

2)修改集群

3)删除集群

参数解释:

使用示例:

二、管理集群中的RealServer

1)添加RealServer

2)修改RealServer

3)删除RealServer

参数解释:

使用示例:

三、查看集群状态

四、清空所有集群服务

五、导入导出ipvs规则

六、查看ipvsadm版本号

LVS NAT模式介绍

NAT模型显然根据名字都可以看出来,是通过网络地址转换来实现的,他的工作方式是,首先用户请求到达前端的负载均衡器(即Director Server),然后负载均衡器根据事先定义好的调度算法将用户请求的目标地址修改为RIP(后端的应用服务器,即Real Server),源地址修改为DIP(后端服务器连接调度器的接口)。 应用程序服务器处理好请求之后将结果返回给用户,期间必须要经过负载均衡器,负载均衡器将报文的源地址改为用户请求的目标地址,再转发给用户,从而完成整个负载均衡的过程。

如下图所示:

LVS负载均衡—NAT调度模式测试(二)

NAT模式中且不需要在RealServer上做任何设置,其只要能提供一个tcp/ip的协议栈即可,甚至其无论基于什么OS都行。基于VS/NAT,所有的入站数据包均由Director进行目标地址转换后转发至内部的RealServer,RealServer响应的数据包再由Director转换源地址后发回客户端。VS/NAT模式不能与netfilter兼容,因此,不能将VS/NAT模式的Director运行在netfilter的保护范围之中。现在已经有补丁可以解决此问题,但尚未被整合进ip_vs code。

NAT模式的特点如下:

1)所有的节点必须在一个IP网络中。

2)Real Server的网关必须是DIP。

3)RIP通常是私有地址仅用于各集群节点间的通信。

4)调度器位于Client和RealServer之间并处理进出的所有通信,当负载过大的时候,负载均衡器将是整个集群的瓶颈。

5)支持端口映射。

6)Real Server可以使用任意操作系统。

7)最多支持8个节点。

LVS NAT模式实验配置

1)环境配置

LVS负载均衡—NAT调度模式测试(二)

client一台,地址172.16.16.10。

Directory一台,两块网卡,外网地址172.16.16.1,内网为192.168.10.1。

Realserver1一台,安装HTTP服务,地址为192.168.10.2,网关为192.168.10.1。

Realserver2一台,安装HTTP服务,地址为192.168.10.3,网关为192.168.10.1。

PS:LVS NAT模式下,realserver的网关必须为DIP地址才行。

2)Directory配置

首先清空所有iptables规则避免影响ipvsadm

设置两个网卡的地址

打开路由功能

配置集群管理为加权轮询

添加2条RealServer

查看配置信息

3)RealServer1配置

安装nginx

4)RealServer2配置

安装nginx

5)测试效果

可以使用客户端访问172.16.16.1查看轮询访问变化,如下:

或者使用ab压力测试访问172.16.16.1查看加权轮询变化。

查看当前连接数

通过当前连接数,可以看出连接协议,以及tcp keepalive的剩余时间和状态信息。还有源和目标IP以及虚拟IP。

查看统计信息

由于是NAT模式,所以当访问几次之后,可以看到,指标Conns、InPkts、OutPkts、InBytes、OutBytes都有数据才正确,因为进出数据包都经过调度器,所以任何一个参数值为空都是不正确的。而DR模式则不然。

最后,还可以更改RealServer的权重,再使用AB压力测试一下,看看统计信息是否跟权重调整的对比。

PS:你在测试过程中,当LVS调度算法使用轮询或加权轮询默认时,如果你使用浏览器(同一个IP)访问VIP,可能会出现跟你想象的轮询调度不一样的结果,那就是一直刷新网页却无法轮询,每次都需要等待2分钟才有轮询效果。而如果你使用curl这种工具进行访问VIP则可以每次都轮询,主要因为浏览器默认使用了keepalive,而curl没有使用,当然这是LVS的默认特性,详情请看。

NAT模式服务控制脚本

Director脚本

当脚本写好之后就可以保存到/etc/init.d/ipvs文件,然后可以使用service管理。

启动服务

LVS NAT模式测试到此结束。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)or分享 (0)
关于作者:

您必须 登录 才能发表评论!