haproxy反代+varnish緩存+後端LAMP平臺集羣實現

  

haproxy服務器:

     第一臺haproxy本機IP:

        eno16777736:192.168.72.2

        eno33554976:172.16.25.1

     第二臺haproxy本機IP:

        eno16777736:192.168.72.3

        eno33554976:172.16.25.2

      keepalived高可用虛擬IP:

        eno16777736:192.168.72.20

        eno33554976:172.16.25.100

      keepalived配置:

      QQ截圖20171211121121.jpg

      QQ截圖20171211121151.jpg

      QQ截圖20171211123101.jpg

     keepalived的配置項在這裏就不再講述了,前面都有講過。主要就是對nginx的狀態進行一個判斷

     若nginx down掉了,則將權重值-10,MASTER降爲BACKUP(搶佔模式)。當MASTER中的nginx

     啓動後,又會自動成爲MASTER,虛擬IP就由MASTER掌控。


     haproxy反代配置:

     172.16.25.77爲後端varnish的IP

     設置fontend接受所有80端口信息;

     直接轉發到關於後端的varnish的backend var1,由varnish進行動靜分離;

     設置haproxy stats,stats enable開啓stats,並設置訪問的uri,設置用戶名,密碼,避免其他用戶訪問;

     backend var1算法設置爲一致性hash,基於uri的。並轉發到varnish主機,若varnish有多臺,直接增加server即可。

     QQ截圖20171215175724.jpg

     

     varnish服務器:

         IP:172.16.25.77

         yum install -y varnish

         配置文件/etc/varnish/varnish.param:運行時參數的配置,如varnish線程池得多少,每個線程池的線程數目有多少等。

         配置文件/etc/varnish/default.vcl進行編輯:varnish運行的策略庫,根據該策略庫判斷數據是否緩存等。

         前端nginx反代到後端時採用的是80端口,所以需要將varnish監聽在80端口這樣才能正確獲取到前端請求。

         修改/etc/varnish/varnish.param

         將VARNISH_LISTEN_PORT修改爲80端口,原來爲6081,該端口爲服務端口,6082爲管理端口

         QQ截圖20171211124100.jpg

        

         /etc/varnish/default.vcl配置:

         設置反代到後端的兩個主機,可以進行健康狀態監測,如

         probe = {

               url = /health.html

               timeout = 3s

               interval = 2s

               window = 5

               threahold = 3 (5次檢測有三次成功則表示後端RS正常)

        }

         QQ截圖20171211124742.jpg

         vcl_purge爲緩存裁剪,對不需要的緩存進行刪除,常用於緩存更新。

         vcl_recv爲所有請求數據都必須經過的一個狀態引擎的表示,在這裏對數據進行靜態分離,

         當請求的方法爲dele,則表示對該資源進行裁剪,當請求的資源存在.php則表示該資源爲

         動態資源,發往動態資源服務器web2,否則發往靜態資源服務器web1.在這裏可以對資

         源服務器進行擴展,若動靜態資源服務器有多臺,則可以設置vcl_init

         如

         vcl_init {

            new websrv = directors.backend_roundrobin();

            websrv.add_backend(webstat1);

            websrv.add_backend(webstat2);

         }

         將兩臺靜態服務器 都添加至websrv中,類似於nginx中的upstream

         調用時使用set req.backend_hint = websrv.backend();即可。

         注意:在使用組調度方式時,需要在配置文件頂部添加

         QQ截圖20171211130220.jpg

         QQ截圖20171211125147.jpg

     啓動varnish服務

     systemctl start varnish.service

     使用varnishadm加載default.vcl文件

     QQ截圖20171211130629.jpg

   

  後端RS的LAMP配置在這裏就不多說了;

    運行結果:

     訪問/myhaproxy

     QQ截圖20171215180225.jpg

    QQ截圖20171215180246.jpg

     訪問靜態資源

     QQ截圖20171211130750.jpg

     訪問動態資源

      QQ截圖20171211130822.jpg

       訪問phpMyAdmin

       QQ截圖20171211130929.jpg

        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章