简述动静分离

    今天来简述一下如何实现wordpress的动静分离以及读写分离

     首先来放出大图。

简述动静分离

  1.来看图说话

    首先来介绍一下这张图    最前端的两台机器是  负责调度后端主机请求动态资源还是静态资源  并使用keepalived实现[Haproxy+keepalived]主机的高可用

    如果正在工作的Master主机宕机  会通过keepalived的WatchDog进程的两个子进程  当人两个子进程分别处理这自己复杂的任务  checker进程负责检查各个

    主机的健康状态 如:http  LVS  MASTER主机等的健康状态  如果checker进程检查到MASTER服务”不可用”时便会通知另一个进程vrrp进程告诉它删除通告

    并取消VIP并转换为BACKUP状态  在这里keepalived主要的是实现Haproxy的高可用 后端主机的状态检查完全可以交给Haproxy来做

    然后来说一下Haproxy  如果请求的是动态资源就交给[Apeche+PHP]的主机  如果请求的资源是静态资源就交给[Nginx]主机来处理

    例如:我访问的  http://1.1.1.1/wordpress/index.php 就交给[Apeche+PHP]的主机来处理请求

             我访问的是http://1.1.1.1/index.html或1.jpg的话就交给[Nginx]主机来处理请求

        首先来说一下第一种情况我请求的是 http://1.1.1.1/wordpress/index.php  前端的[Haproxy+keepalived]的Master主机会进行调度

    例如:调度到后端的[Apeche+PHP]  1主机  会从这台主机网站根目录下找到/wordpress/目录并找到所对应的index.php文件来应答客户机的请求

    如果用户的请求要访问数据库 会通过[Haproxy]主机来进行调度  调度到后端[DB_server]组中的某一台数据库主机 当然[DB_server]主机的数据库都是共享的 

    请求任意一台[DB_server]的数据都是一样的  

    如果要上传图片便会把图片  上传到指定的目录里边 当然这里的图片等静态资源也都是共享到一块的

        再来说一下第二种我访问的是静态资源http://1.1.1.1/index.html或1.jpg   前端的[Haproxy+keepalived]的Master主机会进行调度

    访问静态例如  调度器调度到调度到后端的[Nginx]  1主机  会从网站的跟目录下边找到index.html这个资源所对应的文件来应带客户请求  客户访问静资源

    时 会通多后端调度器[Nginx/Haproxy]来进行调度  调度到其中的某一台[共享server2]服务器将对应的资源返回给客户端

    2.简述各主机配置

    最前端的两台主机要实现高可用的话  需要安装keepalived实现虚拟IP的调度  配置一个虚拟主机段  并添加一个虚拟IP  一个为主服务器另一个为从服务器两台    主机一主一备如果主宕机从可以接手虚拟IP继续对外一共服务   主机1和主机2的配置差别不大主要是一主一从

    这只是配置样例如何配置还请各位自行定夺

    ! Configuration File for keepalived

    global_defs {
       notification_email {
         123456@qq.com
       }
       notification_email_from root@localhost
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id testOnly
       vrrp_mcast_group4 224.0.6.200
    }

    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 1
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass turnLeft
        }
        virtual_ipaddress {
            172.18.6.100
        }
    }

    这两台主机上还要配置  Haproxy 实现对动态资源和静态资源的调度如果访问的是  .jpg .css .js .png等资源是调度到[Nginx]静态资源主机  

    如果访问的是.php等动态资源调度到[Apache+PHP]动态资源主机上  两台主机的配置相同就行了

    这不是最终配置只是我写出来的例子  请根据需要自行修改

    frontend  main *:80
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js .html                ##.html方便我进行测试的

    use_backend static          if url_static
    default_backend             app

    ##默认的是后端主机是 backend app   如果匹配到的是  .jpg .gif .png .css .js .html或者/static /images /javascript /stylesheets就到backend static主机
    backend static
    balance     roundrobin
    server  staticsrv1 172.18.6.113:80 check                ##静态主机1
    server  staticsrv2 172.18.6.114:80 check                ##静态主机2
    server  sorryserver 172.18.6.111:8081 backup check ##sorryserver主机
    ##这个静态主机我弄了两个

    backend app
    option httpchk GET /index.php
    balance     roundrobin
    server  appsrv1 172.18.6.112:80 check ##动态主机我主要进行测试就整了一台
    server  sorryserver 172.18.6.111:8082 backup check ##sorryserver主机

    然后后端的两台[Apache+PHP]这就不用我多说了吧   安装httpd和PHP能解析php的代码就可以了  这里需要挂载[共享server1]主机的目录/wordpress的上级    目录 当然[共享server1]需要共享两个目录  一个是动态资源的目录   一个是存储的静态资源目录(实际环境应该是这样使用)  

    但我们做实验完全可以只共享一个目录就可以了这里完全没有必要对/wordpress/进行拆分

    这里使用挂载共享目录还有一个好处  方便代码的更迭  如果需要更换代码直接从共享服务器上替换新的代码就可以了  因为这里是使用共享的资源

    后端的[Haproxy]主机  只需要能调度数据库就可以了

    这不是最终配置只是我写出来的例子  请根据需要自行修改

    listen mysqls *:3306
        mode tcp
        balance leastconn
        server mysql_1 172.18.6.112:3306 check
        server msyql_2 172.18.6.113:3306 check
    最后的[共享DBserver]z只需要安装mysql并配置可以远程登录的用户即可  主要是用来存储用户提交的文字信息

    

    动态资源的主线说完了我们来说一说静态资源的主线

    [Nginx]主机需要安装nginx  请求的是静态资源从这里返回

    上边的大图我给自己挖了个坑  上边的图好像更绕了一点   两台[Nginx]主机需要开启反向代理功能  后端的主要还要开启web服务

    这是我重新修改后的图配置简单只是把[Haproxy/nginx]主机去掉就行了  [Nginx]主机直接挂在共享的目录即可(这里需要挂载的是存储图片的目录)

    注意:这里的图片存储目录需要与/wordpress/的目录结构完整对应    还要有/wordpress/的主页图片的目录   最简单的方法直接把/wordpress/整个目录挂载上

    就可以了  共享目录最简单的只要共享/wordpress/目录的上级目录就行了 (当然这里实际环境应该只有存储图片的目录和/wordpress/的主页目录)

    完全没有必要拆分嘛

