1. 程式人生 > >中國頂級入口網站架構分析 2

中國頂級入口網站架構分析 2

前天講了最基本的推測方法,今天稍微深入一些:)
1. 難道就根據幾個域名的ip相同就可以證明他們是使用squid的嘛?
   當然不是,前面都只是推測。下面才是真正的證實我上面的猜測。先nslookup一把sina的體育頻道。
nslookup sports.sina.com.cn
Server:  ns1.china.com
Address:  61.151.243.136

Non-authoritative answer:
Name:    taurus.sina.com.cn
Addresses:61.172.201.231, 61.172.201.232, 61.172.201.233, 61.172.201.9
          61.172.201.10, 61.172.201.11, 61.172.201.12, 61.172.201.13, 61.172.201.14
          61.172.201.15, 61.172.201.16, 61.172.201.17, 61.172.201.227, 61.172.201.228
          61.172.201.229, 61.172.201.230
Aliases:  sports.sina.com.cn, jupiter.sina.com.cn

然後直接訪問這些ip中的任意一個ip試試看,訪問下來的結果應該是如下圖所示:

由此可以證明sina是在dns中設定了很多ip來指向域名sqsh-19.sina.com.cn,而其他各種相同性質的頻道都只是sqsh-19.sina.com.cn一個別名,用CNAME指定。dns的設定應該是這樣的,然後server方面,通過squid 2.5.STABLE5(最新的穩定版為STABLE6)來偵聽80埠。上面這些是根據一些資訊分析而出的,應該基本正確的。下面一些就是我的個人的猜想:

它的真正的web server也同樣是偵聽80埠,因為在squid配置檔案中有一項是:

httpd_accel_port 80

如果你設成其他埠號(比如88)的話,那上圖的錯誤資訊就會變成

工具2:nmap掃描程式:可以用來檢查伺服器開了什麼埠。

我現在用nmap來掃描sina的一個ip:61.172.201.19來進行分析

bash-2.05$ nmap 61.172.201.19

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-07-30 13:31 GMT
Interesting ports on 61.172.201.19:
(The 1657 ports scanned but not shown below are in state: filtered)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap run completed -- 1 IP address (1 host up) scanned in 73.191 seconds

可以看到他對外只開了2個埠,80埠就是剛才我們說的squid開啟的,這點剛才已經驗證過了。而22埠是用來ssh遠端連線的,主要是sa用來遠端操作伺服器用的安全性非常高的方法。

工具3:lynx或者其他可以讀取http標頭檔案的工具及小程式:直接看例子比較好理解:)

HTTP/1.0 200 OK
Date: Fri, 30 Jul 2004 05:49:47 GMT
Server: Apache/2.0.49 (Unix)
Last-Modified: Fri, 30 Jul 2004 05:48:16 GMT
Accept-Ranges: bytes
Vary: Accept-Encoding
Cache-Control: max-age=60
Expires: Fri, 30 Jul 2004 05:50:47 GMT
Content-Length: 180747
Content-Type: text/html
Age: 37
X-Cache: HIT from sqsh-230.sina.com.cn
Connection: close

上面是sina的http頭的反饋資訊。裡面有很多有價值的東東哦:)譬如,它後面的apache是用2.0.49,還設了過期時間為2分鐘。最後修改時間。這些都是要在編譯apache的時候載入的,特別是Last-Modified還需要小小的改一把原始碼--至少我是這樣做的。

綜上所述

sina的架構應該是前面squid,按照現在的伺服器2u,2g記憶體一般每臺伺服器至少可以跑4個squid2.5stable5. 這樣它16個ip就用了4臺伺服器。後面一層是apache2.0.49應該會用2臺。這2臺可能用的全是私有ip,通過前面的squid伺服器在hosts檔案中指定。具體的實現方法我會下次整理出我做實驗的文件:)而apache的htdocs可能是有一個或2個磁碟陣列作nfs。apache mount nfs server的時候應該是隻讀的,然後另外還有伺服器轉門用來做編輯器伺服器,用來編輯人員更新文章。這臺伺服器應該對nfs server是具有可寫的許可權。

----這就一套完整的sina所運用的方案,當然很多是靠猜測的,我沒有和sina的技術人員有過任何溝通(因為一個也不認識),否則我也就不會寫出來了。其他sohu,163應該也有這樣的架構。

最後宣告:這只是一些靜態頁面組成頻道的一個架構,sina還有很多其他伺服器,什麼下載,線上更新等不在這個架構中。