




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建1無(wú)單點(diǎn)故障高性能無(wú)單點(diǎn)故障高性能 LAMP 集群的構(gòu)建集群的構(gòu)建摘要隨著計(jì)算機(jī)技術(shù)的泛的應(yīng)用,人們對(duì)其的依賴程度越來(lái)越高,計(jì)算機(jī)的可靠性和可用性便顯得由為重要。盡管單臺(tái)計(jì)算機(jī)的性能和可靠性在不斷提升,但還是有許多現(xiàn)實(shí)要求是單臺(tái)計(jì)算機(jī)難以完成的。自從 1994 年首次采用 Beowulf 集群以來(lái),集群技術(shù)被廣泛應(yīng)用。集群系統(tǒng)在用戶面前表現(xiàn)為單一系統(tǒng)映像。連接在網(wǎng)絡(luò)上的一組 PC 不具有集群計(jì)算機(jī)資格,為了構(gòu)成集群計(jì)算機(jī),這些獨(dú)立 PC 必須運(yùn)行可以利用其他計(jì)算機(jī)的軟件,使它們像一個(gè)團(tuán)隊(duì)那樣為了共同的目標(biāo)協(xié)同工作。本文以目前最流行的 web 框架 LAMP(L
2、inux-Apache-MySQL-PHP)為研究對(duì)象, 提出了一套高可用并且高性能的集群架構(gòu)。 整個(gè)架構(gòu)分為 5 層, 既分發(fā)層,web 層,共享存儲(chǔ)層,代理層和數(shù)據(jù)庫(kù)層。層與層之間相互關(guān)聯(lián),共同對(duì)外提供唯一的服務(wù)訪問(wèn)入口。論文首先對(duì)各層使用到的技術(shù)做了概括性的介紹,隨后依次進(jìn)行了展開,分別給出了每層工作原理和實(shí)現(xiàn)過(guò)程。此后在整個(gè)系統(tǒng)上安裝 PHP 論壇,驗(yàn)證了系統(tǒng)能夠正常工作,然后與單一架構(gòu)進(jìn)行了分析對(duì)比,給出了性能測(cè)試,測(cè)試出其性能有了顯著提高。最后,論文提供無(wú)單點(diǎn)故障的測(cè)試視頻,從而驗(yàn)證整個(gè)集群的高可用得以實(shí)現(xiàn)。關(guān)鍵字關(guān)鍵字:集群,代理,共享存儲(chǔ),數(shù)據(jù)庫(kù)無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)
3、建2The Construction of high availability and highperformance LAMP clusterABSTRACTWith the development of computer technology and its wide application, ourdependency on the computer technology becomes more and more high. Computersreliability and availability are becoming more important. Though a singl
4、e computerscapability and reliability is becoming better, But a single computer cant completesome request still.Since 1994, the first use of Beowulf clusters, cluster technology has been widelyapplied. Cluster system behaves as a single system image in front of the user. A groupof PC connections in
5、the network does not have the qualification of cluster. In order toconstitute a cluster computer, the PC of each station must run a software ,which canuse other computer and make them as a team, to a common goal of mutual support.The paper takes LAMP web framework (Linux-Apache-MySQL-PHP) as therese
6、arch object, put forward a set of high availability and high performance clusterarchitecture. The whole structure is divided into 5 layers. the distribution layer, weblayer, shared storage layer, agent layer, and database layer. There is a closerelationship between each layer, and they provides a un
7、ique service entrance。The paper has make a general introduction to the system. Then it introduces theworking principle of each layer and the realization of the process. I also install thePHP forum in the whole system, to verify whether it can work normally, and thengives test report of the performan
8、ce, and compared with the single architecture,testing its performance improved significantly. Finally, This paper provides no singlepoint of failure test screen, thus verifying the whole cluster high availability is無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建3achieved.Key words:cluster,proxy,share storage,database無(wú)單點(diǎn)故障高性能LAMP
9、集群的構(gòu)建4目目錄錄1.緒論.11.1 研究背景.11.2 研究現(xiàn)狀.11.3 研究意義.21.4 研究?jī)?nèi)容.21.5 論文結(jié)構(gòu).41.6 本章小結(jié).42.負(fù)載均衡集群組成的 web 應(yīng)用. 52.1 負(fù)載均衡集群技術(shù).52.1.1 什么是負(fù)載均衡.52.1.2 以 LVS 作為負(fù)載均衡器.52.2 理解 LVS 的原理. 62.2.1 LVS web 應(yīng)用的體系結(jié)構(gòu). 62.2.2 LVS 的負(fù)載調(diào)度算法.82.3 LVS 的 DR 路由方式.92.3.1 LVS 的地址概念.92.3.1 VS-DR 直接路由方式.102.4 關(guān)于 LVS 的一些補(bǔ)充.132.4.1 LVS 調(diào)度算法對(duì)服務(wù)
10、器的加權(quán).132.4 2 LVS調(diào)度持續(xù)性和防火墻標(biāo)記.132.5 LVS 負(fù)載均衡集群實(shí)現(xiàn)概述. 152.6 本章小結(jié).173. 基于 iscsi 的共享存儲(chǔ)存儲(chǔ)層.183.1 NAS 和 SAN.183.2 iscsi 技術(shù)研究.19無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建53.2.1 iscsi 的報(bào)文格式.193.2.2 iscsi 協(xié)議棧模型.193.2.3 發(fā)起端-目標(biāo)器模型.203.2.4 iscsi 命名規(guī)范.213.2.5 Initiator 端導(dǎo)入設(shè)備.223.3 LVM 實(shí)現(xiàn)存儲(chǔ)的動(dòng)態(tài)擴(kuò)展和冗余.243.3.1 LVM 技術(shù)簡(jiǎn)介. 253.3.2 LVM 的組成.253.3.3
11、 基于集群的 LVM 技術(shù). 263.4 GFS2 集群文件系統(tǒng).264.高可用的 mysql-proxy 代理.304.1 mysql-proxy.304.1.1 為什么要實(shí)現(xiàn)讀寫分離.304.1.2 mysql-proxy 簡(jiǎn)介.304.2 高可用的 mysql-proxy 集群.334.2.1 HA 集群的概念.334.2.2 Linux 高可用性集群的相關(guān)技術(shù)概念.334.2.3 readhat 高可用集群的所需的相關(guān)組件.344.2.4 高可用 mysql-proxy 集群的簡(jiǎn)單說(shuō)明.374.3 本章小結(jié).405.高可用的 mysql 集群.415.1 mysql 的 replica
12、tion.425.1.1 復(fù)制的概述.425.1.2 主主復(fù)制和主從復(fù)制. 445.2 mysql-mmm 架構(gòu).465.2.1 mysql-mmm 簡(jiǎn)介.465.2.2 VIP 和角色的分配.475.2.3 各成員的狀態(tài).495.3 本章小結(jié).51無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建66. 性能測(cè)試.526.1 測(cè)試工具介紹.526.2 測(cè)試環(huán)境.526.3 測(cè)試方法.546.4 主要性能指標(biāo)說(shuō)明.546.5 數(shù)據(jù)采集結(jié)果.586.6.測(cè)試結(jié)果總結(jié).607.總結(jié)與展望.617.1 總結(jié). 617.2 展望. 61參考文獻(xiàn).62致謝.63無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建11.1.緒論1.1 研
13、究背景作為目前企業(yè)服務(wù)器市場(chǎng)的主流操作系統(tǒng),linux 在最近幾年得到了快速發(fā)展。由 linux,apache,mysql,php、perl 或者 python 組成的 lamp 網(wǎng)站架構(gòu),也逐步受到更多流行商業(yè)應(yīng)用的青睞,成為國(guó)際流行的 web 框架。相較于 Java/J2EE,lamp 具有資源豐富、快速開發(fā)和輕量等特點(diǎn)。和微軟的 net 架構(gòu)相比,lamp 的跨平臺(tái)、低價(jià)格、通用性強(qiáng)的優(yōu)勢(shì)又顯現(xiàn)出來(lái)。因此,無(wú)論從質(zhì)量、性能,或是價(jià)格等各方面的因素考慮,lamp 都成為企業(yè)網(wǎng)站的首選架構(gòu)。隨著企業(yè)信息系統(tǒng)的快速發(fā)展, 用戶的核心應(yīng)用數(shù)量越來(lái)越多, 此時(shí)企業(yè)自然會(huì)對(duì)其業(yè)務(wù)系統(tǒng)有著更高要求,
14、而高穩(wěn)定性, 高可靠性就成了重要的評(píng)判標(biāo)準(zhǔn)。單一的 lamp 架構(gòu)自然無(wú)法適應(yīng)企業(yè)日益增長(zhǎng)的業(yè)務(wù)需求,在這種趨勢(shì)下,分布式應(yīng)用系統(tǒng)逐步走進(jìn)人們的視野, 多節(jié)點(diǎn)高性能的集群系統(tǒng)被廣泛接受, 企業(yè)的應(yīng)用進(jìn)入了高性能時(shí)代。截止到目前, 主要 IT 廠商如 IBM,HP 已經(jīng)在對(duì)基于 linux 的開源集群產(chǎn)品進(jìn)行研發(fā),集群軟件也逐步從之前高端的 UNIX 平臺(tái)逐步走向 linux 平臺(tái),linux 由此邁入企業(yè)應(yīng)用的高端市場(chǎng)。1.2 研究現(xiàn)狀上世紀(jì) 90 年代末, linux 操作系統(tǒng)逐步趨于成熟, 除了提供標(biāo)準(zhǔn)化的 PVM、MPI 消息傳遞機(jī)制,其健壯性也得到不斷增強(qiáng),而在普通的 PC 機(jī)上,li
15、nux 也提供了對(duì)高新能網(wǎng)絡(luò)的支持,這些都成為推動(dòng) linux 集群技術(shù)發(fā)展的重要因素。早在 90 年代,包括中國(guó)科學(xué)院在內(nèi)的科研機(jī)構(gòu)與大學(xué)就開始了基于 linux集群的研究,很多大公司,如聯(lián)想等都有自己的 linux 產(chǎn)品和解決方案,淘寶,百度,谷歌其后臺(tái)也都在采用 linux 集群技術(shù),其中谷歌在 05 年的時(shí)候就已經(jīng)達(dá)到了 200 萬(wàn)臺(tái),與此同時(shí),在保險(xiǎn),金融、電信等企業(yè),linux 集群技術(shù)也得到了廣泛使用。無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建2集群技術(shù)隨著開放源代碼的迅猛發(fā)展, 有了更好的技術(shù)平臺(tái)。 目前的集群解決方案種類繁多,有基于純軟件的,也有基于硬件的,每種解決方案都有其自身的優(yōu)
16、勢(shì),而如何選擇適合自己,并且性價(jià)比相對(duì)較高的集群解決方案,是每個(gè)系統(tǒng)架構(gòu)師需要考慮的問(wèn)題。1.3 研究意義在這個(gè)以網(wǎng)絡(luò)為中心的計(jì)算機(jī)時(shí)代,客戶/服務(wù)器模型得益于其簡(jiǎn)單、易管理等特點(diǎn)在互聯(lián)網(wǎng)上被廣泛使用。上世紀(jì) 90 年代中期,萬(wàn)維網(wǎng)的出現(xiàn)將互聯(lián)網(wǎng)的信息生動(dòng)地傳遞給普通大眾,web 正從一種發(fā)送機(jī)制向一種服務(wù)平臺(tái)進(jìn)行轉(zhuǎn)變。目前大部分的服務(wù)和應(yīng)用都是圍繞 web 進(jìn)行,這促使互聯(lián)網(wǎng)用戶數(shù)量在最近幾年得到爆炸性增長(zhǎng)。目前,大量的 CPU 密集型應(yīng)用運(yùn)行于 web 服務(wù)中,如動(dòng)態(tài)主頁(yè)等。同時(shí),用戶對(duì)交互性、安全性需求的不斷提高對(duì)服務(wù)器的 I/0 和 CPU 性能都是不小的考驗(yàn)。比如目前被電子商務(wù)網(wǎng)站廣
17、泛使用的 https,通過(guò)其調(diào)取一個(gè)靜態(tài)頁(yè)面所需的處理性能要高于 http 一個(gè)數(shù)量級(jí)。所以不單單是網(wǎng)絡(luò)流量的增加,應(yīng)用本身的發(fā)展也對(duì)服務(wù)器的處理性能要求越來(lái)越高。于此同時(shí),大部分網(wǎng)站需要提供 7*24 小時(shí)的服務(wù),特別是一些電子商務(wù)網(wǎng)站、銀行、金融等部門對(duì)意外宕機(jī)時(shí)間要求更加苛刻。以戴爾為例,一小時(shí)的服務(wù)中斷會(huì)對(duì)其造成 58 萬(wàn)美元的損失,這就對(duì)服務(wù)的可靠性提出了更高要求。1.4 研究?jī)?nèi)容本課題主要的內(nèi)容是構(gòu)建一個(gè)無(wú)單點(diǎn)故障且高性能的 lamp 環(huán)境。整體架構(gòu)如下圖所示:無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建3圖圖1-1 總體架構(gòu)圖總體架構(gòu)圖無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建4整個(gè)集群架構(gòu)分為
18、5 層,分別是:分發(fā)層,web 層,共享存儲(chǔ)層,代理層,和最后的數(shù)據(jù)庫(kù)層。分發(fā)層和 web 層構(gòu)成一個(gè) LVS 集群環(huán)境,實(shí)現(xiàn)高可用的同時(shí)也提供更高性能的 web 服務(wù)。共享存儲(chǔ)層用作為存放網(wǎng)站軟件的文件服務(wù)器,同時(shí)也保證了網(wǎng)站視頻、圖片的一致性。代理層使用 mysql-proxy 來(lái)實(shí)現(xiàn)讀寫分離,從而提高數(shù)據(jù)庫(kù)的訪問(wèn)速度。與此同時(shí),為了保證整個(gè)架構(gòu)的無(wú)單點(diǎn)故障,會(huì)在 mysql-proxy 上使用紅帽提供的 HA 套件,從而實(shí)現(xiàn)代理服務(wù)的高可用。數(shù)據(jù)庫(kù)則使用 mysql,通過(guò) mysql-mmm 架構(gòu)來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的主主同步和主從同步,并同時(shí)保證數(shù)據(jù)庫(kù)層的無(wú)單點(diǎn)故障。具體說(shuō)明可見上圖。1.5
19、論文結(jié)構(gòu)本文分為五部分, 由上至下依次對(duì)集群中各個(gè)部分進(jìn)行了詳細(xì)講解, 最后得出性能測(cè)試報(bào)告,各部分內(nèi)容依次如下:第 2 章:對(duì)負(fù)載均衡組成 web 應(yīng)用進(jìn)行了討論,對(duì) lvs 工作原理進(jìn)行研究分析,最后給出 lvs 集群的運(yùn)行狀態(tài)。第 3 章:對(duì)共享存儲(chǔ)層進(jìn)行研究,其中會(huì)涉及 iscsi 技術(shù)、CLVM、GFS2 文件系統(tǒng),對(duì)以上技術(shù)盡心講解的同時(shí),給出整個(gè)共享存儲(chǔ)層的導(dǎo)入與掛載情況。第 4 章:重點(diǎn)放在 mysql-proxy 的原理和高可用 HA-proxy 集群的研究,討論了 proxy 和 redhat 高可用集群的相關(guān)組件以及工作原理。最后給出 HA-proxy集群的運(yùn)行狀態(tài)。第
20、5 章: 對(duì)數(shù)據(jù)庫(kù)層進(jìn)行討論研究, 內(nèi)容涉及 mysql 的主主復(fù)制, 主從復(fù)制,以及 mysql-mmm 集群架構(gòu),在對(duì)其原理進(jìn)行研究的同時(shí),給出整個(gè) mysql 集群相關(guān)角色,IP 分配,以及節(jié)點(diǎn)成員的運(yùn)行狀態(tài)。第 6 章:通過(guò)和單一架構(gòu)系統(tǒng)進(jìn)行比較,得出性能測(cè)試報(bào)告。1.6 本章小結(jié)本章主要介紹了本文的選題背景及意義, 對(duì)整個(gè)項(xiàng)目的研究?jī)?nèi)容及本文的大致結(jié)構(gòu)進(jìn)行了概覽。無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建52.2.負(fù)載均衡集群組成的負(fù)載均衡集群組成的 web 應(yīng)用應(yīng)用2.1 負(fù)載均衡集群技術(shù)2.1.1 什么是負(fù)載均衡在開始負(fù)載均衡的原理之前,先舉一個(gè)例子幫助理解?,F(xiàn)在有一個(gè) BBS 論壇,最
21、多只允許 200 人同時(shí)在線。初期,由于網(wǎng)站知名度較小,一般只有幾十個(gè)用戶同時(shí)在線。經(jīng)過(guò)一段時(shí)間的發(fā)展,其知名度開始提高,百度公司也收錄了該網(wǎng)站,注冊(cè)用戶數(shù)直線上升,很快同時(shí)在線人數(shù)就達(dá)到了千人,超過(guò)了原本的最大在線人數(shù)。于是網(wǎng)站訪問(wèn)開始變的遲鈍,不少用戶開始抱怨。通常一個(gè)網(wǎng)頁(yè)如果 8s 內(nèi)沒(méi)有打開,用戶基本上不會(huì)有耐心繼續(xù)等待了,為了不影響用戶對(duì)網(wǎng)站的信心,一定要想到有效的解決辦法。如果在前方放置一個(gè)轉(zhuǎn)發(fā)器,后端放置多臺(tái)性能相同的服務(wù)器,由轉(zhuǎn)發(fā)器將用戶的請(qǐng)求分配給后端的服務(wù)器,使得每臺(tái)機(jī)器的用戶數(shù)控制在 150 個(gè)左右,那么網(wǎng)站的訪問(wèn)速度無(wú)疑會(huì)得到大幅度提升,即使有一臺(tái)服務(wù)器宕機(jī),也不會(huì)對(duì)用
22、戶的訪問(wèn)造成影響。而這個(gè)轉(zhuǎn)發(fā)器就稱之為負(fù)載均衡器(分發(fā)機(jī))。負(fù)載均衡能夠提供廉價(jià)、透明的方來(lái)提高網(wǎng)絡(luò)的吞吐量,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)的處理能力, 通過(guò)負(fù)載均衡器可以實(shí)現(xiàn)讓多臺(tái)廉價(jià)的 linux 服務(wù)器并行處理用戶請(qǐng)求,從而使其達(dá)到大型計(jì)算機(jī)的能力,這也是為何負(fù)載均衡如此流行的主要原因。2.1.2 以LVS作為負(fù)載均衡器lvs是由中國(guó)人發(fā)起的最著名的linux項(xiàng)目。它由章文嵩博士創(chuàng)立,在98年5月發(fā)布了第一個(gè)版本, 其全稱為linux virtual server,高可用性和高伸縮性是lvs具備的重要特征,其可兼容目前絕大多數(shù)的網(wǎng)絡(luò)服務(wù),并且易于管理。lvs應(yīng)用廣泛,很多高訪問(wèn)量的網(wǎng)站,如淘寶,都采用了l
23、vs的架構(gòu)。lvs建立在一個(gè)由主控服務(wù)器及若干個(gè)真實(shí)服務(wù)器組成的系統(tǒng)之上。 主控服務(wù)器主要負(fù)責(zé)按照預(yù)先制定的調(diào)度算法對(duì)前方的用戶請(qǐng)求進(jìn)行分發(fā),后端的真實(shí)服務(wù)器則負(fù)責(zé)處理用戶請(qǐng)求,對(duì)外提供服務(wù)。相對(duì)于用戶而言,集群的結(jié)構(gòu)完全透明,用戶只通過(guò)綁定在主控服務(wù)器上虛擬IP與集群進(jìn)行通信,從用戶的角度,這其實(shí)就是一臺(tái)單獨(dú)的服務(wù)器。無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建6真實(shí)服務(wù)器(real-server)可提供的服務(wù)有很多,常用的有web服務(wù),ftp,以及DNS,讓多臺(tái)real-server來(lái)提供web服務(wù),就可以輕松的實(shí)現(xiàn)web層的高并發(fā)和高可用。2.2 理解LVS的原理2.2.1 LVS web應(yīng)用的體
24、系結(jié)構(gòu)使用lvs架設(shè)的web應(yīng)用集群主要有三個(gè)部分組成: 主控服務(wù)器所在的位置稱為負(fù)載均衡層 (Load Balance), 中間的web服務(wù)器組成了一個(gè)服務(wù)池 (server pool) ,最底端的是共享存儲(chǔ)層,用Shared Storage表示。負(fù)載均衡層一般由2臺(tái)負(fù)載調(diào)度器組成,但同一時(shí)刻只有一臺(tái)負(fù)載調(diào)度器在執(zhí)行請(qǐng)求的分發(fā)工作,而另一臺(tái)則作為backup,當(dāng)提供分發(fā)服務(wù)的調(diào)度器宕機(jī),另一臺(tái)會(huì)頂上來(lái),接管分發(fā)服務(wù),lvs的模塊就安裝在其上。調(diào)度器在整個(gè)集群中主要起一個(gè)類似于路由器的作用,它含有完成分發(fā)任務(wù)所需的路由表,并能夠根據(jù)事先制定的算法,將用戶的請(qǐng)求分發(fā)給服務(wù)池中的某臺(tái)web服務(wù)器。
25、服務(wù)池由一組真正執(zhí)行客戶端請(qǐng)求的服務(wù)器組成。在這個(gè)項(xiàng)目中,服務(wù)池由2臺(tái)web服務(wù)器組成。共享存儲(chǔ)層在這里并不放置網(wǎng)站的信息數(shù)據(jù),網(wǎng)站的信息數(shù)據(jù)是存放在mysql數(shù)據(jù)庫(kù)當(dāng)中,這里所說(shuō)的共享存儲(chǔ),其實(shí)是放置網(wǎng)站本身的軟件和用戶上傳的視頻、圖片(視頻、圖片會(huì)存放在web服務(wù)器的圖片視頻目錄中,而數(shù)據(jù)庫(kù)中一般存放的是這些圖片、視頻名字對(duì)應(yīng)的地址)。拓?fù)鋱D如下所示:無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建7圖圖 2-1 lvs拓?fù)鋱D拓?fù)鋱D無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建8關(guān)于上圖,有幾點(diǎn)需要進(jìn)行說(shuō)明:調(diào)度器作為集群的唯一入口,上面綁定了對(duì)外提供服務(wù)的虛擬 IP,并且在同一時(shí)刻,這個(gè)虛擬 IP 只會(huì)在一臺(tái)調(diào)度
26、器上,當(dāng)這臺(tái)調(diào)度器宕機(jī),包括虛擬 IP 在內(nèi)的所有資源會(huì)自動(dòng)漂移到 backup 上,此時(shí)backup 接管分發(fā)服務(wù)。在這個(gè)項(xiàng)目中,筆者采用了基于 IP 的負(fù)載均衡技術(shù),這就要求服務(wù)池中的服務(wù)器必須具有相同的內(nèi)容,也就是說(shuō)要提供相同的服務(wù),這里所有服務(wù)器都作為 web-server,運(yùn)行 apache 服務(wù)。當(dāng)用戶請(qǐng)求到達(dá)時(shí),調(diào)度器會(huì)根據(jù)每臺(tái)服務(wù)器的負(fù)載情況,結(jié)合預(yù)先指定的調(diào)度算法,從服務(wù)池中挑選出一臺(tái)服務(wù)器處理用戶請(qǐng)求。與之相對(duì)應(yīng)的是基于內(nèi)容的請(qǐng)求分發(fā)技術(shù),這種分發(fā)技術(shù)允許服務(wù)池中的服務(wù)器提供不同的服務(wù),當(dāng)用戶的請(qǐng)求到達(dá)時(shí),服務(wù)器會(huì)根據(jù)內(nèi)容篩選出相應(yīng)的服務(wù)器去處理用戶請(qǐng)求。本文主要討論前者,
27、但無(wú)論是哪一種技術(shù),服務(wù)池中的節(jié)點(diǎn)數(shù)目都是可變的,當(dāng)用戶請(qǐng)求不斷增長(zhǎng),可以通過(guò)在服務(wù)池中增加節(jié)點(diǎn)來(lái)滿足負(fù)載,整個(gè)系統(tǒng)的性能基本上可以隨著 server pool 中節(jié)點(diǎn)成員的增加而線性增長(zhǎng)。2.2.2 LVS 的負(fù)載調(diào)度算法LVS提供10種負(fù)載調(diào)度算法來(lái)分發(fā)用戶的請(qǐng)求, 本項(xiàng)目使用加權(quán)最少鏈接算法。 在服務(wù)池中的服務(wù)器性能相差較大時(shí)使用加權(quán)最少鏈接算法能夠有效優(yōu)化負(fù)載均衡的性能。系統(tǒng)管理員可對(duì)性能較高的服務(wù)器設(shè)置較大的權(quán)值。舉個(gè)例子,當(dāng)一臺(tái)服務(wù)器的權(quán)值被設(shè)置為2,另一臺(tái)為1,那么權(quán)值為2的服務(wù)器將會(huì)承受2倍于權(quán)值為1的服務(wù)器的活動(dòng)鏈接。調(diào)度器會(huì)了解當(dāng)前真實(shí)服務(wù)器的負(fù)載情況,盡可能的使服務(wù)器上已
28、建立的連接數(shù)和其權(quán)值成比例?,F(xiàn)在用S0,S1,.Sn-1表示一組后端服務(wù)器,W(Si)表示Si的權(quán)值,Si當(dāng)前的連接數(shù)用C(Si)表示。當(dāng)前服務(wù)器的連接總和為Csum,其值等于C(S0)+C(Si)+.C(Sn-1)。假設(shè)現(xiàn)在新的連接請(qǐng)求被發(fā)送給Sm,此時(shí)Sm必須滿足以下條件:(C(Sm)/Csum)/W(Sm)=min(C(Si)/Csum)/W(Si)(i=0,1,.,n-1),其中Csum為常 數(shù) , W ( Si ) 不 為 0 , 所 以 之 前 的 條 件 可 等 價(jià) 于C(Sm)/W(Sm)=minC(Si)/W(Si)(i=0,1,.,n-1),由于linux內(nèi)核不允許浮點(diǎn)除法
29、,且 W(Si) 均 大 于 0 , 所 以 用 于 判 斷 的 條 件 可 以 最 終 轉(zhuǎn) 化 為無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建9C(Sm)*W(Si)C(Si)*W(Sm)。當(dāng)服務(wù)器權(quán)值等于0時(shí),要保證其不被調(diào)度。算法執(zhí)行如下:for(m=0;m0)thenfor(i=m+1,iC(Si)*W(Sm)m=i;return Sm;return NULL;2.3 LVS的DR路由方式目前的IP負(fù)載均衡技術(shù)大都是通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換將一組服務(wù)器構(gòu)成高性、 能高 可 用 的 服 務(wù) 集 群 , 其 稱 為 VS/NAT ( Virtual Server via Network AddressTra
30、nslation)技術(shù)。在VS/NAT技術(shù)的基礎(chǔ)上,又提出了通過(guò)直接路由實(shí)現(xiàn)虛擬服務(wù)器的方法VS/DR(Virtual Server via Direct Routing)和通過(guò)IP隧道實(shí)現(xiàn)虛擬服務(wù)器的方法VS/TUN(Virtual Server via IP Tunneling) ,這些方法都極大的提高了整個(gè)系統(tǒng)的伸縮性。目前,lvs實(shí)現(xiàn)IP負(fù)載均衡主要是通過(guò)VS/NAT、VS/TUN和VS/DR是這三種技術(shù),本項(xiàng)目使用的是DR模式,由于篇幅所限,本文只對(duì)DR模式的工作原理進(jìn)行描述。2.3.1 LVS 的地址概念要了解LVS的路由模式, 關(guān)于地址的概念必不可少。 在此先給大家一一列出,等到
31、下面跟大家講解的時(shí)候,會(huì)在圖上標(biāo)出,方便大家理解。1.Client IP Address(CIP)無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建102.Director Gateway(DGW)3.Virtual IP(VIP)4.Primary IP(PIP)5.Slave IP(SIP)6.Real Server IP(RIP)CIP:客戶端IP。DGW:默認(rèn)網(wǎng)關(guān)。VIP:虛擬IP,用于客戶端訪問(wèn)服務(wù)PIP:主分發(fā)機(jī)的私有IPSIP:從分發(fā)機(jī)的私有IPRIP:真實(shí)服務(wù)器IP2.3.1 VS-DR 直接路由方式LVS-DR 是 基 于 IBM 的 NetDispatcher 設(shè) 計(jì) , 他 的 數(shù) 據(jù)
32、包 流 向 為CIP-DGW-VIP-RIP-DGW-CIP,DR模式能夠同時(shí)處理大量客戶端請(qǐng)求,多用于真實(shí)服務(wù)器數(shù)量較多 或頻繁更新的服務(wù)。大致原理如下圖所示:無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建11圖圖2-22-2 DRDR方式原理圖方式原理圖下面舉一個(gè)例子對(duì)上圖進(jìn)行說(shuō)明。 有一個(gè)client, 它的IP就是上面提到的CIP,無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建12現(xiàn)在它要通過(guò)來(lái)訪問(wèn)論壇, URL在DNS解析后, client會(huì)拿到一個(gè)VIP,這個(gè)VIP就是訪問(wèn)論壇網(wǎng)站的唯一入口,首先client會(huì)對(duì)數(shù)據(jù)包進(jìn)行分裝,數(shù)據(jù)包頭部會(huì)包含目標(biāo)地址VIP和源地址CIP。數(shù)據(jù)包經(jīng)過(guò)Internet,到達(dá)
33、機(jī)房網(wǎng)關(guān)。網(wǎng)關(guān)收下數(shù)據(jù)包后發(fā)現(xiàn)目標(biāo)IP是VIP,便會(huì)將其轉(zhuǎn)發(fā)給后端的分發(fā)機(jī),分發(fā)機(jī)收到數(shù)據(jù)包后發(fā)現(xiàn)這是一個(gè)lvs的數(shù)據(jù)包,原mac地址是網(wǎng)關(guān)的mac,目標(biāo)mac是自己的mac,原IP是client的IP,目標(biāo)IP是VIP?,F(xiàn)在要將這個(gè)數(shù)據(jù)包轉(zhuǎn)發(fā)給后端的real-server。分發(fā)機(jī)現(xiàn)在會(huì)通過(guò)2層交換機(jī)將數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),所以其不需要對(duì)網(wǎng)絡(luò)層的IP地址進(jìn)行更改,只需要將目標(biāo)mac改成real-server的mac,改完后發(fā)給交換機(jī),交換機(jī)那里會(huì)有mac地址綁定列表,它會(huì)去查找目標(biāo)mac究竟是綁定在哪個(gè)接口上,然后將數(shù)據(jù)包從相應(yīng)的接口轉(zhuǎn)發(fā)出去。real-server收到了數(shù)據(jù)包之后,看一下目標(biāo)mac
34、地址,發(fā)現(xiàn)是自己,然后再看一下目標(biāo)IP是不是自己,目標(biāo)IP如果不是自己, 會(huì)將數(shù)據(jù)包丟棄。 這時(shí)發(fā)現(xiàn)目標(biāo)IP是個(gè)VIP, 現(xiàn)在怎么告訴real-server這個(gè)VIP其實(shí)就是自己,這就需要在real-server綁定一個(gè)VIP,如果real-server發(fā)現(xiàn)本地有這個(gè)IP,就會(huì)收下數(shù)據(jù)包。處理完成之后,就拿這個(gè)VIP作為源地址,返回?cái)?shù)據(jù)包,在返回?cái)?shù)據(jù)包時(shí)會(huì)不經(jīng)過(guò)分發(fā)機(jī)直接將其交給機(jī)房網(wǎng)關(guān)?,F(xiàn)在就面臨IP地址沖突的問(wèn)題,在一個(gè)局域網(wǎng)中,大量的real-server都會(huì)去綁定一個(gè)VIP,每個(gè)real-server也會(huì)有自己的RIP,RIP是肯定不一樣的。要解決這個(gè)問(wèn)題,就需要關(guān)閉arp廣播, Li
35、nux在綁定IP地址時(shí), 一般會(huì)默認(rèn)使用arp廣播來(lái)探測(cè)是否IP沖突?,F(xiàn)在要使所有的real-server在發(fā)送arp廣播時(shí),所有關(guān)于VIP的廣播都不發(fā),而關(guān)于RIP的廣播要允許, 這里使用arptables防火墻來(lái)實(shí)現(xiàn)。 其次分發(fā)機(jī)也會(huì)綁定VIP,它在綁定的過(guò)程中也會(huì)發(fā)送arp廣播進(jìn)行詢問(wèn), real-server會(huì)對(duì)這個(gè)廣播進(jìn)行回應(yīng),所以還需要讓real-server丟棄掉詢問(wèn)VIP的arp廣播,前者是不要發(fā)送有關(guān)于VIP的廣播,后者是要丟棄有關(guān)于VIP的ARP詢問(wèn)。arptables的設(shè)置腳本如下圖所示:無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建13圖圖2-32-3 arptablesarpta
36、bles配置腳本配置腳本2.4 關(guān)于LVS的一些補(bǔ)充2.4.1 LVS調(diào)度算法對(duì)服務(wù)器的加權(quán)前面在介紹算法時(shí)提到過(guò)權(quán)值的概念,在架構(gòu)LVS集群時(shí)會(huì)根據(jù)每臺(tái)服務(wù)器自身的硬件條件為每個(gè)節(jié)點(diǎn)分配一個(gè)權(quán)值, 這樣能夠幫助分發(fā)機(jī)在能力各不相同的硬件環(huán)境中更加有效的去均衡分配負(fù)載?!睓?quán)“是一種相對(duì)比率,假設(shè)一臺(tái)服務(wù)器的權(quán)值為3,另一臺(tái)的權(quán)值為1,那么權(quán)值為1的服務(wù)器每得到1個(gè)鏈接,權(quán)值為3的服務(wù)器就將得到3個(gè)鏈接。雖然這種方法能夠有效的均衡集群負(fù)載, 但當(dāng)某個(gè)真正的服務(wù)器剛被添加入server pool,并且此時(shí)分發(fā)機(jī)使用的是加權(quán)最少鏈接算法時(shí), 這個(gè)新加入的服務(wù)器在被調(diào)度時(shí)會(huì)造成暫時(shí)的不平衡。舉個(gè)例子,
37、現(xiàn)在server pool中有三臺(tái)服務(wù)器,分別是A、B、C。A和B的權(quán)值均為1,C的權(quán)值為2,如果C由于某種原因發(fā)生宕機(jī),此時(shí)A和B就會(huì)將會(huì)平分被放棄的載量。當(dāng)C恢復(fù)后重新加入到server pool當(dāng)中,分發(fā)機(jī)發(fā)現(xiàn)它的連接數(shù)為0,就會(huì)將所有的請(qǐng)求都轉(zhuǎn)發(fā)給它,直到它的A、B、C三臺(tái)機(jī)器的載量重新回到同一級(jí)別為止。2.4.2 LVS調(diào)度持續(xù)性和防火墻標(biāo)記無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建14大多數(shù)情況下, 客戶端其實(shí)并不希望分發(fā)機(jī)按照負(fù)載均衡方式輪循的分發(fā)請(qǐng)求,他們希望能夠重復(fù)的訪問(wèn)同一臺(tái)服務(wù)器,這樣的例子很多,比如FTP連接、多屏幕的網(wǎng)頁(yè)表格、SSL等等。在類似于這樣的情況下,除非事物被同一臺(tái)
38、服務(wù)器處理從而保留內(nèi)容銜接,否則客戶有肯能無(wú)法正常操作。LVS中提供了兩種方式來(lái)解決這一問(wèn)題:防火墻標(biāo)記和持續(xù)性連接。持續(xù)性連接的原理比較簡(jiǎn)單,說(shuō)白了它就像一個(gè)計(jì)時(shí)器,當(dāng)客戶連接到某個(gè)服務(wù),分發(fā)機(jī)會(huì)記住在某一指定時(shí)間段內(nèi)的前一次連接。在這段時(shí)間內(nèi),如果這個(gè)IP地址又來(lái)連接,請(qǐng)求就會(huì)發(fā)送到前一次被連接的服務(wù)器上,當(dāng)然,如果超過(guò)了之前設(shè)定好的時(shí)間,分發(fā)機(jī)依舊會(huì)按照分發(fā)規(guī)則進(jìn)行處理。持續(xù)性連接不是用來(lái)處理合并不同目標(biāo)端口連接最有效的方法,一般會(huì)使用防火墻標(biāo)記,本項(xiàng)目就是采用的這種方法。防火墻標(biāo)記主要是用來(lái)合并一個(gè)協(xié)議或者一組相關(guān)協(xié)議端口, 可以通過(guò)為每個(gè)協(xié)議在分發(fā)機(jī)上分配相同的防火墻標(biāo)記,使得事物的
39、狀態(tài)信息得以保留,在連接被打開后,分發(fā)機(jī)會(huì)將所有請(qǐng)求都轉(zhuǎn)發(fā)給server pool中某臺(tái)定的服務(wù)器。如果說(shuō)這個(gè)項(xiàng)目中的LVS群集被用來(lái)運(yùn)行電子商務(wù)網(wǎng)站,防火墻標(biāo)記可以把HTTP的80端口和HTTPS的443端口捆綁在一起,當(dāng)和持續(xù)性綜合使用時(shí),防火墻標(biāo)記會(huì)確保只要來(lái)自客戶端的請(qǐng)求發(fā)生在持續(xù)性參數(shù)所指定的范圍內(nèi)便會(huì)被分配到同一真實(shí)服務(wù)器上。 但分發(fā)機(jī)本身并不能分配防火墻標(biāo)記, 一般需借助iptables完成該任務(wù)。iptables的配置如下圖所示,主要作用是在路由前將訪問(wèn)VIP的80端口和443端口全部打上防火墻標(biāo)記100,這樣它們就會(huì)被分發(fā)機(jī)識(shí)別,然后進(jìn)行轉(zhuǎn)發(fā)。圖圖2-42-4 iptable
40、siptables配置腳本配置腳本在設(shè)置完成之后,可以使用iptables L n來(lái)查看mangle表。如下圖所示。無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建15圖圖2-52-5 iptablesiptables的的manglemangle表表2.5 LVS負(fù)載均衡集群實(shí)現(xiàn)概述拓?fù)鋱D如下所示:圖圖2-62-6 webweb層和分發(fā)層概覽層和分發(fā)層概覽如上圖所示,LVS1和LVS2作為分發(fā)機(jī),構(gòu)成一個(gè)HA集群,每次只有一臺(tái)分發(fā)機(jī)對(duì)外提供分發(fā)服務(wù),會(huì)有一個(gè)浮動(dòng)IP綁定在LVS1或者LVS2上(當(dāng)然,在DR模式下, 后端的node也要綁定VIP) , 這取決于現(xiàn)在正在對(duì)外提供分發(fā)服務(wù)的機(jī)器是哪臺(tái)。該浮動(dòng)IP
41、作為整個(gè)集群架構(gòu)的唯一入口,用戶通過(guò)訪問(wèn)浮動(dòng)IP來(lái)訪問(wèn)網(wǎng)站。浮動(dòng)IP作為分發(fā)機(jī)的一種資源存在,同樣作為資源的還有分發(fā)策略(按照什么算法進(jìn)行分發(fā)) 、已經(jīng)分發(fā)的條目記錄(原來(lái)已經(jīng)分發(fā)了多少次,已經(jīng)分配到第幾臺(tái)機(jī)器)和路由表。當(dāng)正在提供服務(wù)的分發(fā)機(jī)發(fā)生宕機(jī),包括VIP在內(nèi)的所有資源會(huì)遷移到另一臺(tái)LVS上,從而使整個(gè)分發(fā)層做到無(wú)單點(diǎn)故障。后面的兩臺(tái)node作為web服務(wù)的真實(shí)提供者,他們的IP對(duì)于用戶來(lái)說(shuō)是隱藏?zé)o單點(diǎn)故障高性能LAMP集群的構(gòu)建16的,用戶可見的IP只有VIP,也就是綁定在分發(fā)機(jī)上的IP。兩臺(tái)node構(gòu)成了LB負(fù)載均衡,同時(shí)對(duì)外提供服務(wù),分發(fā)機(jī)會(huì)根據(jù)路由表和相應(yīng)的算法向后分發(fā)用戶請(qǐng)求
42、到相應(yīng)的node。前方的分發(fā)機(jī)會(huì)定期進(jìn)行連接測(cè)試,如果其中一臺(tái)node發(fā)生宕機(jī)或服務(wù)運(yùn)行異常, 則連接測(cè)試失敗, 分發(fā)機(jī)會(huì)將該node從自己的路由表中剔除,最后所有的用戶請(qǐng)求都將有由健康的節(jié)點(diǎn)處理。分發(fā)機(jī)通過(guò)一個(gè)腳本實(shí)時(shí)了解server-pool中哪臺(tái)服務(wù)器發(fā)生異常,其內(nèi)容如下所示:具體腳本如何加載,會(huì)在實(shí)施文檔中給出。圖圖2-72-7 探測(cè)腳本內(nèi)容探測(cè)腳本內(nèi)容整個(gè)集群的運(yùn)行狀態(tài)如下圖所示:具體步驟在實(shí)施手冊(cè)中給出。圖圖2-72-7 lvslvs集群運(yùn)行狀態(tài)集群運(yùn)行狀態(tài)無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建172.6 本章小結(jié)本章對(duì)LVS實(shí)現(xiàn)的負(fù)載均衡集群原理做了簡(jiǎn)單介紹,LVS內(nèi)容繁多,這里只對(duì)
43、該項(xiàng)目中使用到的關(guān)鍵技術(shù)原理做介紹,還有很多地方?jīng)]有涉及到,關(guān)于具體如何去實(shí)現(xiàn),實(shí)施文檔中會(huì)給出詳細(xì)步驟。無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建183.3.基于基于 iscsi 的共享存儲(chǔ)存儲(chǔ)層的共享存儲(chǔ)存儲(chǔ)層截止到目前,已把緒論里提到的負(fù)載均衡層、web 層介紹完畢。接下來(lái)會(huì)對(duì)共享存儲(chǔ)層做相應(yīng)的介紹。在開始存儲(chǔ)層之前,先了解一下共享存儲(chǔ)在整個(gè)集群中起到的作用。在第一章提到過(guò),共享存儲(chǔ)在這里作為存放網(wǎng)站軟件的文件服務(wù)器,同時(shí)也保存用戶上傳的圖片或視頻。舉個(gè)例子,用戶 A 上傳了一張 JPG 格式的照片,保存在web-server1 上,現(xiàn)在 B 用戶想瀏覽這張圖片,如果每個(gè) web-server
44、均使用自己獨(dú)立的存儲(chǔ),那么當(dāng)分發(fā)機(jī)將用戶 B 的請(qǐng)求隨機(jī)分發(fā)到 web-server2 上時(shí)就無(wú)法瀏覽到剛才 A 用戶上傳的圖片(視頻、圖片會(huì)存放在 web 服務(wù)器的圖片視頻目錄中,而數(shù)據(jù)庫(kù)中一般存放的是這些圖片、視頻名字對(duì)應(yīng)的地址)。解決這一問(wèn)題可以采用 sync 進(jìn)行實(shí)時(shí)同步,也可使用這節(jié)介紹的共享存儲(chǔ)方案。另外再看看現(xiàn)在面臨的主要問(wèn)題有哪些, 這樣可以方便后面追個(gè)擊破。 首先,所謂存儲(chǔ)層,必定是由若干臺(tái)存儲(chǔ)服務(wù)器構(gòu)成,那么web服務(wù)器作為客戶端要如何使用存儲(chǔ)服務(wù)器的磁盤呢?其次,再大的空間都會(huì)有用完的一天,如何能在不影響服務(wù)的前提下實(shí)現(xiàn)存儲(chǔ)的動(dòng)態(tài)擴(kuò)展,必定是在實(shí)施項(xiàng)目時(shí)需要考慮的因素。最
45、后,如果有一臺(tái)存儲(chǔ)服務(wù)器壞了,如何能保證數(shù)據(jù)不丟失,也就是對(duì)數(shù)據(jù)的冗余。接下來(lái)的內(nèi)容對(duì)這些問(wèn)題都進(jìn)行了逐一解答。3.1 NAS 和 SAN本章開始提到了關(guān)于web服務(wù)器是如何共使用存儲(chǔ)服務(wù)器磁盤的問(wèn)題,筆者在這里選擇了iscsi方案,為了更好的理解,這里就目前企業(yè)上流行的2種存儲(chǔ)模式做簡(jiǎn)單介紹,為后面對(duì)iscsi的介紹做鋪墊。NAS(Network-Attached Storage)的全稱為網(wǎng)絡(luò)接入存儲(chǔ),它通過(guò)交換機(jī)把服務(wù)器和存儲(chǔ)系統(tǒng)連接起來(lái),從而建立專門用來(lái)提供數(shù)據(jù)存儲(chǔ)的存儲(chǔ)網(wǎng)絡(luò)。早期的網(wǎng)絡(luò)接入存儲(chǔ)性能受到網(wǎng)絡(luò)帶寬影響, 但快速以太網(wǎng)的出現(xiàn)使得其讀寫性能有了很大提高。目前,NAS基本上具備了
46、磁盤陣列的所有優(yōu)點(diǎn),與市面上一些大型磁帶庫(kù)和磁盤柜相比, 其還具有很強(qiáng)的價(jià)格優(yōu)勢(shì), 在一些中小企業(yè)中被廣泛使用。無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建19NAS通常被用來(lái)提供高速的文件共享任務(wù),比如NFS,CIFS等。SAN(Storage-Area Network)全稱為存儲(chǔ)區(qū)域網(wǎng)絡(luò),它采用光纖技術(shù),通過(guò)光纖交換機(jī)連接存儲(chǔ)系統(tǒng)和服務(wù)器,目前比較流行的有FC SAN和ISCSI SAN兩種方案,其部署價(jià)格較高,一般小公司很少會(huì)使用。ISCSI(Internet SCSI)全稱為互聯(lián)網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口,它基于IP協(xié)議的技術(shù)標(biāo)準(zhǔn),能夠?qū)⒋鎯?chǔ)行業(yè)廣泛使用的SCSI接口技術(shù)和IP技術(shù)進(jìn)行結(jié)合,實(shí)現(xiàn)了SC
47、SI和TCP/IP協(xié)議的連接,從而允許用戶能夠通過(guò)TCP/IP網(wǎng)絡(luò)來(lái)構(gòu)建SAN。目前在IP網(wǎng)絡(luò)上已經(jīng)部署的大量DAS存儲(chǔ)設(shè)備是推動(dòng)ISCSI協(xié)議不斷發(fā)展的主要?jiǎng)恿Γ@些存儲(chǔ)設(shè)備可以通過(guò)ISCSI協(xié)議被更多的用戶使用,同時(shí)也使得DAS設(shè)備支持了那些只有高級(jí)存儲(chǔ)才支持的鏡像、容災(zāi)等應(yīng)用。3.2iscsi技術(shù)研究3.2.1 iscsi的報(bào)文格式得益于IP網(wǎng)絡(luò)的廣泛應(yīng)用,iscsi使得數(shù)據(jù)的存儲(chǔ)不再受到地域限制。無(wú)論是WAN、LAN甚至Internet,iscsi均能在其上進(jìn)行數(shù)據(jù)傳送。其核心技術(shù)是對(duì)scsi報(bào)文進(jìn)行封裝,從而使scsi命令和數(shù)據(jù)可以在普通以太網(wǎng)上傳輸。iscsi的報(bào)文格式下圖所示:圖
48、圖3-13-1 iscsiiscsi報(bào)文格式報(bào)文格式千兆以太網(wǎng):提供連接尋址、大型幀長(zhǎng)度、以及流量控制信息。IP頭:包含路由信息,因此報(bào)文能找到通過(guò)網(wǎng)絡(luò)的路徑。TCP頭:提供必要信息保證交付。iscsi頭:解釋如何提取scsi命令和數(shù)據(jù)。iscsi的工作過(guò)程大致如下:操作系統(tǒng)會(huì)在iscsi主機(jī)應(yīng)用程序發(fā)出讀寫請(qǐng)求后生成相應(yīng)的scsi命令,該命令首先會(huì)在iscsi initiator層進(jìn)行封裝,封裝后的iscsi消息包通過(guò)TCP/IP被傳送到設(shè)備側(cè),設(shè)備側(cè)的iscsi Target層會(huì)對(duì)其進(jìn)行解封裝,然后把得到的iscsi命令內(nèi)容傳送給scsi設(shè)備執(zhí)行。命令執(zhí)行后的響應(yīng)在經(jīng)過(guò)設(shè)備側(cè)的iscsi
49、Target層時(shí)被封裝成iscsi響應(yīng)PDU(Protocol Data Unit) ,然后通過(guò)TCP/IP無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建20傳送給主機(jī)的iscsi initiator層,iscsi響應(yīng)PDU 會(huì)在這里被進(jìn)行解析,得到scsi響應(yīng)后傳送給操作系統(tǒng),最后由操作系統(tǒng)響應(yīng)給應(yīng)用程序。3.2.2 iscsi協(xié)議棧模型iscsi使用TCP/IP協(xié)議在不穩(wěn)定的網(wǎng)絡(luò)上進(jìn)行可靠的數(shù)據(jù)傳輸。其協(xié)議棧模型如下圖所示:圖圖3-23-2 iscsiiscsi協(xié)議棧模型協(xié)議棧模型如上圖所示:initiator會(huì)將scsi命令和數(shù)據(jù)進(jìn)行封裝,使其變成iscsi協(xié)議數(shù)據(jù)單元,然后向下提交給IP層繼續(xù)進(jìn)行
50、封裝,變成IP數(shù)據(jù)報(bào)后在現(xiàn)有的IP網(wǎng)絡(luò)中進(jìn)行傳輸。 到達(dá)target后, 對(duì)數(shù)據(jù)包進(jìn)行解封裝, 最后還原成之前的scsi命令和數(shù)據(jù),然后再由存儲(chǔ)控制器將其發(fā)送給指定的驅(qū)動(dòng)器。最終實(shí)現(xiàn)數(shù)據(jù)和scsi命令在IP網(wǎng)絡(luò)上的透明傳輸。3.2.3 發(fā)起端-目標(biāo)器模型Target與Initiator是iscsi體系結(jié)構(gòu)模式中兩個(gè)重要角色。其結(jié)構(gòu)如下圖所示:無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建21圖圖3-33-3 發(fā)起端發(fā)起端- -目標(biāo)器模型目標(biāo)器模型scsi通道將scsi Port連接起來(lái) (比如scsi initiator port和scsi target port) , 其不但被Initiator用來(lái)向t
51、arget發(fā)送請(qǐng)求,也被target用來(lái)向Initiator發(fā)送響應(yīng)。Initiator至少需要有一個(gè)發(fā)送請(qǐng)求的客戶端和一個(gè)scsi port,target不但需要有一個(gè)scsi port,還要有邏輯單元和任務(wù)分發(fā)器。 其中任務(wù)分發(fā)器用來(lái)把用戶的請(qǐng)求分給適當(dāng)?shù)倪壿媶卧?,scsi port被用來(lái)連接scsi通道,而真正用來(lái)處理任務(wù)的實(shí)體是邏輯單元,由于一個(gè)邏輯單元一般都會(huì)支持多任務(wù)環(huán)境, 所以還需要真正響應(yīng)請(qǐng)求的服務(wù)器和任務(wù)管理器。3.2.4 iscsi命名規(guī)范為了方便大家理解iscsi的配置,這里介紹一下iscsi的命名規(guī)范,在此之前先說(shuō)一下什么是邏輯單元號(hào)。scsi總線上一般可掛的設(shè)備數(shù)量為
52、6個(gè)或者15個(gè),用TargetID對(duì)這些設(shè)備進(jìn)行描述, 每個(gè)設(shè)備在加入系統(tǒng)時(shí)會(huì)取得一個(gè)代號(hào),但實(shí)際上需要描述的設(shè)備數(shù)量一般都會(huì)超過(guò)這個(gè)數(shù)字,于是就有了邏輯單元號(hào)(LUN)的概念,它的作用就是為了對(duì)Target進(jìn)行擴(kuò)展。Target主機(jī)由“iscsi Qualified Nam(iqn) ”來(lái)標(biāo)記,Target的名字一定要以qin后面加上一個(gè)點(diǎn)號(hào)開頭,形如qin.,在點(diǎn)號(hào)后面是日期,日期后面是一個(gè)唯一的點(diǎn)號(hào)加上域名的反轉(zhuǎn),在被反轉(zhuǎn)的域名后面跟一個(gè)冒號(hào),最后加上任意的字符串,其格式如下:iqn.:,在本項(xiàng)目中的名字起法如圖所示:無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建22圖圖3-43-4 命名示例命名示
53、例在iscsi命名規(guī)范中,iqn必須唯一的標(biāo)記出目標(biāo)設(shè)備(Target) ,LUN ID由iscsi目標(biāo)設(shè)備(Target)分配。3.2.5 Initiator端導(dǎo)入設(shè)備首先查看在target端共享出的磁盤:圖圖3-53-5 磁盤導(dǎo)出情況磁盤導(dǎo)出情況在targrt共享出設(shè)備后,可以在Initiator中使用如下命令發(fā)現(xiàn)target導(dǎo)出的磁盤:無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建23圖圖3-63-6 發(fā)現(xiàn)導(dǎo)出磁盤發(fā)現(xiàn)導(dǎo)出磁盤然后將其導(dǎo)入本地:圖圖3-73-7 對(duì)磁盤導(dǎo)入對(duì)磁盤導(dǎo)入最后會(huì)在/dev目錄下發(fā)現(xiàn)兩個(gè)設(shè)備文件名,通過(guò)查看UUID可知這兩個(gè)設(shè)備文件名分別對(duì)應(yīng)著兩個(gè)存儲(chǔ)服務(wù)器上的sda6和sd
54、a8,如下圖所示。由于筆者在做的時(shí)候是在虛擬機(jī)上進(jìn)行設(shè)備發(fā)現(xiàn)和導(dǎo)入,所以設(shè)備文件名為sda和sdb,如果使用真機(jī)的話,應(yīng)該會(huì)得到sdb和sdc。無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建24圖圖3-83-8 查看導(dǎo)入磁盤查看導(dǎo)入磁盤關(guān)于iscsi的配置,會(huì)在實(shí)施手冊(cè)中詳細(xì)給出,由于篇幅限制,關(guān)于iscsi的介紹只能到此為止,感興趣的話可以參考一本叫大話存儲(chǔ)的書,寫的很像武俠小書,里面有關(guān)于存儲(chǔ)更加詳細(xì)的介紹。3.3 LVM實(shí)現(xiàn)存儲(chǔ)的動(dòng)態(tài)擴(kuò)展和冗余剛才向大家介紹了 iscsi 技術(shù),目的是為了使 web server 能夠使用存儲(chǔ)柜導(dǎo)出的磁盤,大致結(jié)構(gòu)如下圖,這個(gè)項(xiàng)目中使用兩臺(tái)服務(wù)器作為 iscsi 的
55、 target 端,分別導(dǎo)出各自的一個(gè)分區(qū),兩臺(tái) web server 則作為 iscsi 的 initiator 端,對(duì)來(lái)自不同服務(wù)器的兩塊存儲(chǔ)進(jìn)行導(dǎo)入, 這時(shí)在本地的/dev 目錄下會(huì)看到相應(yīng)的設(shè)備文件名,查看 uuid 便可知這兩塊磁盤自兩臺(tái)存儲(chǔ)服務(wù)器。圖圖3-93-9 存儲(chǔ)層概覽存儲(chǔ)層概覽為什么要使用兩臺(tái)相互獨(dú)立了存儲(chǔ)服務(wù)器,一臺(tái)不行么?當(dāng)然可以,但萬(wàn)一這一臺(tái)服務(wù)器發(fā)生宕機(jī),web server本地發(fā)現(xiàn)的磁盤設(shè)備不是也就沒(méi)了么,宕機(jī)也就算了,如果一臺(tái)服務(wù)器導(dǎo)出的磁盤損壞怎么辦,軟件家目錄存放的圖片、視頻之類的數(shù)據(jù)不就丟失了么,為了防止這樣的情況產(chǎn)生,本項(xiàng)目使用兩臺(tái)存儲(chǔ)服無(wú)單點(diǎn)故障高性能
56、LAMP集群的構(gòu)建25務(wù)器并將其做成鏡像關(guān)系(類似于raid1) ,這樣就相當(dāng)于數(shù)據(jù)是完整保存在兩臺(tái)存儲(chǔ)服務(wù)器中,兩臺(tái)存儲(chǔ)服務(wù)器互為對(duì)方的備份,那么就算其中任意一臺(tái)宕機(jī)或發(fā)生磁盤損壞,數(shù)據(jù)不但不會(huì)丟失,集群也可以正常工作。3.3.1 LVM技術(shù)簡(jiǎn)介L(zhǎng)VM(Logical Volume Manager)全稱為邏輯卷管理,它是Linux環(huán)境下對(duì)磁盤分區(qū)進(jìn)行管理的一種機(jī)制,相較于普通的磁盤分區(qū),LVM提供了更高等級(jí)的磁盤存儲(chǔ)。舉個(gè)例子,現(xiàn)在本地有一塊硬盤sda,并對(duì)其進(jìn)行了分區(qū)劃分,最后得到sda1、sda2、sda3,后面還有剩余空間沒(méi)有使用?,F(xiàn)將sda1掛載到boot目錄,sda2掛載到根目錄,
57、sda3掛載到home目錄,如果home目錄的空間不夠了怎么辦,一般的做法是再劃分出一個(gè)分區(qū)sda4, 先將sda4暫時(shí)掛在mnt目錄下, 接著把home目錄下(sda3)的文件cp過(guò)去,最后用sda4替換下sda3,也就是實(shí)現(xiàn)了用更大的分區(qū)替換掉不夠用的sda3。這種方法不但麻煩,而且浪費(fèi)了sda3,并且如果后面的分區(qū)容量小于sda3怎么辦?lvm針對(duì)這種情況提供了完美的解決方案,它可以實(shí)現(xiàn)在不對(duì)分區(qū)進(jìn)行卸載的前提下,自如調(diào)整分區(qū)大小。前提是系統(tǒng)要支持lvm,并且需要?jiǎng)討B(tài)擴(kuò)展的對(duì)象是邏輯卷。3.3.2 LVM的組成如圖所示:圖圖3-103-10 LVMLVM組成圖組成圖PV(physical
58、 volume):位于LVM的最底層,一般為物理盤上的分區(qū),比如上面提到的sda1,sda2,sda3。VG(volume group):一個(gè)VG至少由一個(gè)PV組成,如上圖所示。LV(logical volume): LV建立在VG上,VG中沒(méi)有使用的空間可以用來(lái)對(duì)已有的LV進(jìn)行擴(kuò)展,也可以用于建立新的LV。無(wú)單點(diǎn)故障高性能LAMP集群的構(gòu)建26PE(physical extent):PE是組成PV的基本單元,默認(rèn)情況下為4MB。LE(logical extent):LE是LV的基本組成單位,在同一個(gè)VG中,LE和PE一一對(duì)應(yīng),并且大小相同。對(duì)于LV的擴(kuò)展時(shí)只需把VG上空閑的PE搬到LV里即可
59、。VG最多能夠支持65534個(gè)PE,因此LV不能無(wú)限擴(kuò)大。3.3.3 基于集群的LVM技術(shù)集群邏輯卷管理簡(jiǎn)稱CLVM(Cluster Logical Volume Manager), 作為L(zhǎng)VM的擴(kuò)展,其允許集群中的各節(jié)點(diǎn)使用LVM管理共享存儲(chǔ)。要在集群狀態(tài)下使用lvm,需要在每個(gè)web server服務(wù)節(jié)點(diǎn)上安裝lvm2-cluster軟件包(RHEL6的操作系統(tǒng)) ,接著在任意一臺(tái)執(zhí)行如下命令即可:,再建好vg后,接下來(lái)的操作比較重要,還記得之前提到的對(duì)磁盤進(jìn)行冗余么,現(xiàn)在要將/dev/sdb和/dev/sdc做成鏡像關(guān)系,lvm本身具有這個(gè)功能,但因?yàn)樵诩涵h(huán)境下,兩臺(tái)webserver
60、上還需要裝上cmirror的軟件包,并啟動(dòng)cmirror服務(wù)。完成上述兩步后,使用lvcreate m 1 L 10G n clvm_mirror clvm_vg即可,-m 后跟的是mirror的個(gè)數(shù),L后跟的是mirror的大小,-n后的是做成mirror的名字 (隨便起) , 最后是表示在哪個(gè)vg上做mirror。做好后的cmirror如圖:Clvm_mirror是由/dev/sdb和/dev/sdc組成的,當(dāng)往clvm_mirror上寫數(shù)據(jù)時(shí),其實(shí)是往storage1和storage2同時(shí)寫數(shù)據(jù),當(dāng)一個(gè)storage發(fā)生損壞,相同的數(shù)據(jù)在storage2上也有一份,這樣就避免了由于存儲(chǔ)單
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公會(huì)禮品供貨合同樣本
- 供貨框架協(xié)議合同樣本
- 三農(nóng)拍攝合同樣本
- 代銷化肥合同樣本
- 代理錄入業(yè)績(jī)合同標(biāo)準(zhǔn)文本
- 中交二航局分包合同標(biāo)準(zhǔn)文本
- 臨時(shí)工用工合同樣本
- 會(huì)務(wù)租用合同樣本
- led屏維修合同樣本
- 產(chǎn)業(yè)發(fā)展顧問(wèn)合同樣本
- 國(guó)企素質(zhì)測(cè)評(píng)試題及答案
- 2024春蘇教版《亮點(diǎn)給力大試卷》數(shù)學(xué)六年級(jí)下冊(cè)(全冊(cè)有答案)
- 中考英語(yǔ)語(yǔ)法填空總復(fù)習(xí)-教學(xué)課件(共22張PPT)
- 綜合辦公樓裝飾裝修工程招標(biāo)文件
- 玻璃體切除手術(shù)配合課件
- 手足口病小講課護(hù)理課件
- 2024年浙江杭州地鐵運(yùn)營(yíng)分公司招聘筆試參考題庫(kù)含答案解析
- 《質(zhì)量檢驗(yàn)培訓(xùn)》課件
- 2023版設(shè)備管理體系標(biāo)準(zhǔn)
- 獨(dú)唱曲 課件-2022-2023學(xué)年高中音樂(lè)人音版(2019)必修 音樂(lè)鑒賞
- 二、問(wèn)題解決型(指令性目標(biāo))QC成果案例
評(píng)論
0/150
提交評(píng)論