简述动静分离

3最后说一下请求和动静资源的流向

    简述动静分离

    首选访问/wordpress/index.php  通过调度  调度到[Apache+PHP]群中  如果动态资源中有请求数据库的会通过[Haproxy]调度到[共享DB_server]群中  或用户    上传文字类内容是时通过[Haproxy]主机调度器来进行读写

    请求的.php资源是通过共享目录挂载的方式来访问的  如果用户上传图片等内容是  会存储到指定的目录   共享服务器都是通过某些服务共享的  所以共享服务    器中的资源都是相同的

    如果请求的是  图片资源或者 .css  .jpg等资源会被调度到[Ngingx]群中  [Nginx]主机是挂载共享服务器中的资源的  也会有静态资源和用户上传的图片资源等

    访问静态资源会直接通过[Nginx]主机来返回

    用户从浏览器访问会组成完整的响应内容

原创文章,作者:wode,如若转载,请注明出处:http://www.178linux.com/76251

(0)
wodewode
上一篇 2017-05-18 23:55
下一篇 2017-05-19 08:11

相关推荐

  • Openssl——为你的信息保驾护航

    OpenSSL基础 ·传输层协议:TCP,UDP,SCTP         port:进程地址,进程向内核注册使用某端口(独占) ·同一主机上的进程间通信:IPC,message queue,shm,semerphor ·不同主机上的进程间通信:socket  &nbs…

    Linux干货 2016-09-22
  • heartbeat实现高可用集群(1)

    环境 node1 192.168.1.35 node2 192.168.1.36 fip 192.168.1.80 daemon httpd nfs 192.168.1.15 配置HA集群的前提 1.节点时间必须同步,使用ntp协议实现 2.节点间需要通过主机互相通信,必须解析主机名至IP地址 a.建议名称解析功能能使用hosts文件实现 b.通信中使用的名…

    Linux干货 2017-11-03
  • VRRP协议

    VRRP协议 Virtual Router Redundancy Protocol 虚拟路由器冗余协议。 Vrrp协议在linux上的实现(软件实现)是keepalived。 VRRP简单的讲,就是心跳信息。 主节点不断的向备用节点广播信息,信息包含自己的心跳和优先级。 不光如此,还可以在主节点上安装一个监控,来监控其他资源,如果这些资源运行正常,就可以给其…

    2016-11-02
  • 马哥教育网络班22期+第6周课程练习 忍者乱太郎喻成

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#cp /etc/rc.d/rc.sysinit /tmp方法一 vim法在vim下用 : 进入命令行模式     %s/^&nbs…

    Linux干货 2016-10-24
  • 分区管理

    分区管理     一.磁盘分类 机械硬盘(HDD):该硬盘是传统的普通硬盘。主要有:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成  固态硬盘(SSD):用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元组成。 二.特点 1.     &n…

    Linux干货 2017-08-20
  • redis主/从配置及基于sentinel的故障转移

    一、NoSQL基础概念: ACID:原子性、一致性、隔离性、持久性;特性:数据量大、数据变化非常大(数据增长化、流量分布变化、数据间耦合结构变化)、数据源很多; CAP、BASECAP C:多个数据节点的的数据一致;A:用户发出请求后的有限时间范围内返回结果;P:network partition,网络发生分区后,服务是否依可用;CAP理论:一个分布式系统不…

    Linux干货 2014-10-15