這裏有點複雜。我在過去的幾個月裏完成了一個更大的基於Web的項目,並且由於我試圖保持低預算(並且自己學習一些東西),我沒有觸及之前從未涉及的問題:使用NGINX進行負載均衡以及未來的可擴展性。負載平衡 - 如何正確設置它?
的設置如下: 1個Web服務器 1個數據庫服務器 1個文件服務器(也用於存儲備份)
使用PHP 5.4 <過的FastCGI
現在,所有這些服務器應該是'可擴展' - 從某種意義上說,如果可用磁盤空間不足,我可以添加新的文件服務器,或者如果我需要處理比預期更多的請求,則可以添加新的Web服務器。
另一件事是:我想在一個域上做所有事情,這樣對前端服務器的訪問在前端沒有真正注意到(一些後端服務器基本上是通過子域調用的 - 例如:文件服務器, http://file.myserver.com/...',其中僅在文件服務器之間發生負載平衡)
- 我是否需要額外的單獨服務器以實現負載平衡?或者我可以只使用其中一臺網絡服務器?如果是:
- 這樣的負載平衡服務器需要多少電力(CPU/RAM)?它是否必須像網絡服務器一樣,還是足夠有一個「更輕」的服務器?
- '負載均衡'服務器是否也必須可擴展?如果請求太多,我需要多個嗎?
- 整個負載平衡到底有多精確?我的意思是:
- 我見過很多條目,指出在負載均衡系統上會話處理/同步等問題。我可以找到2個解決方案,可能適合我的需求:用戶總是定向到同一臺機器,或者數據存儲在數據庫中。但隨着第二,我基本上將不得不重建PHP已經有的$ _SESSION功能的部分,對吧? (我怎麼知道用戶會得到什麼會話,餅乾真的夠嗎?)
- 除了非同步會話之外,我還有什麼期望的問題?
- 寫可擴展的代碼 - 這是我讀了很多的句子。但就PHP而言,例如,它的真正含義是什麼?通常,一個用戶的整個計算只發生在一臺服務器上(NGINX重定向用戶的那臺服務器) - 那麼PHP本身如何可以擴展,因爲它實際上並沒有被NGINX重定向?
- 是否有不同的「負載均衡」池?我的意思是說,所有的文件服務器都在一個「池」中,所有的網絡服務器都在一個「池」中,基本上,如果你在一個文件服務器上請求一個圖像太多的文件服務器,它會重定向到一個不太忙的文件服務器
- SSL - 我只需要一個用於天平加載服務器的證書,對吧?由於數據總是通過負載均衡服務器返回 - 或者它的工作原理是什麼?
我知道這是一個很大的問題 - 基本上,我真的只是尋找一些建議/和一些幫助之手,我在整個事情上有點失落。我可以閱讀部分回答上述問題的代碼片段,但真正「做」它完全是另一回事。所以我已經知道那裏不會是一個明確的,明確的答案,但也許是一些經驗。
最終目標是在未來輕鬆擴展,並且已經計劃在未來實現(甚至購買像負載平衡器服務器之類的東西)。
關於分佈式會話的問題:您不必重寫PHP的會話功能。閱讀[自定義會話處理程序](http://php.net/manual/en/session.customhandler.php)。 – Carsten