簡述動靜分離

    今天來簡述一下如何實現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 23:55
下一篇 2017-05-19 08:11

相關推薦

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

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登陸多次,則只顯示一次即可。     who | cut -d' ' -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。     who | sort -t' ' -k4 | …

    Linux干貨 2016-08-29
  • Linux之網絡管理

    Linux之網絡管理     在學習linux的過程中,Linux網絡的管理和配置中是很重要的,幾乎學習的后期都離不開網絡的概念和配置,如集群中的使用,學習好Linux網絡至關重要。     Linux網絡IP地址有兩種配置方式:靜態指定和動態分配 動態分配就是利用DHCP服務器,動態的給linux主機分配IP地址。靜…

    Linux干貨 2016-09-05
  • 用戶管理、組管理、權限管理、文本處理工具應用示例

    用戶管理、組管理、權限管理、文本處理工具應用示例 1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1/ [root@localhost ~]# chmod -R go= /hom…

    Linux干貨 2017-07-23
  • shell 腳本中數組的總結

    描述:   變量是存儲單個元素的內存空間,而數組是多個變量的集合,是一個連續的空間;但整個數組只能有 的名字。   數組內的數據都有指定的索引,從而找到數組內所指定的數據。索引的編號是從0開始的,依次遞增(0,1,2,3,…),這種方式叫數值索引。格式為:數組名[索引];${ARRAY_NAME[INDEX]}。索引也支持自定…

    Linux干貨 2016-08-29
  • 關于大型網站技術演進的思考(十一)–網站靜態化處理—動靜分離策略(3)

    原文出處: 夏天的森林   前文里我講到了網站靜態化的關鍵點是動靜分離,動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。由此可見,網站靜態化處理的核心就是動靜分離和緩存兩大方面,上篇我簡單講述了動靜…

    Linux干貨 2015-03-11
  • LVM組件詳解&創建實驗流程

       前言:根據前面的學習我們知道,一個磁盤一旦分完區并且格式化后,其空間大小是沒有辦法進行調整了。因此推出了LVM(Logical Volume Manager)邏輯卷管理機制,LVM重點在于可以彈性的調整文件系統的容量!并非在于性能和數據保全方面,需要文件的讀寫性能或者數據的可靠性,需要用到RAID。而LVM可以整合多個物理…

    Linux干貨 2016-08-30
欧美性久久久久