基于LVS的DR模式实现PHP应用

LVS-DR模式:

客户端请求服务器上的资源,就会发送请求报文,请求报文到达LVS调度器,调度器拆解报文首部,查看到请求的目标IP是自己,然后根据请求的目标端口并且根据调度算法随机挑选出一台Real Server服务器,这时在请求报文首部在次封装一层帧,即MAC地址,源MAC是自己,目标MAC是RS服务器。RS服务器接收到报文请求并处理请求,构建响应报文并发送给客户端,不经过调度器,所以避免了调度器过载导致并发出现瓶颈。因为RS是直接发送响应报文给客户端,所以需要RS服务器上需要配置调度器的公网IP。

特点:

1、各RS服务器一个接口即可,但需要在同一物理网络中;

2、各RS服务的网关不能指向调度器上的IP;RS服务器上的IP和调度器上的和RS服务器通信的IP通常应该在同一网络,但此二者必不会与调度器上的公网IP在同一网络;

3、各RS需要先设置内核参数,在设置公网IP和路由;

LVS-DR模式的结构图:(非原创)

实验准备: IP地址全是公网地址

1、虚拟机  172.18.250.76   172.18.250.99    LVS调度器          一个网卡开启两个IP

2、虚拟机  172.18.250.77   172.18.250.99(lo别名上配置)    Real Server

3、虚拟机  172.18.250.79   172.18.250.99 ( lo别名上配置)    Real Server

一:安装ipvsadmin:

管理LVS的服务是ipvs,ipvs则由ipvsadmin命令管理,类似于iptables。

]# yum -y install ipvsadm
]# ipvsadm -Ln                                 //查看ipvs定义的规则
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

配置网卡:

]# ifconfig eth0:0 172.18.250.99 netmask 255.255.0.0
]# ifconfig
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:F6:9E:DF  
          inet addr:172.18.250.99  Bcast:172.18.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

在两台RS上配置VIP地址:

]# ifconfig lo:0 172.18.250.99 netmask 255.255.255.255 broadcast 172.18.250.99
        //把lo:0设置为主机并只对自己发广播
]# route add -host 172.18.250.99 dev lo:0
        //设置请求报文是自己,那么流出的报文的源IP也是自己
]# echo 1  >/proc/sys/net/ipv4/conf/all/arp_ignore
]# echo 1  >/proc/sys/net/ipv4/conf/lo/arp_ignore
]# echo 2  >/proc/sys/net/ipv4/conf/all/arp_announce
]# echo 2  >/proc/sys/net/ipv4/conf/lo/arp_announce

apr_announce:  定义了网卡在向外宣告自己的MAC-IP时候的限制级别,常用的三个0,1,2

0:默认值,不管哪块网卡接收到了ARP请求,只要发现本机有这个MAC都给与响应。

1:尽量避免响应ARP请求中MAC不是本网卡的,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就尽量避免响应。

2:总是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就一定不响应,只有发现请求的MAC是自己的才给与响应。

arp_ignore:定义了网卡在响应外部ARP请求时候的响应级别,常用的为0,1

0:默认值,不管哪块网卡接收到了ARP请求,只要发现本机有这个MAC都给与响应。
      1:总是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就一定不响应,只有发现请求的MAC是自己的才给与响应。

隔绝RS服务器上的vip响应客户端的请求,地址冲突的问题,有三种方法:

1、在前端的网关接口上静态绑定;

2、在各RS上使用arptables;

3、在各RS上修改内核参数,来限制arp响应和通告;

配置规则:

]# ipvsadm -A -t 172.18.250.99:80 -s rr 
[[email protected] ~]# ipvsadm -a -t 172.18.250.99:80 -r 172.18.250.77:80 -g -w 1
[[email protected] ~]# ipvsadm -a -t 172.18.250.99:80 -r 172.18.250.79:80 -g -w 2
[[email protected] ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn      
TCP  172.18.250.99:80 rr
  -> 172.18.250.77:80             Route   1      0          0         
  -> 172.18.250.79:80             Route   2      0          0
  
-A:添加,管理集群
-t:指明调度器IP
-s:指明调度算法
-a:添加,管理集群上的RS
-r:指明RS
-g:LVS的DR模型
-w:权重

二、在两台Real Server上安装nginx、php、mariadb-server

]# yum -y install nginx php php-mysql mariadb-server

在两台RS上创建测试页:

]# echo "Hello RS1" >/var/www/html/index.html
]# echo "Hello RS2" >/var/www/html/index.html

在别的虚拟机上请求:

]# curl http://172.18.250.99/index.html
Hello RS2
]# curl http://172.18.250.99/index.html
Hello RS1
]# curl http://172.18.250.99/index.html
Hello RS2
]# curl http://172.18.250.99/index.html
Hello RS1                               //实现了负载均衡效果

三、安装phpwind论坛

]# unzip phpwind_UTF8_8.7.zip                     //在两台RS上操作
]# mv phpwind_UTF8_8.7/upload /var/www/html/

