軟負(fù)載均衡技術(shù)實(shí)現(xiàn)_第1頁
軟負(fù)載均衡技術(shù)實(shí)現(xiàn)_第2頁
軟負(fù)載均衡技術(shù)實(shí)現(xiàn)_第3頁
軟負(fù)載均衡技術(shù)實(shí)現(xiàn)_第4頁
軟負(fù)載均衡技術(shù)實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Copyright 2007 by Shenzhen Tianyuan DIC Information Technology co.,ltd. 本文件是深圳天源迪科信息技術(shù)股份有限公司為公司所準(zhǔn)備 未經(jīng)天源迪科許可不得向第三方透露或用于其他目的 深圳市高新技術(shù)產(chǎn)業(yè)園區(qū)南區(qū)南七道T3大廈B三層 ADD:3/F,T3 Building,Nanqi Road,South Area Shenzhen Hi-Tech Industrial Park,Shenzhen, P.R.C 電話(TEL):+86-755-26745688 傳真(FAX):+86-755-26745666 郵編(P.C.):518

2、057 - 軟負(fù)載均衡技術(shù)實(shí)現(xiàn) 2014年01月 周洋 網(wǎng)站工作原理 負(fù)載均衡概述 DNS負(fù)載均衡 Apache負(fù)載均衡 Nginx負(fù)載均衡 LVS負(fù)載均衡 Squid負(fù)載均衡 數(shù)據(jù)庫負(fù)載均衡 網(wǎng)站工作原理-一次請求訪問 瀏覽器 輸入地址 DNS 查找網(wǎng)站 服務(wù)器 響應(yīng)請求 數(shù)據(jù)庫 數(shù)據(jù)訪問 用戶交互 負(fù)載均衡 圖片服務(wù)器 代理/緩存 圖片 文件服務(wù)器 靜態(tài)頁面、文檔等 Web服務(wù)器 應(yīng)用服務(wù)器 緩存 數(shù)據(jù)庫服務(wù)器 網(wǎng)站工作原理-網(wǎng)絡(luò) 網(wǎng)站工作原理-網(wǎng)絡(luò) IP: 無連接、不可靠、尋址與路由、分段與重組 TCP: 面向連接、傳輸數(shù)據(jù)、可靠、TCP握手 UDP 無連接、傳輸數(shù)據(jù)、不可靠 DNS I

3、P地址映射、域名結(jié)構(gòu)、DNS查詢 速度、帶寬、延遲 帶寬:指給定連接在特定時(shí)間內(nèi)能夠傳輸?shù)臄?shù)據(jù)總量,通常用比特每秒來衡量 延遲:指給定請求收到響應(yīng)所需要的時(shí)間 網(wǎng)站工作原理-HTML和web HTML 特征:簡單規(guī)范、基于文本、鏈接、超文本 HTML5: 實(shí)際指的是包括HTML、CSS和JavaScript在內(nèi)的一套技術(shù)組合,希望能 夠減少瀏覽器對于需要插件的豐富性網(wǎng)絡(luò)應(yīng)用服務(wù),并且追加了本地?cái)?shù)據(jù) 庫等 Web 應(yīng)用的功能 web內(nèi)容 靜態(tài)內(nèi)容:圖片、CSS、JS 動(dòng)態(tài)內(nèi)容:響應(yīng)請求創(chuàng)建 加速動(dòng)態(tài)內(nèi)容:緩存 網(wǎng)站工作原理-影響網(wǎng)站性能因素 影響網(wǎng)站性能因素,除去硬件和通信部分,大概有以下: 高

4、訪問高并發(fā) 用戶訪問量高,事務(wù)處理復(fù)雜占時(shí) 緩存 使用緩存可減小對服務(wù)器資源的消耗,大大提高網(wǎng)站性能 動(dòng)態(tài)靜態(tài)內(nèi)容 劃分動(dòng)態(tài)靜態(tài)資源,靜態(tài)內(nèi)容不應(yīng)和應(yīng)用服務(wù)放一起 圖片分離 圖片資源占用I/O和帶寬,需要單獨(dú)分離 數(shù)據(jù)庫 數(shù)據(jù)庫是一個(gè)很大瓶頸,數(shù)據(jù)庫必須在硬盤上四處搜尋數(shù)據(jù) 負(fù)載均衡概述-負(fù)載均衡 負(fù)載均衡( Load Balance,又稱為負(fù)載分擔(dān)),其意思就是將負(fù)載(工作任務(wù))進(jìn)行平衡、 分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它 關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。 需要說明的是:負(fù)載均衡設(shè)備不是基礎(chǔ)網(wǎng)絡(luò)設(shè)備,而是一種性能優(yōu)化設(shè)備。對于網(wǎng)絡(luò)

