△注意:本文是配合 Ubuntu Server 14.04 LTS 安裝
要架網站就把linux中apache(or lighttpd or …)與其它需要的功能開起來,再把網頁資料放進去,dns設定好,讓使用者找的到,非常簡單的網站就可以開張了。如果網頁比較吃資源,或是來訪的人比較多,一台伺服器會不夠力,這也簡單,一台不夠,咱們就變兩台伺服器,再不夠就變三台,只要有錢買設備,伺服器當然可以變多,難的是怎叫使用者會怎麼連到不同台的伺服器呢?我認為比較簡單的方法使用dns(可參考網域名稱解析伺服器服務- bind9),以兩個伺服器為例,兩台伺服器會佔用不同的IP,把資料設到dns中,被查詢時dns會依順序給出IP結果,假設我們的網頁叫www.example.org,在dns中設定是:
www IN A 192.168.1.11
www IN A 192.168.1.12
在使用者上網,輸入網頁網域名www.example.org時,第一個人會得到第一組IP,第二個會會第到第二組IP,第三個人會拿到第一組IP,這個方法叫dns round-robin,非常的簡單,但是可能不是很多人用,在這個情景中,萬一其中一台掛點了,那連線來的人,就要分運氣好或不好,好的人會正常看到網頁,運氣不好的人則看到fail。dns round-robin還有一個問題是,我們可能會需要很多public ip供網頁伺服器使用,多IP就代表網路的費用會變高呀!
管理提供服務網頁的伺服器要變成多台,還要有能力看到下面的伺服器是不是還正常工作,讓使用者在連入時,可以連接到正常的伺服器中,這項工作可以透過haproxy來完成。
註:haproxy是幫忙選機器,可在各伺服器間的資料要自行維護,以免看到不同台伺服器,然後呈現出不同的網頁資訊。
使用haproxy時,連到網頁的網路架構要修改一下,把直接對外的網頁伺服器放到haproxy的後面,一樣假設我們的網站叫www.example.org,這時它所要mapping的ip就不在是網頁伺服器的ip,而是haproxy的(在以下的範例中,將使用192.168.1.10做為haproxy的ip)。
▲ 圖一、使用haproxy的簡單架構
架網站的部份可以參考動態網頁伺服器 — apache + mysq l+ php,下面我們來安裝與設定haproxy。
● sudo apt-get install haproxy #安裝haproxy
● sudo vi /etc/default/haproxy #安裝好後,預設haproxy功能是沒有啟用的,編輯haproxy將ENABLED=0 改為 1
▲ 圖二、安裝haproxy
▲ 圖三、啟用haproxy
到此haproxy的使用都非常簡單,但其實haproxy是個功能很強大的服務,他詳實的設定與功能可以參考官網手冊,我們只要做簡單的網頁負載平衡的話,那設定可以參考如下:
● sudo vi /etc/haproxy/haproxy.cfg #編輯haproxy服務的設定
listen www- balance:80
#要求haproxy為80埠提供服務(listen 80),我取名此動作為www-balance(網頁負載平衡),名字可以自己依需求修改
balance roundrobin
#負載平衡的方法使用roundrobin
server web1 192.168.1.11:80 check
#加入要提供網頁服務的伺服器,並做服務是否中斷的檢查
server web2 192.168.1.12:80 check
haproxy也提供管理功能,讓管理者可以透過網頁了解現在負載的情形,為此我們需要在haproxy.cfg中加入以下的設定
listen status_auth 192.168.1.10:81
#要求haproxy為81埠提供服務(listen 81),我要看haproxy的狀況,故使用haproxy的ip(192.168.1.10),取名叫status_auth,代表要看haproxy的status,且要看之前要做認證
stats enable
#啟用stats,haproxy要看狀態時相關的字詞用的是stats
stats uri /status
#連線時使用的uri在/status下,所以看haproxy狀態,要在瀏覽器中輸入http://192.168.1.10:81/status
stats auth admin:1234
#連線時使用的帳密(這組不是好密碼,不要學哦)
設好之後,重啟服務
● sudo service haproxy restart
一般時,看到有兩台網頁伺服器在提供服務。
▲ 圖四、haproxy的監控畫面
把web1下線後,看到haproxy會發現web1變成down。
▲ 圖五、成員的網頁伺服器停止服務。
留言