注意一点:phpwind安装完成后会总提示您已经安装过 phpwind,只需把install.php改个名字就行。

测试访问php应用时能否负载均衡:

]# curl 
。。。。。
</td></tr>
</table><br />
</div></body></html>Hello RS1
]# curl http://172.18.250.99/index.php
。。。。。
</td></tr>
</table><br />
</div></body></html>Hello RS2

考虑两点:

1、集群是否需要共享存储

2、客户端和集群是否需要保持会话

1、是否需要共享存储?

需要,如果客户端在172.18.250.77服务器上做了操作,出现其它情况调度到了172.18.250.79这台服务器上,那么客户端在此请求刚才做的写操作,会出现找不到资源的情况,所以需要共享mysql存储。

2、是否需要保持会话:

根据业务需求来选择是否保持会话

方法:

1、根据SH调度算法,把来自同一IP的客户端都请求到同一台RS服务器上

2、根据客户端的cookie做绑定,来请求同一台RS服务器

时间: 2024-10-23 19:13:54

基于LVS的DR模式实现PHP应用的相关文章

搭建LVS(DR模式)+Keepalived高可用群集,可跟做!!!

Keepalived的设计目标就是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器.管理服务器池,而不仅仅用作双机热备.使用Keepalived构建LVS群集更加简便易用,主要优势体现在,对LVS负载调度器实现热备切换.提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入. 在基于LVS(DR模式)+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本次实验以DR模式的LVS群集为基础,增加一台负载

LVS:DR模式(Direct Routing)部署实验

本文介绍怎样在kvm的虚拟环境下,部署实验LVS的DR模式.包含网络结构图,怎样配置.以及使用tcpdump分析ip包. 网络结构图 kvm节点(client) 192.168.7.2 (CIP) |           br_e网桥 /                     \ (VIP) eth7:192.168.7.33      eth14: 192.168.7.99       lvs虚拟主机                      server虚拟主机 (DIP)        

CentOS6.4 配置LVS(DR模式)

DR模式中LVS主机与实际服务器都有一块网卡连在同一物理网段上. IP分配 VIP:10.10.3.170 RIP1:10.10.3.140 RIP2:10.10.3.141 1.安装所需的依赖包 yum install -y wget make kernel-devel gcc gcc-c++ libnl* libpopt* popt-static 2.创建一个软链接,防止后面编译安装ipvsadm时找不到系统内核 ln -s /usr/src/kernels/2.6.32-358.18.1.

lvs+keepalived(DR模式)

(一) 网络架构     D1: (LVS_MASTER)     eth1:192.168.1.111     D2:(LVS_BACKUP)     eth2: 192.168.1.113     R1: (web_server1)     eth1:192.168.1.214      R2: (web_server2)     eth1:192.168.1.215      VIP:192.168.1.200 (网站对外提供的虚拟ip地址,域名是解析到这个ip地址) (二) 安装keep

LVS的DR模式

DR模式: 请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS. DR模式下需要LVS和绑定同一个VIP(RS通过将VIP绑定在loopback实现). 一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木. RS收到LVS转发来的包,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS

lvs中dr模式配置脚本

1 dr模式介绍 1.1 lvs的安装 安装详解:http://blog.csdn.net/CleverCode/article/details/50586957. 1.2 lvs模式 lvs有三种模式dr,nat,tun.这里先介绍dr模式. 1.3 dr特点 1)Load Balancer和所有的Real Server在同一个局域网段上. 2)Real Server将请求处理后,直接返回给用户,不需要在通过调度器返回. 1.4 处理过程 请求过程:客户 => vip => RealServ

虚拟集群LVS及DR模式搭建

LVS(虚拟集群Linux Virtual Server) LVS-NAT:地址转换,数据包来回都要经过NAT转换,所以Director Server(即LVS服务器)将成为系统瓶颈.使用NAT模式将需要两个不同网段的IP,一个IP接受外部请求服务,一般为外网ip,此IP称为VIP,一个IP与后realserver同一地址段,负责相互通信,称为DIP.后端realserver的网关地址需指向DIP.同时需开启linux内核的数据包转发功能. LVS-TUN:隧道 ,LVS/TUN与 LVS/DR

LVS的DR模式与NET模式的负载均衡实验

LVS 实现负载均衡 lvs(Linux Virtual Server) linux虚拟服务 VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS.LVS是内核级功能,工作在INPUT链的位置,将发往INPUT的流量进行"处理 net模式 基于轮询的实验 #设备: client : 172.20.0.20 LVS : 172.20.0.10.192.168.20.10 Real Server : 192.168.20.20 .192.168.20.30.192.

LVS之DR模式

DR(调度器将请求来的数据包的目标mac地址改为real server的mac地址,返回的时候也不经过调度器,直接返回给客户端) 每个real server 都要有公网ip 配置要求三台机器 每个网卡都要配置公网ip LVS/DR 配置 三台机器: director(eth0192.168.1.123, vip eth0:0: 192.168.1.128) real server1(eth0 rip: 192.1.122, vip lo:0: 192.168.1.128) real server