在7层分发中,http,mysql是如何控制数据包的走向

----------26-----张立---

在7层分发中,http,mysql是如何控制数据包的走向

一、架构说明:

                         apache-php
          分发nginx                                      mysql-a
                         apache-php
client                                  分发mysql         mysql-b1
                         tomcat
          分发nginx                                      mysql-b2
                         tomcat

     1、如上图所示:分发nginx把.php$的交给后面的apache处理,把.jsp$的交给tomcat处理。
2、然后链接后端数据库时,连接到分发mysql上,再由分发mysql交给 后面的mysql数据库去处理。
     3、在2的基础上,三个mysql是a-b-b的结构,所以需要由分发mysql去把写入的包交给mysql-a,把读取的包分开交给mysql-b1或者mysql-b2,因此分发mysql也需要有分发的功能。

二、实现:
     1、分发nginx和apache、tomcat的架构实现。
a、首先在分发nginx上用反向代理功能将.php结尾的交给apache-php处理;将.jsp结尾的交给tomcat处理;.html的交给自己处理。
         b、然后由于是多台apache-php和tomcat,因此利用upstream功能分别将相同的两个绑定起来。
         c、分发nginx也需要做负载平衡,因此利用keepalive技术,虚拟ip地址,实现两个分发nginx的负载平衡。
     2、分发mysql和mysql a-b-b的架构实现
         a、首先需要把三台mysql做成a-b-b结构。
         b、利用amoeba实现,分发数据库的写数据和读数据,并分别交给mysql的master和slave。
         c、由于有两台slave,因此利用amoeba的分发功能,将读取数据分发给两台slave。
         d、amoeba的配置文件中的ip指向不同的mysql服务器。
     3、1和2的链接的实现。
         a、利用隋老师写的实现读取分离的脚本mysql-w-r.tar.gz。
         b、因为是php语言写的,所以将主页放在nginx上,然后将需要调用的php文件放到后面apache-php上。
         c、实现时,修改上述需要调用的php文件中的ip指向amoeba(分发mysql)的ip;

三、数据的流向:
 (1)客户端请求服务器的数据时:
     1、客户端请求虚拟ip地址——nginx服务器
     2、nginx服务器通过uri的不同然后分别将数据交给自己或者apache-php或者tomcat。
     3、apache-php或者tomcat需要链接数据库时,将数据交给分发mysql(amoeba)。
     4、amoeba通过判断,将写入的交给mysql master;将要读取的通过分发分别交给aleve1和slave2.
 (2)服务器给客户端回数据时
     5、mysql的数据——amoeba——返回给交给amoeba数据的web服务器——活动的nginx——客户端。

 

你可能感兴趣的:(http,mysql,分发中,控制数据包)