在當前的互聯網中,網頁瀏覽成爲咱們平常中的必須。網頁瀏覽的鏈接數對硬件是一個極大的考驗。前端
若是咱們的服務器硬件不能應對高強度的訪問量時,就須要擴展.mysql
擴展: web
一、向上擴展:對當前服務器進行性能升級,提升CPU、內存的性能。但代價極大。redis
二、向外擴展:對服務器數量進行增長,提升服務器總體的性能,但須要集羣技術。sql
( 一)、集羣技術的問題。數據庫
一、集羣中各個服務器之間的鏈接和應用。後端
二、解決各個服務器之間性能的差別,合理使用服務器性能。瀏覽器
三、如今瀏覽器都是多併發,一個客戶端訪問的一個頁面有多是多個服務器提供的頁面,這樣會更快。緩存
使用調度器來實現對各個服務器的訪問。服務器
一、輪調:使用服務器調度機制來實現輪調(第一個用戶請求到第一臺,第二個用戶到第二臺)
二、加權輪流(公平和性能):不一樣服務器性能不一樣,可使用權重來區分不一樣服務器的性能。
1.一、mysql服務器
一、登陸信息
用戶名、密碼等信息。
二、圖片、文檔等大文件
利用另外一個存儲(NFS)服務器存儲,數據庫保存連接。
1.二、本地文件
一、網頁頁面和更新
利用主服務向其餘從服務同步
1.一、利用rsync+inotify 實現同步
1.三、存儲服務器
利用NFS共享來存儲大文件
二、減緩調度器
備份調度器(高可用)
準備:兩臺調度器,一臺primary,一臺standby
條件:ip地址、服務所有轉換、文本文件在服務器中都有。
發生:一旦發生故障立刻切換
橫向切分
劃分多個小集羣,來劃分解決調度器負載過大
三、負載均衡中的高可用能力(但不是高可用集羣)
利用負載均衡中的的調度器,在發現集羣中有服務器宕機後,可讓調度器從新分發用戶請求。
不會讓一臺服務器宕機,從而讓全部服務沒法訪問。因此負載均衡具備必定的高可用能力。
四、健康狀態檢查(health check)機制
能夠對正常到宕機、宕機到恢復這個過程當中進行操做(故障時踢出集羣,恢復時從新加入到集羣中)。
負載均衡中的高可用能力(圖)
「高可用性」(High Availability)一般來描述一個系統通過專門的設計,從而減小停工時間,而保持其服務的高度可用性。
可用性:在線時間/(在線時間+故障處理時間)
機制:
一、檢查心跳機制
利用hearbeat中心跳數來肯定服務器是否還在,經過發送並收到迴應來肯定服務器是否掛掉。發送是每分鐘都會發送,按響應來肯定服務器是否掛掉。
二、數據崩潰
使用隔離:節點級別
資源級別
三、高可用採用奇數個節點
採用奇數個節點的好處在於能夠利用多個節點來控制單個節點或利用單個節點把本身隔離出這個集羣。利用3個節點更容易判別那個節點出現問題。
一、問題:
(一)、NFS在框架中3臺服務器能夠承受,但若是是30臺併發就會很是慢。
解決:搭建集羣存儲來完成。經過並行文件系統與基於對象的存儲相結合,存儲集羣在 Linux 集羣環境中提升了可管理性和性能。系統是基於集羣設計的,它達到了極高的可擴展性和可用性。
須要知識點:
(1) 直接鏈接存儲(DAS)
DAS 系統本來是設計來爲部門級的 IT 環境提供直接的小數據池的訪問的。對於小的集羣,這多是一種可接受的解決方案,但當集羣規模增加時,就須要一個一個地增長 DAS 系統,而這些系統之間又不能直接通訊,因此它們確定是被做爲數據孤島被管理的。
(2) 網絡鏈接存儲(NAS)
NAS 系統,或專門的 NFS 服務器被設計來提供在異構平臺上的普遍的數據共享,在那裏,多臺主機能共享文件,每一個用戶有相對適度的 I/O 需求。一個例子是部門級的工做站網絡。例如:用做用戶的根目錄(home directory)的存儲。然而,當增長容量來支持更多的應用和客戶訪問系統時, NAS 系統的性能不能很好地擴展。事實上,還常常出現相反的狀況。增長容量實際上會下降系統的性能。用戶一般採用的一種方法,是購買許多 NAS 控制器(filers),把用戶的工做負載分散到許多 NAS 系統上去。這種情形類似於 NAS 出現以前的狀況,去購買許多文件服務器來管理日益增加的數據存儲須要。類似於 SAN,這會致使成本和複雜性的增長。
(3)存儲區域網(SAN)
SAN 被設計來向適度數量的應用服務器提供對共享的存儲設備池的高性能,高可靠性的訪問,例如,企業級的事務處理數據庫。SANs爲存儲配給過程提供了槓桿做用 — 容許磁盤在應用服務器之間從新分配,很容易知足容量需求的改變,可是會造成基於應用服務器的數據孤島。這經常致使複雜性和管理費用的增長。
傳統的SAN與NAS分別提供的是數據塊與文件兩個不一樣級別的存儲服務,集羣存儲也分爲提供數據塊與文件兩個不一樣級別存儲服務的集羣存儲系統。
解決須要集羣存儲:
集羣存儲是將多臺存儲設備中的存儲空間聚合成一個可以給應用服務器提供統一訪問接口和管理界面的存儲池,應用能夠經過該訪問接口透明地訪問和利用全部存儲設備上的磁盤,能夠充分發揮存儲設備的性能和磁盤利用率。數據將會按照必定的規則從多臺存儲設備上存儲和讀取,以得到更高的併發訪問性能。
存儲集羣文件系統
存儲集羣的心臟是存儲集羣文件系統,它把文件的活動分散到許多存儲設備中。
概念:
集羣文件系統是指運行在多臺計算機之上,之間經過某種方式相互通訊從而將集羣內全部存儲空間資源整合、虛擬化並對外提供文件訪問服務的文件系統。其與NTFS、EXT等本地文件系統的目的不一樣,前者是爲了擴展性,後者運行在單機環境,純粹管理塊和文件之間的映射以及文件屬性。
集羣文件系統的分類:,按照對存儲空間的訪問方式,可分爲共享存儲型集羣文件系統和分佈式集羣文件系統,前者是多臺計算機識別到一樣的存儲空間,並相互協調共同管理其上的文件,又被稱爲共享文件系統;後者則是每臺計算機各自提供本身的存儲空間,並各自協調管理全部計算機節點中的文件。Veritas的CFS,昆騰Stornext,中科藍鯨BWFS,EMC的MPFS,屬於共享存儲型集羣文件系統。而HDFS、Gluster、Ceph、Swift等互聯網經常使用的大規模集羣文件系統無一例外都屬於分佈式集羣文件系統。分佈式集羣文件系統可擴展性更強,目前已知最大可擴展至10K節點。
按照文件訪問方式來分類:集羣文件系統可分爲串行訪問式和並行訪問式,後者又被俗稱爲並行文件系統。串行訪問是指客戶端只能從集羣中的某個節點來訪問集羣內的文件資源,而並行訪問則是指客戶端能夠直接從集羣中任意一個或者多個節點同時收發數據,作到並行數據存取,加快速度。HDFS、GFS、pNFS等集羣文件系統,都支持並行訪問,須要安裝專用客戶端,傳統的NFS/CIFS客戶端不支持並行訪問。
可使用的集羣存儲系統有:
塊級集羣存儲系統 如:IBM XIV集羣存儲系統
文件級集羣存儲系統 如:HP Ibrix集羣存儲系統華賽 N8500集羣NAS系統
開源的文件系統(開源中國):http://www.oschina.net/project/tag/104/storage
常見的分佈式文件系統
GFS :Google File System
HDFS:適合存儲大文件;
TFS:在名稱節點上將元數據存儲於關係型數據中,文件數量再也不受限於名稱節點的內存空間;能夠存儲海量小文件;
Lustre: 企業級應用,重量級;
GlusterFS: 適用於存儲少許大文件 ,流媒體,雲
MooseFS: 通用簡便,適用於存儲小文件,大文件也不錯
Mogilefs: 使用Perl語言,FastDFS
FastDFS:在內存中存儲
Ceph:內核級別,支持PB級別存儲
Squid是一款高性能分佈式代理緩存服務器。
二、參數
2.一、存儲器
一、登陸信息
用戶名、密碼等信息。
二、圖片、文檔等大文件
利用另外一個存儲(NFS)服務器存儲,數據庫保存連接。也可使用存儲集羣。
三、可以使用redis(內存存儲的數據結構服務器,可用做數據庫,高速緩存和消息隊列代理)開快訪問速度。
2.二、本地文件(主要服務、文件等)
一、網頁頁面和更新
利用主服務向其餘從服務同步
1.一、利用rsync+inotify 實現同步
2.三、節點和資源
節點:每一個服務器(節點)最好只實現一個服務功能。
資源:每一個服務器中運行的程序和文件。
2.四、存儲設備中的塊級別和文件級別
塊級別:文件包含多個塊,塊來自磁盤的多個扇區。通常在本地是使用塊級訪問。
文件級別:遠程訪問或請求。如:以文件方式訪問到NFS共享中的文件(文件方式)。
本地訪問和使用咱們稱爲:直接附加存儲(DAS)
鏈接在網絡上存儲功能的裝置:網絡附屬存儲(NAS)
三、模型
3.一、高可用集羣的服務整合
若是有兩臺服務器,一臺是web服務,一臺是email服務。web服務器比email服務器強,可把web服務器當成email服務器的備份。
3.二、高可用集羣的協調
DC事務協調(協調各個節點完成各類事務及心跳中止後的實現服務整合)
高性能計算(High Perfermance Computing)集羣,簡稱HPC集羣。這類集羣致力於提供單個計算機所不能提供的強大的計算能力。
類型:
(一)向量機 :基本不會用到
(二)並行處理集羣:如:hadoop
所用機制:
一、 分佈式文件系統。
二、 將大任務切割成小任務,分別進行處理機制。
負載均衡集羣
負載均衡集羣中的高可用依賴於前端調度器,而不是後端相互之間的服務器。
若是前端服務器出現故障,仍是給後端的宕機服務器分發用戶請求,就須要在前端部署健康狀態檢查(health check)機制。
着重點: 是以提升服務的併發處理能力爲主
高可用集羣
高可用集羣利用相互之間的信號能夠實現快速轉換
着重點:是以服務的始終在線爲主,不能由於宕機而服務不可用。
高性能計算集羣
須要海量計算的問題的集羣和須要科學運算的集羣
分佈式是指將不一樣的業務分佈在不一樣的地方。
而集羣指的是將幾臺服務器集中在一塊兒,實現同一業務。
分佈式中的每個節點,均可以作集羣。
集羣並不必定就是分佈式的。
舉例:就好比新浪網,訪問的人多了,他能夠作一個羣集,前面放一個響應服務器,後面幾臺服務器完成同一業務,若是有業務訪問的時候,響應服務器看哪臺服務器的負載不是很重,就將給哪一臺去完成。
分佈式,從窄意上理解,也跟集羣差很少, 可是它的組織比較鬆散,不像集羣,有一個組織性,一臺服務器垮了,其它的服務器能夠頂上來。 分佈式的每個節點,都完成不一樣的業務,一個節點垮了,哪這個業務就不可訪問了。