天天看點

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配置:

     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即可。

     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為管理端口

         /etc/varnish/default.vcl配置:

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

         probe = {

               url = /health.html

               timeout = 3s

               interval = 2s

               window = 5

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

        }

         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();即可。

         注意:在使用組排程方式時,需要在配置檔案頂部添加

     啟動varnish服務

     systemctl start varnish.service

     使用varnishadm加載default.vcl檔案

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

    運作結果:

     通路/myhaproxy

     通路靜态資源

     通路動态資源

       通路phpMyAdmin

本文轉自 wujunqi1996 51CTO部落格,原文連結:http://blog.51cto.com/12480612/2051134

繼續閱讀