LVS-DR实现基于LAMP的负载均衡
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS-DR实现基于LAMP的负载均衡相关的知识,希望对你有一定的参考价值。
基于搭建LAMP环境,并实践基于DNS做基于域名的虚拟主机中的环境,重新搭建一个同样的环境要求:
a)实现web服务文件更新的自动同步到另一台机器上
b)数据库实现主从复制
c)通过shell脚本实现网站源代码备份和mysql备份,备份策略包括全量备份、增量备份、差异备份
通过lvs实现负载均衡,要求使用DR模式,并能把其中的原理部分通过自己的理解汇总出来。
lvs:Linux Virtual Server, Linux虚拟四层交换的服务器,是一个虚拟的服务器集群系统。LVS有LVS-NAT,LVS-DR,LVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由),是调度器与实际服务器都有一块网卡连在同一物理网段上的情况。以下是DR模式配置实验。
1,实验环境如下:
首先需在DR上安装IPVSADM程序包。并利用前面实验搭建好的两台LAMP环境的服务器做真实服务器。并启动HTTPD服务,验证如下:
2:在DR上配置VIP和DIP,并配置DR.
3,分别配置两台RS。先抑制ARP响应,然后设置lo:0上IP地址。
4,LVS负载均衡测试:
arp响应限制说明:
1)arp_ignore:
定义对目标地址为本地IP的ARP询问不同的应答模式0
0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
4-7 - 保留未使用
8 -不回应所有(本地地址)的arp查询
2)arp_announce:
对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址
1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
LVS原理总结:
ipvsadm:用户空间的命令行工具,用于管理集群服务;
ipvs: 工作内核中netfilter INPUT钩子上;
1、LVS的LVS-DR,LVS-NAT,LVS-TUN三种模式:
lvs-nat:多目标的DNAT(iptables);它通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出某RS的RIP地址实现转发;
(1)RS应该和DIP应该使用私网地址,且RS的网关要指向DIP;
(2)请求和响应报文都要经由director转发;极高负载的场景中,director可能会成为系统瓶颈;
(3)支持端口映射;
(4)RS可以使用任意OS;
(5)RS的RIP和Director的DIP必须在同一IP网络;
lvs-dr:direct routing它通过修改请求报文的目标MAC地址进行转发;
(1) 保证前端路由器将目标IP为VIP的请求报文发送给director;通过静态绑定或者arptables或者修改RS主机内核的参数实现。
(2)RS的RIP可以使用私有地址;但也可以使用公网地址;
(3)RS跟Director必须在同一物理网络中;
(4)请求报文经由Director调度,但响应报文一定不能经由Director;
(5)不支持端口映射;
(6)RS的网关不能指向DIP;
(7) RS可以大多数OS;
lvs-tun:不修改请求报文的ip首部,而是通过在原有的ip首部之外,再封装一个ip首部,类似于网络隧道机制实现。
(1)RIP, DIP, VIP均为公网地址;
(2)RS的网关的不能指向DIP;
(3)请求报文必须经由director调度,但响应报文必须不能经由director;
(4)不支持端口映射;
(5)RS的OS必须支持隧道功能;
2、DR模式工作原理:
1,接收client的请求,根据设定的负载均衡算法选取一台realserver的ip;
2,以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS;DR将请求转发给RS是在数据链路层来实现的,所以DR必须和RS在同一网段里面。
3,RealServer要在lo接口上配置VIP,因为要让RS能够处理目标地址为vip的IP包,首先必须要让RS能接收到这个包,所以在lo上配置vip能够完成接收包并将结果返回client。
RealServer在局域网中收到包,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。client与VS同一网段,那么client将收到这个回复报文。如果跨了网段,那么报文通过经由网关路由器从Internet返回给client。
本文出自 “前进的轨迹” 博客,请务必保留此出处http://lisoy79.blog.51cto.com/10836537/1752801
以上是关于LVS-DR实现基于LAMP的负载均衡的主要内容,如果未能解决你的问题,请参考以下文章
LVS-DR+keepalive做高可用,实现负载均衡(主备模式)