透過4M/1M或8M/768k的ADSL,一般工程師都可輕易架出小型流量網站。

遇到要架設中型,到大型流量的網站,服務水準要ok,而又要能夠省cost的方案是我目前在探究的方向。

頻寬問題處理:

目前看到最大的ADSL頻寬是12M/1M。如尚不考慮有條件限制的光纖服務,若要1M以上的對外流量,勢必要架設兩條以上的ADSL來分散流量。

考慮是架站,而非架設網咖或宿網服務。因此需透過in-bound load balancer的概念來實質達到將進來網站的流量分散到不同的ADSL上。

最簡單的作法是在DNS Server上,設定超過一個以上的dns正解,並把TTL時間做調整。

假設網域名稱是 foo.bar,可在DNS Server上對這個名稱設定多個A Record,如

foo.bar. 60 IN A 123.45.67.8    # Hinet ADSL   固定IP
foo.bar. 60 IN A 123.45.67.9    # Giga ADSL 固定IP

TTL的時間調短,那麼有人想連上http://foo.bar時,就會來詢問他的IP位址,IP會隨機給予,就可將流量分散到不同條ADSL上面。

這種 DNS RoundRobin分散流量的作法,有眾多的缺點,無法做到實質的負載平衡。

購買多WAN口具in-bound load balancing功能的路由器

看了網路上幾個產品,例如TAMIO 1600 4 Wans 自動雙向負載平衡器 ,價格還可以接受,而且支援4 port,有機會用ADSL做到in-bound 4M的頻寬。透過內建DNS Server,加上一些演算法,在流量分散上面,可以做到比較好的結果。

有無針對ADSL連線作流量分散的solution?

因為我有拉Giga的ADSL,所以遇到這個額外的問題。沒用Giga ADSL的人或許不知道,Giga跟Hinet因為費用的關係,兩者機房沒有專線連通。如果站台架設在Giga,Hinet的User連上來有時會覺得超慢。

針對我的環境,如果我有一條Giga ADSL,與一條Hinet ADSL的線路,我想讓DNS Server遇到來自Giga DNS詢問時,回應我這邊Server的Giga IP。而遇到剩下的DNS詢問時,回應我這邊Server的Hinet IP。也就是讓來自使用Giga ADSL的使用者,總是走我的Giga ADSL進來我的網站。而使用其他連線的使用者,總是透過我的Hinet ADSL進來我的網站。

這應該可透過Bind的修改或設定來作,但目前尚未讀書,google了一陣子亦尚未看到有人這麼做。持續研究中…

 

一陣子沒碰linux administration ,為了裝mysql,這才注意到urpmi的好用。

與其自己不斷的確認安裝A rpm,其dependency是什麼B, C, D…rpms,不如就下這麼一個指令

#urpmi MySQL
To satisfy dependencies, the following packages are going to be installed:
MySQL-5.0.37-2mdv2007.1.i586
MySQL-client-5.0.37-2mdv2007.1.i586
MySQL-common-5.0.37-2mdv2007.1.i586
libmysql15-5.0.37-2mdv2007.1.i586
perl-DBD-mysql-4.003-1mdv2007.1.i586
perl-DBI-1.54-1mdv2007.1.i586
perl-HTML-Parser-3.56-1mdv2007.1.i586
perl-HTML-Tagset-3.10-2mdv2007.1.noarch
perl-URI-1.35-4mdv2007.1.noarch
perl-libwww-perl-5.805-3mdv2007.1.noarch
Proceed with the installation of the 10 packages? (46 MB) (Y/n)

 安裝起來超順利。所謂,工欲善其事,必先利其器。

因為Mandriva CD中就有cvs的rpm,做起來頗為單純。

1.cvs用xinetd帶起來,須確認xinetd有安裝

rpm -Uvh xinetd-2.3.14-5mdv2007.1.i586.rpm

chkconfig xinetd on

service xinetd start

2.安裝cvs

rpm -ivh cvs-1.12.13-6mdv2007.1.i586.rpm

chkconfig cvs on

3.新增cvs這個使用者

useradd cvs -m

