在該點的應用程序擴展出來,我會去中央前負載平衡器。 Nginx應該能夠處理一臺服務器動態提供的任何負載。我們將nginx作爲六個動態服務器和一個靜態內容服務器的前端,並且nginx上看不到任何瓶頸。
在您的規模點上,設置nginx來處理所有靜態內容本身,並將代理動態內容反轉爲所需的儘可能多的框。如果你不使用PHP,調整配置
server {
listen 0.0.0.0:80;
server_name example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
index index.php;
root /some/dir/:
location ~ \.php {
proxy_pass http://upstream_regular_backend;
}
}
當然,:對簡單的代理通過設置接近:
upstream upstream_regular_backend {
fair;
server 10.0.0.1:80;
server 10.0.0.2:80;
}
server {
listen 0.0.0.0:80;
server_name example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
location/{
proxy_pass http://upstream_regular_backend;
}
}
提供靜態內容,並傳回所有的休息,像因此。
關於上游定義,「公平」;將基於響應時間對後端進行負載平衡。爲了緩存動機,你可能需要使用「ip_hash」;相反,它會將來自客戶端的請求始終存放在同一臺服務器上。
我們的設置稍微偏離了道路。我們有nginx負載均衡器代理varnish緩存,該緩存代理動態內容服務器。
如果您擔心nginx是一個單點故障,請設置一個備用服務器,以準備假設前端IP失敗。
每個子域的用戶生成內容是否都在數據庫中,或者他們是否將自己的數據上傳到服務器上的文件系統? – drew010 2012-04-23 01:18:52
@ drew010用戶內容既存儲在數據庫中,也存儲在文件系統中。由於用戶不交互,我可以自由設置多個數據庫實例......問題只是路由頁面查詢。我想分離數據庫+ Web服務器將是另一種可能的擴展方式,但最終我將不得不拆分Web服務器,並需要一個解決方案 – mappu 2012-04-23 01:37:01
這就是我所想的。我最關注DNS,但這意味着您需要每個子域的A記錄,或者可以查詢您的應用程序以確定給定子域使用哪個IP地址的自定義DNS解決方案。現在你可能會有更好的結果在ServerFault上詢問這一點,我想到了它。 – drew010 2012-04-23 01:53:09