爲什麼要實現服務器集羣?
實現服務器集羣主要就是爲了負載均衡(Load Balance)——有兩臺或者以上的服務器或者站點提供服務,服務將來自客戶端的請求,靠某種算法,去儘量平分請求到集羣的機器中,從而避免一臺服務器因爲負載太高而出現故障,而即使其中某個機器出現故障,負載均衡會自動規避選擇,使得用戶也能正常訪問服務。
一、幾個基本概念
1、pv 值
pv 值(page views):頁面的瀏覽量
概念:一個網站的所有頁面,在一天內,被瀏覽的總次數。(大型網站通常是上千萬的級別)
2、uv值
uv值(unique visitor)獨立訪客
概念:一個網站,在一天內的用戶訪問數。(大型網站通常達10萬以上)
3、獨立IP
概念:一個網站,在一天內,有多少個獨立的ip地址來訪問。
鑑於一個局域網對外訪問時都是共用同一個公網IP的,因此UV值一般要略大於獨立ip值
可以通過愛站網 來查詢這些參數值
二、解決高併發思路
如果一個網站的uv,pv,獨立ip變大,則會導致高的併發,這時要對網站分層佈局架構,採用負載均衡。
負載均衡
硬件:立竿見影,效果非常好,價格非常昂貴,比如F5-BIGIP
軟件:lvs(linux virtual server) ,nginx(web服務器,負載均衡)
負載均衡實現策略
(1)輪詢,
負載均衡器把請求輪流轉發給後面的web服務器。
(2)ip哈希,
同一個地址的客戶端,始終請求同一臺主機。
優點:能較好地把同一個客戶端的多次請求分配到同一臺服務器處理,避免了加權輪詢無法適用會話保持的需求。
缺點:當某個時刻來自某個IP地址的請求特別多,那麼將導致某臺後端服務器的壓力可能非常大,而其他後端服務器卻空閒的不均衡情況。
(3)最少連接
負載均衡器把請求給負載最小的哪臺服務器。
架構圖如下:
如果併發數繼續增大,還可以藉助CDN來架構
(4)fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream resinserver{
server server1;
server server2;
fair;
}
三、nginx的介紹
1、常用web服務器
apache:功能完善,歷史悠久,模塊支持非常豐富,屬於重量級產品,比較耗費內存。
缺點:處理每一個php比較費資源,導致如果高併發時會耗費服務器資源無法處理更多請求。
lighttpd:內存開銷低,cpu佔用率低,效能好,模塊豐富等特點,輕量級web服務器。
nginx:省資源,省cpu,所以在高併發時能夠處理更多的請求,高端能達到3萬到5萬的併發量。
IIS windows自帶的web服務器軟件
Nginx的兩大應用:
(1) http的服務器
(2)代理服務器
正向代理
反向代理
2、選擇nginx理由
(1)它可以高併發連接,官方測試能夠支撐5萬併發連接,在實際生產環境中可以支撐2到4萬併發連接。
(2)內存消耗少
Nginx+php(FastCGI)服務器在3萬併發連接下,開啓的10個Nginx進程消耗150MB內存(15MB*10=150MB)開啓的64個php-cgi進程消耗1280MB內存(20MB*64=1280MB)
(3)成本低廉
購買F5 BIG-IP ,NetScaler等硬件負載均衡交換機需要10多萬甚至幾十萬人民幣。而Nginx爲開源軟件,可以免費試用,並且可用於商業用途。
(4)配置文件非常簡單:通俗易懂,即使非專業管理員也能看懂。
(5)支持 rewrite重寫規則:能根據域名、URL的不同,將HTTP請求分到不同的後端服務器羣組。
(6)內置的健康檢查功能:如果nginx proxy後端的某臺服務器宕機了,不會影響前端訪問。
(7)節省帶寬,支持gzip壓縮。
(8)穩定性高:用於反向代理,宕機的概率微乎其微。
(9)支持熱部署。在不間斷服務的情況下,對軟件版本升級。
nginx在反向代理,rewrite規則,穩定性,靜態化文件處理,內存消耗等方面,表現出了很強的優勢,選用nginx取代傳統的apache 服務器,將會獲得多方面的性能提升。
(8)支持的操作系統
FreeBSD 3.x,4.x,5.x,6.x i386; FreeBSD 5.x,6.x amd64;Linux 2.2,2.4,2.6 i386; Linux 2.6 amd64;Solaris 8 i386; Solaris 9 i386 and sun4u; Solaris 10 i386;MacOS X (10.4) PPC;
負載均衡 == 分身的能力
負載均衡還得保持通話
負載均衡還要懂得修理他