5、應(yīng)用而言 ,并不是一開始就需要負(fù)載均衡,當(dāng)網(wǎng)絡(luò)應(yīng)用的訪問量不斷增長,單個(gè)處理單元無法滿足負(fù)載 需求時(shí),網(wǎng)絡(luò)應(yīng)用流量將要出現(xiàn)瓶頸時(shí),負(fù)載均衡才會(huì)起到作用。 負(fù)載均衡有兩方面的含義:首先,單個(gè)重負(fù)載的運(yùn)算分擔(dān)到多臺節(jié)點(diǎn)設(shè)備上做并行處理,每個(gè) 節(jié)點(diǎn)設(shè)備處理結(jié)束后,將結(jié)果匯總,返回給用戶,系統(tǒng)處理能力得到大幅度提高,這就是常說 的集群(clustering)技術(shù)。第二層含義就是:大量的并發(fā)訪問或數(shù)據(jù)流量分擔(dān)到多臺節(jié)點(diǎn)設(shè) 備上分別處理,減少用戶等待響應(yīng)的時(shí)間,這主要針對Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng) 用服務(wù)器等網(wǎng)絡(luò)應(yīng)用。 負(fù)載均衡概述-一些概念 正向代理 是一個(gè)位于客戶端和原始服務(wù)器(origi

6、n server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向 代理發(fā)送一個(gè)請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客 戶端??蛻舳吮仨氁M(jìn)行一些特別的設(shè)置才能使用正向代理。 反向代理 反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給 內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時(shí)代理服務(wù) 器對外就表現(xiàn)為一個(gè)服務(wù)器。 縱向擴(kuò)展 指企業(yè)后端大型服務(wù)器以增加處理器等運(yùn)算資源進(jìn)行升級以獲得對應(yīng)用性能的要求。 橫向擴(kuò)展 指企業(yè)可以根據(jù)需求增加不同的服務(wù)器應(yīng)

7、用,依靠多部服務(wù)器協(xié)同運(yùn)算,借助負(fù)載均衡及容錯(cuò)等功能 來提高運(yùn)算能力及可靠度。 去IOE IBM是服務(wù)器提供商,Oracle是數(shù)據(jù)庫軟件提供商,EMC則是存儲設(shè)備提供商,三者構(gòu)成了一個(gè)從軟 件到硬件的企業(yè)數(shù)據(jù)庫系統(tǒng)。“去IOE”運(yùn)動(dòng)就是用成本更加低廉的軟件,以消除“IOE”對自己數(shù)據(jù) 庫系統(tǒng)的壟斷。 集群 集群是一組相互獨(dú)立的、通過高速網(wǎng)絡(luò)互聯(lián)的計(jì)算機(jī),它們構(gòu)成了一個(gè)組,并以單一系統(tǒng)的模式加以 管理。一個(gè)客戶與集群相互作用時(shí),集群像是一個(gè)獨(dú)立的服務(wù)器。集群配置是用于提高可用性和可縮 放性。 高可用HA 高可用性H.A.(High Availability)指的是通過盡量縮短因日常維護(hù)操作(計(jì)劃

8、)和突發(fā)的系統(tǒng)崩潰( 非計(jì)劃)所導(dǎo)致的停機(jī)時(shí)間,以提高系統(tǒng)和應(yīng)用的可用性。 負(fù)載均衡概述-技術(shù)實(shí)現(xiàn) 硬件 產(chǎn)品:F5 BIG-IP、A10、NetScaler等 特點(diǎn):性能高、維護(hù)方便、價(jià)格昂貴 軟件 產(chǎn)品:apache、nginx、LVS、squid等 特點(diǎn):性能比硬件要差、開源免費(fèi)、維護(hù)相對硬件復(fù)雜 四層負(fù)載均衡 所謂四層負(fù)載均衡,也就是主要通過報(bào)文中的目標(biāo)地址和端口,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器選 擇方式,決定最終選擇的內(nèi)部服務(wù)器。四層交換機(jī)主要分析IP層及RTCP/UDP層,實(shí)現(xiàn)四層流量負(fù)載均 衡。 七層負(fù)載均衡 所謂七層負(fù)載均衡,也稱為“內(nèi)容交換”, 也就是主要通過報(bào)文中的真正有意

9、義的應(yīng)用 層內(nèi)容,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器 選擇方式,決定最終選擇的內(nèi)部服務(wù)器。七 層交換機(jī)除了支持四層負(fù)載均衡以外,還有 分析應(yīng)用層的信息,如HTTP協(xié)議URI或 Cookie信息。 負(fù)載均衡概述-技術(shù)實(shí)現(xiàn) 硬件七層負(fù)載均衡 對比: NetScaler 負(fù)載均衡概述-技術(shù)實(shí)現(xiàn) 軟件七層負(fù)載均衡 對比: Nginx 負(fù)載均衡概述-可用的計(jì)算資源 服務(wù)器通常有四部分主要的資源,處理器、內(nèi)存、網(wǎng)絡(luò)和存儲,了解這些資源情 況,才能更好的利用,負(fù)載均衡才有意義。 DNS負(fù)載均衡 DNS負(fù)載均衡,它的工作機(jī)制非常簡單,使用一種稱為輪轉(zhuǎn)的方式,來向特定域的一 組服務(wù)器分發(fā)連接請求。這種操作是順序執(zhí)行

10、的,要想服務(wù)器增加基于DNS的負(fù)載均 衡,只需為域增加多個(gè)A記錄即可,BIND會(huì)負(fù)責(zé)完成其他工作。 DNS服務(wù)器軟件:BIND(Berkeley Internet Name Domain伯克利互聯(lián)網(wǎng)域名守護(hù)進(jìn)程) 記錄類型:NS記錄代表名稱服務(wù)器記錄;MX記錄代表郵件收發(fā)器記錄; A記錄將一個(gè)IP地址和一個(gè)域名鏈接起來;CNAME記錄代表規(guī)范名稱或別名; 優(yōu)點(diǎn): 簡單、易于調(diào)試、容易擴(kuò)展 缺點(diǎn): 會(huì)話保持 負(fù)載處理方式(分配不均) 容錯(cuò)性(無法判別宕機(jī)) DNS負(fù)載均衡 查詢域名 dig .hk 遍歷查詢 dig .hk +trace 測試DNS:nslookup apac

11、he負(fù)載均衡 apache jk2 tomcat apache負(fù)載均衡 主機(jī)配置 主機(jī)1: rhel5,ip:1 子網(wǎng)掩碼:28,默認(rèn)網(wǎng)關(guān): 0 主機(jī)2: centos6.4,ip:2 子網(wǎng)掩碼:28,默認(rèn)網(wǎng)關(guān): 0 客戶機(jī): win7,ip:9 子網(wǎng)掩碼:28,默認(rèn)網(wǎng)關(guān): 0 三個(gè)主機(jī)可以相互訪問 安裝JDK (jdk-1_5_0_22-linux-i586-rpm.bin)主機(jī)1和主機(jī)2均安裝 安裝tomc

12、at (apache-tomcat-6.0.18-linux.zip)主機(jī)1和主機(jī)2均安裝 apache負(fù)載均衡 安裝apache (httpd-2.2.26.tar.gz) rhel5(1)上安裝 下載httpd-2.2.26.tar.gz 把httpd-2.2.26.tar.gz放到/soft 下 rootlocalhost #cd /soft rootlocalhost soft#tar zxvf httpd-2.2.26.tar.gz /解壓apache的壓縮包 rootlocalhost soft#cd httpd-2.2.6 /定位到httpd-2.2.6 文件夾

13、下 rootlocalhost httpd-2.2.6#./configure -prefix=/usr/local/apache -enable- so / 配置apache路徑 rootlocalhost httpd-2.2.6#make /編譯apache rootlocalhost httpd-2.2.6#make install /安裝apache rootlocalhost httpd-2.2.6#cd /usr/local/apache /進(jìn)入apache的目錄 rootlocalhost apache# cd conf/ rootlocalhost conf#cp -a htt

14、pd.conf httpd.conf- /備份apache配置文件 rootlocalhost conf#chkconfig -list httpd /查看httpd服務(wù)是否已存在 rootlocalhost conf#chkconfig httpd off /關(guān)閉系統(tǒng)自帶了httpd的服務(wù),如果存在 httpd服務(wù) rootlocalhost conf#service httpd status /查看自帶httpd服務(wù)狀態(tài) rootlocalhost conf#/usr/local/apache/bin/apachectl -k start /linux啟動(dòng)apache 命令 rootloc

15、alhost conf#netstat -an | grep :80 /查看linux80端口是否開啟 rootlocalhost conf#ps -aux | grep httpd /linux下查看apache進(jìn)程 apache負(fù)載均衡 安裝jk2(tomcat-connectors-1.2.26-src.tar.gz)rhel5上安裝 tar zxvf tomcat-connectors-1.2.26-src.tar.gz cd tomcat-connectors-1.2.26-src cd native ./configure -with-apxs=/usr/local/apache/

16、bin/apxs -with-java- home=/usr/java/jdk1.5.0_22 -with-java-platform=2 -enable-jni make cp apache-2.0/mod_jk.so /usr/local/apache/modules/ 注:如果此處的mod_jk.so是通過其它方法或者途徑得到的,在后面啟動(dòng)apache的時(shí)候可能會(huì) 提示:Cannot load /usr/local/termite/apache/modules/mod_jk.so into server: /usr/local/termite/apache/modules/mod_jk.

17、so: invalid ELF header file mod_jk.so 可能會(huì)顯示 mod_jk.so: MS-DOS executable (EXE), OS/2 or MS Windows 而正確的應(yīng)該顯示mod_jk.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped cd /usr/local/apache/modules chmod 755 mod_jk.so apache負(fù)載均衡 配置jk2 在/usr/local/apache/conf目錄下新建mod_jk.conf文件,

18、內(nèi)容如下: LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/perties JkMount /*.jsp controller JkMount /jkstatus status JkLogFile logs/mod_jk.log #Set the jk log level debug/error/info JkLogLevel debug #Select the log format JkLogStampFormat %a %b %d %H:%M:%S %Y #JkOptions indicate to

19、send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories #JkRequestLogFormat set the request format JkRequestLogFormat %w %V %T“ 在/usr/local/apache/conf目錄下httpd.conf文件末尾添加如下內(nèi)容: #jk_module Include conf/mod_jk.conf apache負(fù)載均衡 配置jk2 在/usr/local/apache/conf目錄下新建perti

20、es文件,內(nèi)容如下: worker.list = controller,status #=tomcat1= worker.tomcat1.port=8009 worker.tomcat1.host=1 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 #=tomcat2= worker.tomcat2.port=8009 worker.tomcat2.host=2 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 #=controller= w

21、orker.controller.type=lb worker.controller.balanced_workers=tomcat2,tomcat1 worker.controller.sticky_session=1 #worker.controller.sticky_session_force=1 #- worker.status.type=status apache負(fù)載均衡 Ajp13協(xié)議,8009端口監(jiān)聽 apache負(fù)載均衡 測試負(fù)載均衡 在Tomcat1和Tomcat2下新建站點(diǎn) tomcat/webapps目錄下新建test目錄, test目錄列表:index.jsp、WEB-

22、INF, WEB-INF目錄下web.xml文件 Tomcat1 index.jsp Tomcat 1 Tomcat2 index.jsp Tomcat 2 web.xml index.jsp apache負(fù)載均衡 測試負(fù)載均衡 啟動(dòng)Tomcat1, Tomcat2 和Apache服務(wù) Apache服務(wù)器ip:1 端口70 service apache start Tomcat1服務(wù)器ip:1 端口8080 ./startup.sh Tomcat2服務(wù)器ip:2 端口8080 ./startup.sh 首先驗(yàn)證Apache服務(wù)器的靜態(tài)頁面是

23、否正常,訪問:1:70/(若局域網(wǎng)內(nèi)不能訪 問請檢查防火墻設(shè)置) 驗(yàn)證tomcat和apache配置提供負(fù)載均衡,用不同的終端訪問 1/test/index.jsp 如果你看到紅色的頁面,表示為tomcat1 服務(wù)器返回的, 如果你看到l藍(lán)色的頁面,表示為tomcat2 服務(wù)器返回的。 停止其中一臺Tomcat服務(wù),繼續(xù)訪問,驗(yàn)證負(fù)載均衡是否停止對失效服務(wù)的分發(fā)請求 apache負(fù)載均衡 Jkstatus 通過 jkstatus 可以監(jiān)控 JK 目前的工作狀態(tài)以及對到 tomcat 的連接進(jìn)行設(shè)置 訪問1

24、/jkstatus (1:70/jkstatus) apache負(fù)載均衡 配置tomcat綁定session 注意會(huì)話復(fù)制會(huì)消耗一定性能;會(huì)話保持和session獨(dú)立管理都可以解決此類問題。 修改tomcat1, tomcat2的server.xml(tomcat/conf) tomcat1替換第一個(gè)如下: tomcat2替換第一個(gè)如下: apache負(fù)載均衡 tomcat1和tomcat2替換如下: apache負(fù)載均衡 tomcat1和tomcat2替換如下: 修改tomcat1, tomcat2測試項(xiàng)目中的WEB-INF/web.xml 在web.xml加入

25、 即可 apache負(fù)載均衡 測試tomcat綁定session 重啟apache,tomcat1,tomcat2, 用不同的終端訪問:1:70/test/index.jsp 可以看到Tomcat終端不再打印null,一方設(shè)置session雙方都打印出session,實(shí)現(xiàn)session共 享。 tail f tomcat/logs/catalina.out Nginx負(fù)載均衡 使用Nginx做七層負(fù)載均衡的理由 高并發(fā)連接:官方測試能夠支撐5萬并發(fā)連接,在實(shí)際生產(chǎn)環(huán)境中跑到23萬并發(fā)連接數(shù)。 內(nèi)存消耗少:在3萬并發(fā)連接下,開啟的10個(gè)Nginx 進(jìn)程才消耗150M

26、內(nèi)存 (15M*10=150M)。 配置文件非常簡單:風(fēng)格跟程序一樣通俗易懂。 成本低廉:Nginx為開源軟件,可以免費(fèi)使用。而購買F5 BIG-IP、NetScaler等硬件負(fù)載均衡 交換機(jī)則需要十多萬至幾十萬人民幣。 支持Rewrite重寫規(guī)則:能夠根據(jù)域名、URL的不同,將 HTTP 請求分到不同的后端服務(wù)器群 組。 內(nèi)置的健康檢查功能:如果 Nginx Proxy 后端的某臺 Web 服務(wù)器宕機(jī)了,不會(huì)影響前端訪問。 節(jié)省帶寬:支持 GZIP 壓縮,可以添加瀏覽器本地緩存的 Header 頭。 穩(wěn)定性高:用于反向代理,宕機(jī)的概率微乎其微。 Nginx負(fù)載均衡 nginx tomcat

27、Nginx負(fù)載均衡 Nginx高可用集群 Nginx負(fù)載均衡 安裝nginx ( nginx-1.4.4.tar.gz ) centos6.4(2)上安裝 安裝編譯用到的包 rpm安裝: rpm ivh 包名 安裝pcre(pcre-8.33.tar.gz) 為了確保能在nginx中使用正則表達(dá)式進(jìn)行更靈活的配置,安裝之前需要確定系統(tǒng)是否安裝有PCRE包。 檢查是否已經(jīng)安裝:pcretest C tar -xzf pcre-8.33.tar.gz cd pcre-8.33 ./configure -enable-utf8 -enable-unicode-properties

28、make server 2:8080 weight=1 max_fails=2 fail_timeout=30s; #ip_hash; server listen 80; server_name 2; index index.html index.htm; #root /usr/local/www/web/ROOT; root html; Nginx負(fù)載均衡 location / proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache cache_one;

29、 proxy_cache_valid 200 304 12h; proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http:/backend_server; expires 1d; location .*.(php|jsp|cgi)?$ proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; pro

30、xy_pass http:/backend_server; access_log off; Nginx負(fù)載均衡 測試配置是否正確 /usr/local/nginx/sbin/nginx t 如果屏幕顯示以下兩行信息,說明配置文件正確: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully 測試Nginx 啟動(dòng)NGINX /usr/local/nginx/

31、sbin/nginx 關(guān)閉NGINX /usr/local/nginx/sbin/nginx -s stop 重啟NGINX /usr/local/nginx/sbin/nginx -s relo Nginx負(fù)載均衡 不中斷服務(wù)平滑修改Nginx配置(未測試) 修改/usr/local/nginx/conf/nginx.conf配置文件后,請執(zhí)行以下命令檢查配置文件是否正確: /usr/local/nginx/sbin/nginx -t 如果屏幕顯示以下兩行信息,說明配置文件正確: the configuration file /usr/local/nginx/conf/nginx.conf

32、syntax is ok the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully 輸入以下命令查看Nginx主進(jìn)程號: ps -ef | grep nginx: master process | grep -v grep | awk -F print $2 屏幕顯示的即為Nginx主進(jìn)程號,例如: 6302 執(zhí)行以下命令即可使修改過的Nginx配置文件生效: kill -HUP 6302 或者用更簡便的方法: kill -HUP cat /usr/local/nginx/logs/nginx

33、.pid LVS負(fù)載均衡 LVS簡介 LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務(wù)器,是一個(gè)虛擬的服務(wù)器集群系統(tǒng)。 本項(xiàng)目在1998年5月由章文嵩博士成立,是中國國內(nèi)最早出現(xiàn)的自由軟件項(xiàng)目之一。 LVS集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請求均 衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動(dòng)屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu) 成一個(gè)高性能的、高可用的虛擬服務(wù)器。整個(gè)服務(wù)器集群的結(jié)構(gòu)對客戶是透明的,而且無需 修改客戶端和服務(wù)器端的程序。 一般來說,LVS集群采用三層結(jié)構(gòu),其主要組成部分為: A、負(fù)載調(diào)度器(load bala

34、ncer),它是整個(gè)集群對外面的前端機(jī),負(fù)責(zé)將客戶的請求發(fā)送到 一組服務(wù)器上執(zhí)行,而客戶認(rèn)為服務(wù)是來自一個(gè)IP地址(我們可稱之為虛擬IP地址)上的。 B、服務(wù)器池(server pool),是一組真正執(zhí)行客戶請求的服務(wù)器,執(zhí)行的服務(wù)有WEB、 MAIL、FTP和DNS等。 C、共享存儲(shared storage),它為服務(wù)器池提供一個(gè)共享的存儲區(qū),這樣很容易使得服 務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。 LVS負(fù)載均衡 LVS集群中實(shí)現(xiàn)的三種IP負(fù)載均衡技術(shù) 在已有的IP負(fù)載均衡技術(shù)中,主要有通過網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation)將 一組服務(wù)器構(gòu)成一個(gè)高

35、性能的、高可用的虛擬服務(wù)器,我們稱之為VS/NAT技術(shù)(Virtual Server via Network Address Translation)。在分析VS/NAT的缺點(diǎn)和網(wǎng)絡(luò)服務(wù)的非對稱性 的基礎(chǔ)上,我們提出了通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器的方法VS/TUN (Virtual Server via IP Tunneling),和通過直接路由實(shí)現(xiàn)虛擬服務(wù)器的方法VS/DR(Virtual Server via Direct Routing),它們可以極大地提高系統(tǒng)的伸縮性。 pulse 這是啟動(dòng)和 LVS 路由器相關(guān)的所有其它守護(hù)進(jìn)程的控制進(jìn)程。 lvs lvs 守護(hù)進(jìn)程被 pulse 調(diào)用

36、后就會(huì)在活躍 LVS 路由器上運(yùn)行。ipvsadm 該服務(wù)共享內(nèi)核中的 IPVS 路由表。 nanny nanny 監(jiān)視運(yùn)行在活躍 LVS 路由器上的守護(hù)進(jìn)程 LVS負(fù)載均衡 Keepalived在這里主要 用作RealServer的健康 狀態(tài)檢查以及DR調(diào)度 Master主機(jī)和BackUP 主機(jī)之間failover的實(shí) 現(xiàn) lvs keepalived LVS負(fù)載均衡 安裝ipvs( ipvsadm-1.25.tar.gz ) centos6.4(2)上安裝 創(chuàng)建一個(gè)連接文件,其命令為ln sv /usr/src/kernels/2.6.32-358.el6.i686 /u

37、sr/src/linux 。 注意一定要與當(dāng)前的運(yùn)行的內(nèi)核相一致,因?yàn)?usr/src/kernels目錄下可多個(gè)目錄。如果不創(chuàng)建這 個(gè)連接文件,在編譯時(shí)會(huì)出錯(cuò),從而不能繼續(xù)進(jìn)行安裝。(kenners下要有內(nèi)核文件,沒有的話 也會(huì)報(bào)錯(cuò),安裝kernel-devel-2.6.32-358.el6.i686.rpm) 解包,tar zxvf ipvsadm-1.25 編譯并安裝。 cd ipvsadm-1.25; make;make install 可執(zhí)行文件被安裝到/sbin/ipvsadm。 注意,編譯會(huì)報(bào)錯(cuò),是因?yàn)橛行┌鼪]有安裝,先安裝這些包再編譯即可通過(有的需要強(qiáng)制安裝 )。 檢驗(yàn)ipv

38、sadm是否被正確安裝,執(zhí)行ipvsadm 檢查當(dāng)前加載的內(nèi)核模塊,看是否存在ip_vs模塊 注1、只有執(zhí)行ipvsadm以后,才會(huì)在內(nèi)核加載ip_vs模塊。 注2、不能以查進(jìn)程的方式判斷ipvs是否運(yùn)行。 LVS負(fù)載均衡 LVS客戶端 centos6.4(2)和rhel5 (1)上均配置 lvs的客戶端指負(fù)載均衡器/轉(zhuǎn)發(fā)器(director)后面提供服務(wù)的真實(shí)機(jī)器,這里是直接路由模式 DR的配置方法。 操作系統(tǒng)是centos時(shí)的配置文件( rhel5與centos配置一樣) vi /usr/local/bin/lvs_real #!/bin/bash #d

39、escription : start realserver VIP=8 /etc/rc.d/init.d/functions case $1 in start) echo start LVS of REALServer /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 55 up echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 /proc/sys/net/ipv4/conf/lo/arp_announce echo 1 /proc/sys/net/i

40、pv4/conf/all/arp_ignore echo 2 /proc/sys/net/ipv4/conf/all/arp_announce ; stop) LVS負(fù)載均衡 /sbin/ifconfig lo:0 down echo close LVS Directorserver echo 0 /proc/sys/net/ipv4/conf/lo/arp_ignore echo 0 /proc/sys/net/ipv4/conf/lo/arp_announce echo 0 /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 /proc/sys/ne

41、t/ipv4/conf/all/arp_announce ; *) echo Usage: $0 start|stop exit 1 esac 這里對配置文件里重要的一些項(xiàng)進(jìn)行說明: a、 vip(virtual ip)。直接路由模式的vip必須跟服務(wù)器對外提供服務(wù)的ip地址在同一個(gè) 網(wǎng)段,并且lvs 負(fù)載均衡器和其他所有提供相同功能的服務(wù)器都使用這個(gè)vip. b、 vip被綁定在環(huán)回接口lo0:0上,其廣播地址是其本身,子網(wǎng)掩碼是 55。這與標(biāo)準(zhǔn)的網(wǎng)絡(luò)地址設(shè)置有很大的不同。采用這種可變長掩碼方式 把網(wǎng)段劃分成只含一個(gè)主機(jī)地址的目的是避免ip地址沖突。 c、 echo

42、 “1”,echo “2” 這段的作用是抑制arp廣播。如果不做arp抑制,將會(huì)有 眾多的機(jī)器向其他宣稱:“嗨!我是奧巴馬,我在這里呢!”,這樣就亂套了。 LVS負(fù)載均衡 lvs客戶端驗(yàn)證 lvs客戶端不必依賴負(fù)載均衡器就可以獨(dú)立運(yùn)行,只不過這種運(yùn)行對負(fù)載均衡沒有任何作用,當(dāng)然 也沒有任何副作用,所以我們把lvs客戶端配置完成后(配置文件就是一個(gè)shell腳本),可以單獨(dú) 運(yùn)行它,來檢驗(yàn)配置是否正確。 配置腳本寫好保存,給予腳本執(zhí)行權(quán)限。腳本啟停以start和stop這兩個(gè)參數(shù)來控制。首先,我們 來啟動(dòng)配置腳本,執(zhí)行命令 /usr/local/bin/lvs_real start ,接著我們來

43、檢查網(wǎng)絡(luò)的狀態(tài): 從輸出可以看出,lo0:0確實(shí)綁定了我們指定的vip地址。那么當(dāng)我們執(zhí)行 /usr/local/bin/lvs_real stop時(shí),vip應(yīng)當(dāng)從lo0:0接口卸載。我們來看看輸出是什么: vip從lo上消失了。 LVS負(fù)載均衡 故障隔離、失敗切換框架keepalived centos6.4(2)上安裝 安裝keepalived(keepalived-1.2.7.tar.gz) 解包 tar zxvf keepalived-1.2.7.tar.gz 切換目錄keepalived-1.2.7 配置 ./configure prefix=/usr/local/k

44、eepalive 因?yàn)閗eepalived 運(yùn)行在ipvs之上,因此這兩個(gè)軟件一定要安裝在一個(gè)系統(tǒng)里面。如果configure 操作能正常進(jìn)行,運(yùn)行完畢后將有如下的匯總輸出: LVS負(fù)載均衡 編譯和安裝 make ; make install 做成系統(tǒng)啟動(dòng)服務(wù)方便管理,service keepalived start 或stop就可以啟動(dòng)停止服務(wù) LVS負(fù)載均衡 keepalived 安裝驗(yàn)證 Keepalived安裝完成后,會(huì)在安裝目錄/usr/local/keepalived生成 bin,etc, share,sbin這4個(gè)目錄 。/usr/local/keepalive/etc/keep

45、alived目錄,它的下面包含一個(gè)完整的配置文件 keepalived.conf,以及一些單獨(dú)的配置樣例文件。 值得注意的是,keepalived的啟動(dòng)過程并不會(huì)對配置文件進(jìn)行語法檢查,就算沒有配置文件, keepalived的守護(hù)進(jìn)程照樣能夠被運(yùn)行起來。在默認(rèn)狀態(tài)下即不指定配置文件的位置 keepalived先查找文件 /etc/keepalived/keepalived.conf ,如果為了省事,可以手動(dòng)創(chuàng)建這個(gè) 文件(一般都會(huì)在這個(gè)目錄創(chuàng)建),然后在這個(gè)文件里書寫規(guī)則,來達(dá)到控制keepalived運(yùn)行的 目的。 這里我們先來試試默認(rèn)情況,即沒有配置文件下運(yùn)行keepalived。 執(zhí)行

46、命令 /usr/local/keepalived/sbin/keepalivedD ,然后來檢查keepalived運(yùn)行后的狀況。 做成系統(tǒng)啟動(dòng)服務(wù)方便管理,service keepalived start 或stop就可以啟動(dòng)停止服務(wù) LVS負(fù)載均衡 查看進(jìn)程 ps aux | grep keepalived ,其輸出為: Keepalived正常運(yùn)行時(shí),共啟動(dòng)3個(gè)進(jìn)程(stop后進(jìn)程消失),其中一個(gè)進(jìn)程是父進(jìn)程,負(fù)責(zé)監(jiān) 控其子進(jìn)程;一個(gè)是vrrp子進(jìn)程;另外一個(gè)是checkers子進(jìn)程。 查看內(nèi)核模塊,ip_vs 模塊應(yīng)該被加載到內(nèi)核空間。 lsmod | grep ip_vs 。 查看系

47、統(tǒng)日志tail f /var/log/messages。因?yàn)槲以趩?dòng)keepalived是使用了選項(xiàng) D ,這將詳細(xì) 的打印日志消息。 做成系統(tǒng)啟動(dòng)服務(wù)方便管理,service keepalived start 或stop就可以啟動(dòng)停止服務(wù) LVS負(fù)載均衡 負(fù)載均衡實(shí)現(xiàn)(lvs+keepalived) 服務(wù)器集群場景 一共2個(gè)服務(wù)器,1個(gè)服務(wù)器為lvs負(fù)載均衡器,2個(gè)服務(wù)器為真實(shí)服務(wù)器,其中一臺為負(fù)載均衡器 和真實(shí)服務(wù)器共用。 真實(shí)服務(wù)器centos 2,redhat 1,負(fù)載均衡器安裝在42上,VIP為8 編寫lvs客戶端配置腳本 參見上

48、文lvs客戶端 配置文件keepalived.conf vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs router_id LVS_DEVEL vrrp_sync_group VGM group VI_1 LVS負(fù)載均衡 vrrp_instance VI_1 state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 5 authentication auth_type PASS auth_p

49、ass 1111 virtual_ipaddress 8 # setting port 8080 forward virtual_server 8 8080 delay_loop 6 lb_algo rr lb_kind DR # persistence_timeout 20 protocol TCP real_server 1 8080 weight 5 TCP_CHECK connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8080 real_server

50、 2 8080 weight 5 TCP_CHECK connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8080 LVS負(fù)載均衡 負(fù)載均衡服務(wù)的啟用和驗(yàn)證 保證所有服務(wù)器的網(wǎng)絡(luò)服務(wù)正常;保證lvs客戶端的啟用和驗(yàn)證; 檢查keepalived.conf配置是否正確,啟用,執(zhí)行命令 /usr/local/keepalived/sbin/keepalived D (或直接service keepalived start),然后我們查看系統(tǒng)進(jìn)程ps aux | grep keepalived,看是否

51、 是3個(gè)keepalived進(jìn)程(另外一個(gè)反映keepalived正常運(yùn)行狀態(tài)的地方是網(wǎng)絡(luò)接口vip的啟用,通 過執(zhí)行ip add 即可看見vip已經(jīng)被綁定在制定的網(wǎng)絡(luò)接口) keepalived配置文件錯(cuò)誤也會(huì)正常啟動(dòng)keepalived服務(wù),而且進(jìn)程正常,所以配置文件一定要注 意。 在本地計(jì)算機(jī)的瀏覽器地址欄輸入8:8080/test/index.jsp ,看網(wǎng)站默認(rèn)頁是否能 正常訪問; LVS負(fù)載均衡 登錄主負(fù)載均衡器,察看轉(zhuǎn)發(fā)情況,執(zhí)行不帶任何選項(xiàng)的 ipvsadm指令,即可察看tcp連接情況; 如果想知道當(dāng)前測試機(jī)的訪問請求被轉(zhuǎn)發(fā)到那個(gè)服務(wù)器去了,可以在

52、ipvsadm命令后帶一個(gè)選項(xiàng), 其完整形式為:ipvsadm -lcn | grep 9 (后面ip為訪問用戶的ip); 通過手工的方法,使真實(shí)服務(wù)器提供的服務(wù)失效,然后再從客戶端發(fā)起訪問請求,檢驗(yàn)lvs提供的 服務(wù)是否可用;停止42tomcat服務(wù):訪問都會(huì)被轉(zhuǎn)發(fā)到41上,且lvs列表刪除42,重啟42服務(wù), 列表加上,訪問轉(zhuǎn)發(fā)正常到42,停止41一樣。 LVS負(fù)載均衡 狀態(tài)監(jiān)控nagios 開源的nagios作為監(jiān)控平臺,可供nagios監(jiān)控的對象很多,對lvs負(fù)載均衡環(huán)境而言,我們選取存 活檢查及服務(wù)狀態(tài)作為監(jiān)控對象,就可以清晰地了解lvs負(fù)載均衡環(huán)境的運(yùn)行狀況。把它具體化, 可分為: A、 負(fù)載均衡器及真實(shí)服務(wù)器的存活檢查。只有這些服務(wù)器運(yùn)行正常,才可能有其他依賴服務(wù)。 B、 vip的存活檢查。一般情況下,啟用了lvs環(huán)境后,是可以用ping的方式檢查vip的。 C、 真實(shí)服務(wù)器服務(wù)狀態(tài)檢查。 D、 vip對應(yīng)的服務(wù)狀態(tài)檢查。一般通過check_tcp加端口號的形式實(shí)現(xiàn)。如果web集群,可以以 check_http!url的方式更精確的檢查。 安裝nagios 在r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論