4.修改/etc/xinet.d/cvs

將 user  = root 改成user  = cvs

5.建立 cvs repository

mkdir /cvs

chown -R cvs.cvs /cvs

su – cvs

cvs -d /cvs init

6.帶起cvs服務

exit or su – (變成 root)

service cvs start

這樣就好了。

因為伺服器不是放在機房,最好能監控一下CPU溫度。在我的Mandriva 2007 Spring安裝環境下,就有lm-sensors的rpm。

安裝:(你的情況或許不同)

rpm -ivh lm_sensors-2.10.2-1mdv2007.1.i586.rpm liblm_sensors3-2.10.2-1mdv2007.1.i586.rpm librrdtool2-1.2.18-1mdv2007.1.i586.rpm libart_lgpl2-2.3.19-2mdv2007.1.i586.rpm

執行:

1. 偵測driver

sensors-detect

(一路按Enter)

2.看到”I will now generate the commands needed to load the required modules……”,按下Enter後把#—-cut here—-之間的內容寫到/etc/modprobe.conf。

3.監測!

sensors

監測結果:

[root@localhost main]# sensors
it8712-isa-0290
Adapter: ISA adapter
VCore 1:   +1.58 V  (min =  +0.00 V, max =  +4.08 V)
VCore 2:   +1.50 V  (min =  +0.00 V, max =  +4.08 V)
+3.3V:     +3.36 V  (min =  +0.00 V, max =  +4.08 V)
+5V:       +5.03 V  (min =  +0.00 V, max =  +6.85 V)
+12V:     +11.78 V  (min =  +0.00 V, max = +16.32 V)
-12V:      -5.27 V  (min = -27.36 V, max =  +3.93 V)
-5V:       -3.32 V  (min = -13.64 V, max =  +4.03 V)
Stdby:     +3.79 V  (min =  +0.00 V, max =  +6.85 V)
VBat:      +4.08 V
fan1:     2960 RPM  (min =    0 RPM, div = 8)
fan2:        0 RPM  (min =    0 RPM, div = 8)
fan3:        0 RPM  (min =    0 RPM, div = 8)
M/B Temp:    +25°C  (low  =  +127°C, high =  +127°C)   sensor = thermistor
CPU Temp:    +25°C  (low  =  +127°C, high =  +127°C)   sensor = thermistor
Temp3:       +49°C  (low  =  +127°C, high =  +127°C)   sensor = diode

使用家裡的ADSL架站,就是把家當作機房。如果服務還算重要,那麼就應該仿照專業機房的想法來check伺服器的擺放與運作環境。

雖然是陽春"機房",應該還是要稍微考慮以下幾件事情:

1.電源的穩定度,是否添購UPS,插頭是否會被踢掉。

2.溫度,避免陽光照射處,或其他熱源邊,可能可添購散熱設備。

3.灰塵,盡量避免太多灰塵處,如窗戶邊。

4.網路,連線路徑盡量短些,並應避免網路線被誤扯。

5.頻寬,隨著網站成長,可考慮加大ADSL或光纖速度。若因預算或備援考量,可考慮採購in-bound多WAN口的寬頻 load balancer,可有效分散網路頻寬的負擔。

6.備份與復原,應適當設定備份排程工作,並定期演練。

7.Production 前應測試執行硬體相關環境。

8.Production Server應隨時建立測試軟體環境,網路安全,更新updates。

9.網站上線前,應進行壓力測試,了解目前環境可承載幾個user同時上線。

10.開發環境應設立Code Version Control系統或機制,例如CVS,或單純的file Server。

先談測試硬體環境:

組好一台linux的機器後,在使用之前,應測試硬體,最好的方式是使用燒機程式,我這邊使用的是CTCS(Cerberus Test Control System),原先由VALinux發展。

1.取得CTCS軟體

wget http://downloads.sourceforge.net/va-ctcs/ctcs-1.3.1-pre1.tgz?modtime=1123239632&big_mirror=0

2.安裝

tar xvzf ctcs-1.3.1-pre1.tgz

cd ctcs-1.3.1pre1/

make

3.執行

./newburn