在浅谈linux集群(http://www.linuxidc.com/Linux/2012-08/68094.htm)一文中介绍了集群的基本概念和LVS的基本概念,也说到LVS有三种模型,NAT,DR,TUN,三种,那么它们具体是怎么实现负载均衡的呢?此篇博客的目的就是详解三种模型的工作方式以及每一种模型的配置.其实集群的配置没什么难度,主要是理解原理, LVS-NAT模型 NAT模型实现负载均衡的工作方式, 上篇博客中介绍过NAT模型其实就是通过网络地址转换来实现负载均衡的,它的工作方式几乎跟DNAT一模一样的,目前的DNAT只能转发到一个目标地址,早期的DNAT是可以将请求转发到多个目标的,在LVS出现之后就将此功能从DNAT种去掉了,下面来说说NAT模型的工作方式或者说NAT模型是怎么实现负载均衡的,根据上图, 1.用户请求VIP(也可以说是CIP请求VIP) 2,Director Server 收到用户的请求后,发现源地址为CIP请求的目标地址为VIP那么Dorector Server会认为用户请求的是一个集群服务,那么Director Server 会根据此前设定好的调度算法将用户请求负载给某台Real Server ,假如说此时Director Server 根据调度算法的结果会将请求分摊到Real Server 1上去,那么Director Server 会将用户的请求报文中的目标地址,从原来的VIP改为Real Server 1的IP,然后再转发给Real Server 1 3,此时Real Server 1收到一个源地址为CIP目标地址为自己的请求,那么Real Server 1处理好请求后会将一个源地址为自己目标地址为CIP的数据包通过Director Server 发出去, 4.当Driector Server收到一个源地址为Real Server 1 的IP 目标地址为CIP的数据包,此时Driector Server 会将源地址修改为VIP,然后再将数据包发送给用户, ********************************************************************************************************************************************* NAT模型的工作方式基本已经说完了,下面来根据上图来配置下LVS-NAT模型的集群,在开始配置之前先说个LVS的概念,这个概念也是上篇博客中没有提到的,就是LVS本身的组成, 其实LVS的本身跟iptables很相似,而且连命令的使用格式都很相似,其实LVS是根据iptables的框架开发的,那么LVS的本身分成了两个部分,第一部分是工作在内核空间的一个IPVS的模块,其实LVS的功能都是IPVS模块实现的,,第二部分是工作在用户空间的一个用来定义集群服务的一个工具ipvsadm, 这个工具的主要作用是将管理员定义的集群服务列表传送给工作在内核空间中的IPVS模块,下面来简单的介绍下ipvsadm命令的用法 1.定义集群服务类的 2.#ipvsadm 3.-A 添加一个集群服务 4.-D 删除一个集群服务 5.-E 修改一个集群服务 6. -t VIP:端口 定义集群服务的类型为TCP的某个端口 7. -u VIP:端口 定义集群服务的类型为UDP的某个端口 8. -f 防火墙标记 定义集群服务的类型为防火墙标记 9. -s 调度算法 指定集群服务的调度算法 10.******************************************************* 11.定义集群节点类的 12.#ipvsadm 13.-a 添加一个节点到集群服务 14.-d 从集群服务中删除一个节点 15.-e 修改集群服务器中的节点 16. -r 节点IP:端口 定义节点的IP及类型 17. -m 定义为NAT模型 18. -g 定义为DR模型 19. -i 定义为TUN模型 20. -w 权重 定义服务器的权重 21.******************************************************* 22.其他 23.#ipvsadm 24.-L 查看 25. -n 26. -c 27. --stats 28.-C 清空所有规则 29.-S 保存规则 30.-R 恢复规则 OK 基本已经介绍的差不多了,下面来配置下NAT模型,这里就以web服务为例。 (责任编辑:IT) |