聊聊负载均衡lvs

2019-07-08 13:28:30 浏览数 (1)

序言

负载均衡是一个网络的基础,到处都是,各种各样的软件,成熟的软件那么多,要合理使用。

所有的backup都是废物,真正能做到负载均衡的,要考虑很多因素,例如会话保持,你就做不到真正的分担负载。

lvs的两种模式

lvs有很多种模式,这里主要看看两种模式,一种是NAT模型,一种则是fullNAT模型。

fullnat只是在nat模型上的改进,从而可以支持跨机房的提供负载均衡服务,而相对于nat来说,后端的rs必须在同一个网络中,也就是fllnat模型可以支持跨vlan,而对于nat则必须在同一个网段中,而且对于nat来说,后端的rs的网关必须要设置lvs的dip。

呵呵,没有画图软件。。。手画一个。。。

如上图所示,为nat模型的,cip表示客户端ip(client ip),vip表示lvs监听的端口(vitrual ip),dip表示lvs的调度ip(director ip),rip表示后端的rs的ip(real searver ip),因为lvs提供的是一个虚拟的ip,所以后端才表示为真正的提供服务的ip地址,毕竟lvs是linux vitrual server,linux虚拟服务。

在上面的图中,主要的部分就是请求经过lvs的时候,进入的请求的目标地址被dnat,从而目标地址变成了rip;在响应经过lvs的时候,响应的源地址被snat,从而源地址变成了vip。

在步骤3的时候,由于目标地址是cip,从而走默认的网关出去,从而到了lvs的dip,所以在进行配置的时候,rs的网关必须指向lvs的dip,这是一个巨大的限制,而对于fullnat则不存在这种限制。

实验环境:lvs两个网卡,vip192.168.1.16,dip172.16.53.135;rs用一个主机,rip172.16.53.136,运行两个容器分别为httpd和nginx,映射端口为80和90.

在lvs上需要安装ipvsadm工具,开启转发功能,关闭防火墙.

rs上需要将网关指向dip172.16.53.135。

配置文件中只需要加上ipvsadm即可运行添加nat规则,规则是手动保存的:

分别对三个网卡进行抓包查看请求,分别是vip,dip,rip:

对应于上图中步骤1,客户端向vip请求;也对应于步骤4,vip向客户端响应(对vip进行抓包)。

对应于步骤2和3,dip向rip请求和响应(对dip进行抓包)。

对应于步骤2和3,dip向rip请求和响应(对rip进行抓包)

从抓包上来看,也就验证了NAT模型的转发,如何来区别NAT和fullNAT。

在上图中显示为masq表示为nat模型,主要目的就是隐藏后端的rs,而对于fullnat,则是显示fullnat。

在上图中,activeconn表示活跃的连接数,也就是表示tcp中established状态,而inactconn则表示syn_recv,time_wait等状态。

这只是一个开端,其实还有很多后续工作要做:

1 如何做到lvs的高可用;

2 lvs的日志怎么保存;

3 健康检查怎么做;

4 超时等时间设置;

5 选择合适的算法调度;

。。。。略略

发现一个问题,未开启lvs的转发功能,这个时候你会发现客户端请求是超时的,而对于lvs来说完全正常,所以呢,出现问题的时候,检查一下相关的配置。

摸不着头脑的报错,毕竟我的脑袋是水做的,哎哟,开始有脑子了?

lvs的一些统计数据:

猜猜这个报错是为啥?

人约黄昏后,那是一份期待,哈哈哈

风言风语

创新的本质是简单的用户体验,我就不,我就要你们动脑筋,可惜资本市场不认可。

很多时候人总是及其的容易陷入到内核之中,追求极致的完美,追根溯源,不能自拔,从而失去了观察的能力,其实也可以换一个角度来想:要从一切方面学习,无论是好的,还是坏的,无论是竞争对手,还是合作伙伴,其实都是学习的来源,学习的开始就是模仿秀,模仿的最大能力就是将别人的进行升华,然后变成自己的。

所谓的敦敦教诲,其实没人会听,人总是存在局限性,只能看到自己想看的哪部分,能跳跃出一种思维也是一种极大的能力。

约束更应该是动力,君不见考试前夜挑灯夜战,一夜能做完一个学期的事情,所以呢,人嘛,没事逼逼自己,你就会发现,努力其实也没什么用,哈哈哈。

0 人点赞