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虚拟四层交换的服务器,是一个虚拟的服务器集群系统。LVSLVS-NATLVS-DRLVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由),是调度器与实际服务器都有一块网卡连在同一物理网段上的情况。以下是DR模式配置实验。

1,实验环境如下:

技术分享

首先需在DR上安装IPVSADM程序包。并利用前面实验搭建好的两台LAMP环境的服务器做真实服务器。并启动HTTPD服务,验证如下:

技术分享

技术分享

2:DR上配置VIPDIP,并配置DR.

技术分享

技术分享

3,分别配置两台RS。先抑制ARP响应,然后设置lo:0上IP地址。

   技术分享

技术分享

技术分享

4LVS负载均衡测试:

   技术分享

技术分享

 arp响应限制说明:

1arp_ignore:

定义对目标地址为本地IPARP询问不同的应答模式0

0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求

1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求

2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内

3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应

4-7 - 保留未使用

8 -不回应所有(本地地址)的arp查询

 

2arp_announce:

对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口

0 - (默认) 在任意网络接口(eth0,eth1lo)上的任何本地地址

1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.

2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.

 

 

LVS原理总结:

         ipvsadm:用户空间的命令行工具,用于管理集群服务;

            ipvs: 工作内核中netfilter INPUT钩子上;

1LVSLVS-DRLVS-NATLVS-TUN三种模式:

   lvs-nat:多目标的DNAT(iptables);它通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出某RSRIP地址实现转发; 

      (1)RS应该和DIP应该使用私网地址,且RS的网关要指向DIP

      (2)请求和响应报文都要经由director转发;极高负载的场景中,director可能会成为系统瓶颈;

      (3)支持端口映射;

      (4)RS可以使用任意OS

      (5)RSRIPDirectorDIP必须在同一IP网络; 

   lvs-dr:direct routing它通过修改请求报文的目标MAC地址进行转发;

      (1) 保证前端路由器将目标IPVIP的请求报文发送给director;通过静态绑定或者arptables或者修改RS主机内核的参数实现。

      (2)RSRIP可以使用私有地址;但也可以使用公网地址;

      (3)RSDirector必须在同一物理网络中;

      (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)RSOS必须支持隧道功能;

2DR模式工作原理:

    1,接收client的请求,根据设定的负载均衡算法选取一台realserverip

    2,以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RSDR将请求转发给RS是在数据链路层来实现的,所以DR必须和RS在同一网段里面。

3RealServer要在lo接口上配置VIP,因为要让RS能够处理目标地址为vipIP包,首先必须要让RS能接收到这个包,所以在lo上配置vip能够完成接收包并将结果返回client

RealServer在局域网中收到,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。clientVS同一网段,那么client将收到这个回复报文。如果跨了网段,那么报文通过经由网关路由器从Internet返回给client

  

 

 


本文出自 “前进的轨迹” 博客,请务必保留此出处http://lisoy79.blog.51cto.com/10836537/1752801

以上是关于LVS-DR实现基于LAMP的负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

LVS-DR+keepalive做高可用,实现负载均衡(主备模式)

基于NFS实现lamp的负载均衡之一: 实验拓扑

nginx负载均衡LAMP及基于memcached实现php会话保存

lvs-dr实现mysql负载均衡集群

基于NFS实现lamp的负载均衡之四: 部署mariadb

LVS-DR负载均衡群集