天天看點

基于HAProxy+Varnish實作動靜分離、負載均衡的高可用叢集

        在實際的生産使用過程中,一個基本的能夠應對日均百萬PV的網絡,一般會具有以下幾種結構。
這其中每種結構擔負了不同的角色。 代理伺服器,負責進行請求排程,實作了負載均衡。 KeepAlived配置代理伺服器實作了高可用。 緩存伺服器,實作了資源的緩存,提高了請求的命中率,加快了通路速度。 動靜分離,減輕後端伺服器壓力,提高資源通路速度。 資料庫主從複制,讀寫分離,降低了資料庫的壓力 運維監控系統,實時監控系統運作狀态。 自動化運維控制系統,批量管理大量伺服器。 版本控制系統,在應用的疊代過程中有着至關重要的作用。
        下面,我們來模拟實作一個簡單的網絡叢集結構。下面是這個結構的網絡拓撲圖。
實驗環境介紹

序号

擔任角色

主機名

位址

功能描述

A

網際網路用戶端

windows

172.18.2.22

充當網際網路使用者進行網絡通路

B

代理伺服器

haproxy

VIP 172.18.3.77;DIP 192.168.22.77

對網絡請求進行排程,實作均衡負載

C

緩存伺服器

varnish 1

192.168.22.33

針對網絡請求進行緩存,同時對後端伺服器進行動靜分離,并提供均衡負載

D

varnish 2

192.168.22.44

E

靜态web伺服器

staticweb1

192.168.22.100

提供靜态的網絡服務,例如html,js,css之類

F

staticweb2

192.168.22.101

提供靜态的網絡服務,例如html,js,css之類

G

動态web伺服器

dynamicweb1

192.168.22.200

提供動态的網絡服務,例如PHP,jsp等

H

dynamicweb2

192.168.22.201

I

資料庫伺服器

database

192.168.22.128

提供資料庫服務,供應用程式進行讀寫操作

實驗過程中,首先關閉SELinux和防火牆政策
        在主機A上安裝HAProxy,并對其進行配置。
        将HAProxy配置好以後,重新開機一下服務。然後在浏覽器中輸入 <code>http://172.18.3.77:9099/hastats</code>,就可以檢視到HAProxy的排程管理界面。  此時,如果Varnish伺服器已經配置成功了的話,就會顯示出如下界面。
        此時,在配置好HAProxy伺服器之後,就可以對varnish緩存伺服器進行配置了。主要修改的檔案為下面兩個。Varnish1 與Varnish2的配置檔案一緻,将IP修改為自己對應的IP就可以了。 <code>/etc/varnish/default.vcl</code>,varnish 的預設配置檔案 <code>/etc/varnish/varnish.params</code>,varnish 的一些預設參數。
其中<code>/etc/varnish/default.vcl</code>的配置内容,如下。
        對varnish的參數檔案進行修改。這樣便于讓代理伺服器知道應該将請求排程給誰。
        在上面的配置完成之後,在varnishadm控制台界面調用<code>backend.list</code>指令就能夠檢視,後端伺服器的健康狀态了。
        因為我們的後端伺服器還沒有進行配置,是以四個伺服器都是處于當機狀态。
        使用yum來安裝Httpd軟體包就可以。安裝之後,啟動服務,確定80端口已經打開。此時再在Varnish伺服器上調用<code>backend.list</code>指令就可以檢視到已經又兩個伺服器處于Healthy狀态了。
        在資料庫伺服器上,安裝資料庫服務,同時建立給WordPress應用程式使用的資料庫表和使用者。
安裝 httpd php php-mysql
        安裝wordpress,将wordpress 解壓到http預設路徑下,并修改WordPress的資料庫配置檔案。
修改目錄權限
建立varnish健康性檢查頁面
在浏覽器位址欄輸入 <code>http://172.18.3.77/wordpress/index.php</code>,此時站點通路成功。
1、架構優點 HAProxy為緩存伺服器提供了負載均衡,使用了uri排程算法,保證了同樣路徑的請求能夠被排程到同樣的主機上,提高了緩存的命中率。 HAProxy提供了web管理界面,能夠更直覺的進行排程管理和管控 Varnish的緩存機制,以及動靜分離等技術,提高了web伺服器的負載能力,進而使系統能夠應對高并發量的請求 資料庫的主從複制,也是企業實際生産應用中使用較多的生産政策,這樣能夠實作網絡請求的頻繁讀寫,對降低了資料庫伺服器的壓力。
2、尚且不足 使用者上傳的靜态資源如何存儲到靜态伺服器中,檔案的分布式存儲與資料同步是這個結構需要解決的一個重要問題 HAproxy做負載均衡,沒有備援能力,容易出現單點故障,最好配合KeepAlived實作高可用。 如果使用者在通路過程中,建立了Session會話,會話行為應該如何保持

繼續閱讀