专栏首页SRE运维实践聊聊负载均衡lvs

聊聊负载均衡lvs

序言

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

所有的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的一些统计数据:

猜猜这个报错是为啥?

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

风言风语

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

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

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

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

本文分享自微信公众号 - SRE运维实践(gh_319dd73ec076),作者:NAN

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • docker进程分析

    安装容器的时候,一句话就够了,yum -y install docker-ce,前提是配置好docker的yum源,但是有的时候配置好了源,总是会发现t...

    SRE运维实践
  • 黑盒监控与白盒监控

    谈到监控,有各种各样的监控软件,有各种各样的存储数据的格式,最流行的莫过于将相关的监控数据存储在mysql中,建一个表,然后按照时间来进行监控,这种方式最大的...

    SRE运维实践
  • 容器的文件系统

    很多时候都会焦虑,为什么会焦虑呢,因为变化的太快了?急于看到结果?基于事实去看的话,焦虑可能要少点儿,焦虑的时候多注意观察,慢慢积累沉淀。

    SRE运维实践
  • Django CSRF Bypass (CVE-2016-7401) 漏洞分析

    Author: p0wd3r (知道创宇404安全实验室) Date: 2016-09-28 0x00 漏洞概述 1.漏洞简介 Django是一个由Python...

    Seebug漏洞平台
  • Github项目推荐 | Google发布序列到序列建模模块化可扩展框架Lingvo

    https://www.arxiv-vanity.com/papers/1902.08295/

    AI研习社
  • Java通过redis管理你的集群定时任务

    早在实习的时候,笔者就接触了spring-task和quartz框架,相信任何java程序员都会有定时任务的需求,在单机上使用定时任务是非常简单的,但是在集群环...

    凯哥Java
  • 问题说

    对于问题需要辩证的看待,多年以前,记得和一个行业的资深架构师聊一个案例,当时是一个DB time抖动的场景,他的提问很简单,什么是问题,什么是性能问题,当时年少...

    jeanron100
  • 普华预测2015移动健康关键词:可穿戴、价格透明、DIY医疗

    大数据文摘
  • 对称加密和解密

    .NET提供了一组类型来实现对称加密和解密。这些类型拥有共同的基类SymmetricAlgorithm,如图所示。

    小蜜蜂
  • 把Sublime添加到Mac右键菜单

    虽然大部分的时候是使用命令行,但是有些时候我们需要在Finder里面编辑某些文件的时候,如果还是拘泥于这样,就必须打开 iTerm (幸好有Profile可以一...

    weishu

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动