设为首页 收藏本站
查看: 3042|回复: 0

[经验分享] [Gerrit服务器集群搭建(四)] LVS原理概览及验证

[复制链接]
累计签到:11 天
连续签到:1 天
发表于 2015-9-5 10:39:36 | 显示全部楼层 |阅读模式
一、写在前面

       在前面组建好单个服务器后,现在开始规划集群网络流量负载平衡的方案,这也是集群当中很关键的一部分。


二、应用场景分析——HAProxy or LVS?

       这里以HAProxy和LVS两个负载平衡工具,从流量流经之路来分析,讨论适合Gerrit服务器应用场景的方案。一组简易的流程如下,左图使用HAProxy,右图为LVS的DR/Tunnel模式:

                                        DSC0000.png                       DSC0001.png

       从图中可以看出,LVS在响应用户请求时,不需要再经过Loading Balance Server,减少了不小开销。此外,LVS工作在网络4层(传输层)上,仅作分发之用,没有流量的产生,且对内存和CPU资源消耗较低。综上,这里选择用LVS作为解决方案。


三、进一步了解LVS

       LVS是Linux Virtual Server的简写,即Linux虚拟服务器。是根据iptable的框架开发的,分为两个部分,一个部分是工作在内核空间的IPVS模块(该模块在Linux 2.6.X默认集成,而早前的版本则需要重新编译内核),LVS的主要功能都由这个模块实现;第二个部分工作在用户空间,相当于给用户一个管理接口,名为ipvsadm,在搭建Director Server前需安装这个工具。
       LVS的工作模式有三种,分别是LVS-NAT(地址转换)、LVS-DR(直接路由)和LVS-Tunnel(隧道模式)。其中LVS-NAT工作行为与HAProxy类似,所有Real Server流量都需要经过Director Server才能到达用户,这里就不过多介绍了。
       而LVS-DR大致工作流程是这样的:
       a. 用户(Client IP)向服务器集群入口Virtual IP发起请求;
       b. Director Server接收该请求后,根据预先设定好的负载平衡调度算法,将该数据包转发到特定的Real Server,在转发前会封装入Director Server到Real Server的MAC信息。
       c. 当Real Server收到这个由Client IP到Virtual IP的数据包,由于Real Server也配置了Virtual IP,所以它会认定这个数据包是发送给自己的,于是接收,并将最终回应打上由Virtual IP到Client IP的包头,发送出去。
       d. 根据此时包头IP,目的地址为Client IP的数据包会直接回复给用户。
       这里有意思的是,步骤b,在最外层IP仍是Client IP到Virtual IP的情况下,这个数据包是如何由Director Server转发给Real Server的呢?这里大致工作流程是这样的:当Director接收帧首部为本机MAC的数据包,拆开对数据处理。此时发现目标地址为Virtual IP,知道这是一个集群服务。此时,在DR工作模式下,LVS不修改IP包任何信息,仅仅将拆掉的帧首部再包回去,只不过包的时候,将MAC信息变为由Director到Real Server。上文也提到,LVS工作在链路层,所以可以直接由MAC地址,将数据包转发出去。
       而Real Server在接收数据包经过层层拆解,看到源IP为Client IP,会在应用层将回复的数据包传给Client IP。
       这里还需要注意一个问题,由于每台Real Server在接收报文和响应报文的时候,都需要确认Virtual IP是否为自己的IP地址,因此,我们在配置时,需要给Real Server配置Virtual IP地址。那么同时有这么多台主机共用一个IP地址,会有什么影响呢?最大的影响是,当路由器向网内发送ARP广播,寻找Virtual IP对应的MAC地址时,会有多台主机响应,这会造成不必要的混乱。因此,在给Real Server配置Virtual IP时,要记得将它的ARP响应关闭。具体配置方法将在下一篇文章中贴出,本篇主要是对负载平衡工作模式的概览,就不细说了。
       再看Tunnel模式,这个模式流程思想和DR模式一样,主要区别在于它针对的是Director和Real Server在不同网段的情况。这种情况之所以独立出来而且比较复杂,还是因为LVS是在数据链路层进行报文转发的。那么在Tunnel模式下的转发是如何进行的呢?此时LVS也不会修改IP包任何信息,只不过不再包入帧首部,而是再加上一个IP Tunnel首部,这个首部包含转发的源目的地址以及该封包协议头,因此,也要求使用Tunnel模式的主机都支持IP Tunnel协议。


四、LVS原理验证

       结合上面对LVS的了解,这里以LVS-DR模式为例,关注Client请求TCP连接的第一个报文是如何经过转发修改到达Real Server的。图片中三个角色分别用黄、红、绿三色标识,是根据数据包传送过程,分别在这三个角色主机上获取的,在图片右下角也有标识。此外,直线箭头表示不同角色间转发,曲线箭头表示该角色内部的响应报文。
DSC0002.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109655-1-1.html 上篇帖子: 安装使用lvs 下篇帖子: 负载均衡软件LVS分析一(概念)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表