簡述動靜分離

    今天來簡述一下如何實現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.www58058.com/76251

(0)
wodewode
上一篇 2017-05-18
下一篇 2017-05-19

相關推薦

  • 馬哥教育網絡班21期+第9周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash while read line; do     if [[ $line&n…

    Linux干貨 2016-09-06
  • Linux系統目錄結構

    root 管理員家目錄home 普通用戶家目錄bin 系統啟動和運行可能會用到的普通命令sbin 管理類命令proc 虛擬文件系統,由內核參數映射而來usr 系統軟件資源存放位置include 存放C/C++頭文件的目錄lib 庫文件lib64 64位系統庫文件tmp 臨時文件目錄boot 引導加載器所需文件,系統所需圖片保存于此etc 配置文件sys 虛擬…

    Linux干貨 2018-03-03
  • Linux網絡配置

    配置網絡 實現網絡組測試網絡網絡工具     基本網絡配置將Linux主機接入到網絡,需要配置網絡相關設置。一般包括如下內容:主機名IP/netmask路由:默認網關DNS服務器主DNS服務器次DNS服務器第三DNS服務器 網絡配置方式靜態指定:ifcfg: ifconfig, route, netstatip: object {link…

    Linux干貨 2017-08-19
  • 馬哥教育網絡班18期+第10周課程練習

    博客作業10周.md—E:\Documents CentOS啟動流程 1. 加電自檢 2. 引導加載次序:BOOT Sequence 3. bootloader: 4. GRUB引導加載器 5. 進入Kernel 6. 運行init 7. 運行初始化腳本 8.啟動系統服務 9. 設置登陸終端 整體總結 習題 習題1 習題2 習題3 習題4 習題5 習題6 練…

    Linux干貨 2016-06-23
  • N25-第十二周博客作業

    1、請描述一次完整的http請求處理過程; (1) 建立或處理連接:接收請求或拒絕請求;(2) 接收請求:接收來自于網絡上的主機請求報文中對某特定資源的一次請求的過程;(3) 處理請求:對請求報文進行解析,獲取客戶端請求的資源及請求方法等相關信息;(4) 訪問資源:獲取請求報文中請求的資源;從磁盤中獲取(5) 構建響應報文:(6) 發送響應報文:(7) 記錄…

    Linux干貨 2017-04-09
  • N26-博客作業-week12

    1、請描述一次完整的http請求處理過程; (1) 建立或處理連接:接收請求或拒絕請求; (2) 接收請求:接收來自于網絡上的主機請求報文中對某特定資源的一次請求的過程; (3) 處理請求:對請求報文進行解析,獲取客戶端請求的資源及請求方法等相關信息; (4) 訪問資源:獲取請求報文中請求的資源; (5) 構建響應報文: (6) 發送響應報文: (7) 記錄…

    Linux干貨 2017-05-23
欧美性久久久久