很早以前就准备开始写自己的技术博客,可惜迟迟没有动笔。今天就已LVS源码剖析来作为自己博客的开端吧。
之前写过一个负载均衡器,不过有点过于简单,决定来研究一下LVS。
首先去LVS官网下载了源码,然后用Source Insight 来阅读,还是很方便的。
先简单介绍一下LVS的工作模式。
LVS提供了三种负载均衡模式,NAT、direct routing(DR)和tunnel。
NAT模式中,所有数据必须通过均衡器,后两种是半连接的处理方式,请求通过均衡器来进行转发,之后服务器的返回包直接通过路由返回。DR和tunnel的区别是,前者的均衡器和服务器必须在同一网段,通过修改MAC地址来实现转发,而后者进行了IP封装,所以可路由。
NAT模式的缺点比较明显,大家用的比较多的是DR模式,这种模式可以有效节约公网IP,还能保护后端的服务器,所以,我们主要来分析分析DR模式。
下面给大家画一张图来了解DR模式
图中的序号对应的解释:左边为源地址,右边为目的地址
首先,给均衡器和服务器配置同一个VIP,而且要确保请求必须先给均衡器。均衡器选取合适的服务器后,将对应的MAC填入目的MAC,让对应的服务器收到请求包。服务器处理完请求后