Posts Tagged ‘HaProxy’

李一諤高可用性網站(五):本校的新相片網

2001學年起,我們就已經將相片放上網,讓學生、教師、家長及校友等,由自欣賞及下載。當時可供選擇的系統不多,但居然給我們找到一個南韓出品的系統。我們首先引入韓個的IT產物,那時SAMSUNG可能還未出產電話吧!

不過舊系統從未更新過那些編碼,這讓我們有點不安,因為始終會有被入侵的可能,所以2006年就改用Gallery這系統。最初的版本是用2.0。用了三年後,它出了3.0版本,於是就將它升級,並保留原先的相片,一路使用直至現在。

現在它已放了七年半的相片,內有約十三萬張相片,空間大約佔百多GB。我們非常著緊這些資源,每晚都會將它們備份至其他ZFS儲存伺服器中。同時亦做了一個HA版本放在本校的系統內。

為何這樣著緊?除了這些是我們寶貴的資產外,亦可在課堂中作演示。另外,它亦可用Embed Code的型式在其他系統中引用,非常方便,亦非常Web 2.0!

上面這張相就是從Gallery3系統上Embed Code而來的。

李一諤高可用性網站(四):本校的電子書包網站

這個是專門放置電子學習資源的地方,用了一個開源的Joomla的程式來做。開始時是將這些資源與學校主頁放在一起,但由於資源越來越多,不能放在同一個版面上,所以要將它們與主網頁獨立出來——「分拆上巿」。

它是將資源用學科的形式來歸類,這些是來自老師提供,亦有些是本校自行建立的系統,如早前提及的作品網,相簿等。

當然,這網站是從單一伺服器轉至高可性系統內。希望它能提供穩定的服務。

李一諤高可用性系統(九):在HA內ZFS的使用

為何又說ZFS這話題?因為經過數年的使用,對它的理解多了,升級及更換硬碟也經歷過了,也算摸透它的特性,同時也有很多部ZFS建立了,應該可以說說它的好處。經過這幾年的使用,發覺它真有好處。所以它人仍然是我們最倚重的檔案系統。

但看到那幅結構圖,就會發覺最底層是可以用ZFS或MFS,當中的分工是怎樣的?試如早前所說,MFS給出來的讀寫效果並不令我們滿意。所以它是放在一些讀寫要求不高的場景中使用,不過它分佈性本質避免了單點故障,以致我們仍要使用它,甚至預見它可能是儲存方案的「未來」。

 

 

說回ZFS,它在本校的HA中仍然有一個舉足輕重的地位。因為它還利用在一些需要較多存取的系統,如Moodle、ownCloud、osTube等。出來的結果還是頗滿意,雖然是mount其他機的shared drive,但速度真的很快,就好像存取自己機內的硬碟一樣。同時,有很多部伺服器連接一部ZFS,還是可以有很高的throughput。大家可以看看以下的網站:

LYNMS osTube

這個網站是將網頁伺服器和儲存分開的,效果也相當理想呀!

李一諤高可用性系統(八):HA內的Apache與Nginx的安排

作為本校HA的底層及基本的應用,apache及Nginx負責將不同的網站呈現在使用者面前,而資料是儲存在一個共用的空間,它可以是ZFS或是MFS。

但apache或Nginx網站是怎樣設定的呢?就是用virtual host及以ports的型式來架設。以owncloud為例,我們在HaProxy設定了一個以網址名稱來辨識的段落,並在裡面定義了幾部伺服器:
———————————————————
backend owncloud_back
balance roundrobin
cookie SERVERID insert indirect nocache
option forwardfor
option httpclose
option httpchk GET /check HTTP/1.0
server pc111 10.79.118.111:8002 cookie pc111 check inter 50000 maxconn 5000
server pc112 10.79.118.112:8002 cookie pc112 check inter 50000 maxconn 5000
server pc113 10.79.118.113:8002 cookie pc113 check inter 50000 maxconn 5000
……
———————————————————

之後便在每部伺服器中設定virtual host的部份:
———————————————————
server {
listen 10.79.118.111:8002;
server_name owncloud.lynms.edu.hk;
root /home/lynms.edu.hk/owncloud;
index index.html index.php index.htm;
……
———————————————————

這樣伺服器就會懂得回應相關的要求。如果要再加入伺服器只需在上面HaProxy設定部份再加入即可,當然為了易於管理,後端伺服器最好是用相同的軟件運行,否則除錯時就會引致問題或不能找出原因去對症下藥。

李一諤高可用性系統(三):負載均衡器上的HaProxy(Reverse Proxy)

作為負載均衡器(Load Balancer)上的靈魂,HaProxy是一個反向代理(Reverse Proxy),能將外面的request轉至backend servers,通常會用輪流分派的原則,同時亦可設定比重。結構圖如下:

 

當然如有backend server發生問題(下圖紅色部份),它會自動探測並將工作轉至其他的伺服器(下圖緑色部份)。這可大大減省管理者的工作壓力,因為這令救急的工作變得不太急迫,可以在有空閒時才處理。管理介面如下:

 

作為高可用性系統的靈魂,HaProxy能在一般配置的伺服器上工作,對硬件的要求並不高,同時它的穏定及安全性亦十分出眾。

除了既穏定又安全外,它亦對Cookies的處理十分周到,可以將登入的資料與某台伺服器連結,直至此次瀏覽網站的要求完結才會轉用下一個伺服器,確保登入資料不會出錯或外洩。

上面的優點當然是重要,但是在本校應用中它更有另一個好處,就是可以擴容,即是加大某些網站的處理能力。以Moodle2系統為例,我們現在有九部backend servers,如果老師們大力支持使用Moodle2作教學,可能會令致這幾部伺服器不能負荷,我們只需再加添多幾部伺服器,便可支持老師及同學長期使用Moodle2。這就是我們常說的終極目標,亦是我們推動全校eLearning的基礎。