爲了實現服務的高可用和可擴展,在網上找了幾天的資料,如今終於配置完畢,現將心得公佈處理,但願對和我同樣剛入門的菜鳥能有一些幫助。html
咱們不只要知其然,並且要知其因此然,因此先給你們準備一些理論知識課,這樣對之後的應用將會事半功倍。linux
請閱讀做者章文嵩博士本身的研究報告,共計4部分,看完後對集羣和LVS就有了初步的瞭解,不懂時能夠翻翻。web
LVS項目介紹http://www.linuxvirtualserver.org/zh/lvs1.htmlvim
LVS集羣的體系結構http://www.linuxvirtualserver.org/zh/lvs2.htmlcentos
LVS集羣中的IP負載均衡技術http://www.linuxvirtualserver.org/zh/lvs3.html瀏覽器
LVS集羣的負載調度 http://www.linuxvirtualserver.org/zh/lvs4.htmltomcat
Keepalived原理與實戰精講 http://zhumeng8337797.blog.163.com/blog/static/100768914201191762253640/bash
百度百科給出的 http://baike.baidu.com/link?url=X3SzN3bJWjW_PkWC6GB2MTs5KhVmxBAxnCRjs9W7-IARDiHloZ_oRWj17BEz0kY3服務器
相信讀了以上的理論知識後,已經對集羣的實現原理有了大概的瞭解,那接下來咱們就開始動手吧。網絡
咱們會用到4個服務器,橫向分2層:
第1層是LVS服務器(1個主,1個從;從能夠多個)用來轉發請求,須要安裝ipvsadm和keepAlived;第2層是提供具體服務的服務器(表中用了2個;固然也能夠是多個,現實的應用會上百臺。),安裝的是具體的服務,這裏咱們安裝的是TOMCAT。
主機環境以下:
192.168.10.100 LVS_VIP(VIP:Virtual IP)
192.168.10.140 LVS_Master
192.168.10.141 LVS_Backup
192.168.10.142 WEB1_RealServer
192.168.10.143 WEB2_RealServer
克隆:咱們先安裝配置好一層的一個服務器,其餘服務器使用克隆方式。
版本是10.0.1,具體的下載和安裝教程請瀏覽百度經驗:http://jingyan.baidu.com/article/c843ea0b754a7977931e4aa7.html
1)版本是CentOS 6.5官方正式版64位,下載地址:http://www.centoscn.com/CentosSoft/iso/2013/1205/2196.html
2)在虛擬機中安裝CentOS的教程請參考:http://www.jb51.net/os/78318.html,說的已經很清楚了;注意一個分區環節:
教程中的第13步,由於沒有分過區,因此不知道怎麼增長分區了,後來才弄明白,如圖:
點edit進去後,而後在裏面點擊ADD增長/home分區便可;
3)安裝完畢後,改虛擬機名爲LVS_Master,而後再克隆2個虛擬機服務器,一個虛擬機作原始備份,一個作WEB1_RealServer。
如何克隆?請參考:http://blog.sina.com.cn/s/blog_9ba89b9901019bn9.html;
只要按照以下步驟一步一步來,我敢確定一次成功!
1)開啓剛剛建好的虛擬機,此時應該已經設置好系統的登陸帳號和密碼了。好的,登陸系統,打開終端:
在終端中輸入ifconfig,而後回車,會看到本服務器的IP地址信息,如圖:(若是想了解其餘的CentOS命令,請參考http://www.jb51.net/os/RedHat/60044.html)
2)因爲咱們的操做所有是用命令行執行的,在虛擬機與本機中切換確實不太方便,給你們準備了一個簡單好用的鏈接虛擬機中CentOS系統的工具putty,下載地址:
http://download.csdn.net/detail/tengyuantuohai/1276306
打開下載的putty.exe,如圖填寫好服務器的IP地址後點擊OPEN,選擇「是」,打開putty的應用頁面:
在putty的終端輸入root回車(root爲超級管理員帳號),輸入密碼(注意輸入密碼時頁面是不會顯示的),回車登陸
3)安裝IPVSADM
知識點:IPVSADM理解爲IPVS管理工具;LVS(Linux Virtual Server)的核心爲IPVS(IP Virtual Server),從Linux內核版本2.6起,IPVS模塊已經編譯進了Linux內核。
使用yum命令進行安裝,系統會選擇最適合內核版本的ipvsadm
4)防火牆
爲了測試方便,咱們直接關閉防火牆,在實際使用中開啓須要的端口便可(具體配置可參考:http://www.cnblogs.com/rockee/archive/2012/05/17/2506671.html)
5)KeepAlived 的安裝
知識點:KeepAlived是一個路由軟件,它主要的目的是讓咱們經過簡單的配置,實現高可用負載均衡,固然負載均衡依賴於Linux虛擬服務器(IPVS)的內核模塊,其高可用性使用VRRP協議來實現,KeepAlived不只會檢測負載均衡服務器池中每臺機器的健康情況並通知IPVS將非健康的機器從池中移除掉;同時它還能對負載均衡調度器自己實現健康狀態檢查,當主負載均衡調度器出現問題時,備用負載均衡調度器頂替主進行工做。
逐條執行以下命令,執行的緣由暫不解釋,實際就是須要這些組件,安裝便可。
執行完最後一條時,終端應該顯示爲下圖這樣,若是不是請不要繼續,本身返回來看下有沒有哪裏執行有誤;
若是是上圖這樣,恭喜你已經成功了一大半,剩下的就簡單了!
繼續執行
OK,KeepAlived安裝完畢,而後進行配置。
6)KeepAlivde的配置
The First:打開IP Forward 功能(LVS現有三種負載均衡規則都須要打開此功能,若是不打開此功能,下面的配置配得再好都無濟於事。)
打開後修改裏面「net.ipv4.ip_forward = 1」,結果以下圖:
(修改經常使用命令:i鍵表示要插入修改,修改好後摁ESC,而後輸入":wq",保存退出,其餘命令參考:http://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845268.html)
修改好後保存退出,執行以下命令使設置當即生效
第二步:KeepAlivde的配置
配置文件在這個位置: /etc/keepalived/keepalived.conf
啓動KeepAlived時,它默認會去/etc/keepalived下面找它的配置文件,因此上面命令中咱們已經將這個配置文件複製過來了。如今進行修改:
具體的參數詳情請參考:http://zhumeng8337797.blog.163.com/blog/static/100768914201191762253640/
下面是我配置好的文件內容
以上就完成了keepAlived的配置,下面進行啓動
查看進程
結果如圖
Keepalived正常運行時,共啓動3個進程,其中一個進程是父進程,負責監控其子進程;一個是vrrp子進程;另一個是checkers子進程。
若是此時只看到2個進程,請從安裝keepalived的步驟從新執行。
查看下虛擬IP是否已經加上(重要)
如圖:
說明虛擬IP已經自動配置上了。
還有3個命令在先列示下,並不用執行
顯示集羣中服務器ip信息:ipvsadm -ln
查看日誌:tail -f /var/log/messages
查看請求轉發狀況:ipvsadm -lcn | grep 虛擬IP
7)至此,LVS_MASTER服務器已經配置好並啓動了,接下來咱們配置web服務器。
1)打開虛擬機WEB1_RealServer;
2)配置虛擬IP啓動腳本
在文件中輸入以下腳本:
3)安裝配置TOMCAT
我測試用的是TOMCAT6
啓動後如圖:
關閉防火牆:
打開瀏覽器:http://192.168.10.142:8080
會看到TOMCAT的熟悉頁面了。
爲了測試負載均衡,咱們將這個頁面改下,以更好的標識這個網頁是本服務器的
Tomcat6安裝目錄位於/usr/share/tomcat6,因此咱們要編輯tomcat下的webapps/ROOT/index.html這個文件。
將以下文本寫入index.html,而後打開瀏覽器:http://192.168.10.142:8080,已經改變:
4)啓動虛擬IP的腳本
運行後會看到網絡有了一個虛擬IP,如圖:
5)去LVS_MASTER服務器的終端查看下ipvsadm,查看已經鏈接上了WEB1服務器,運行命令
結果如圖:
已經能夠看到有服務器加入進來了。
此時咱們訪問網頁http://192.168.10.100,出現界面顯示web1 192.168.10.142;或者使用命令行測試轉發狀況,以下:
運行結果:
OK,至此已經能實現負載均衡了,接下來咱們經過克隆實現多個主機的試驗。
1)從LVS_MASTER克隆一個LVS_BACKUP服務器,而後修改其中的參數,MASTER與BACKUP配置僅三處不一樣:global_defs中的router_id、vrrp_instance中的state、priority
(注意keepAlived的配置文件中有一個網卡設備,虛擬機的網卡設備多是不同的,有的是eth0,有的是eth1,因此也是要改動的,不然從服務器的服務器頗有可能服務不正常)
配置好的以下文:
2)從WEB1_RealServer克隆一個WEB2_RealServer,將tomcat的index.html文件改成web2 192.168.10.143。(這裏的IP是我測試的,您的能夠自定義)
啓動realserver.sh腳本。
3)OK,至此咱們已經虛擬出2個LVS服務器,一對主從;2個WEB服務器,web1和web2。接下來咱們進行測試,看可否知足咱們的初始需求。
開啓每一個服務器的相關服務,關閉防火牆,咱們開始進行測試。
顯示集羣中服務器ip信息:ipvsadm -ln
查看日誌:tail -f /var/log/messages
查看請求轉發狀況:ipvsadm -lcn | grep 虛擬IP
LVS_MASTER中的IP信息
LVS_BACKUP服務器的IP信息
2)如今停掉LVS_MASTER的keepAlived服務,看LVS_BACKUP是否能夠自動加上虛擬IP地址,而且開始轉發請求。
(注意keepAlived的配置文件中有一個網卡設備,虛擬機的網卡設備多是不同的,有的是eth0,有的是eth1,因此也是要改動的,不然從服務器的服務器頗有可能服務不正常)
LVS_MASTER如圖:
LVS_BACKUP服務器截圖:
切換很快,訪問網頁:http://192.168.10.100:8080也能正常顯示。
3)、恢復主服務器的keepAlived服務後,主服務器馬上接替了從服務器的工做,就不作截圖了。和第1)個正常效果是同樣的。
4)、測試WEB服務器,看可否正常提供服務。先斷掉WEB1,看下效果。
ipvsadm中的服務器列表,已經去掉了WEB1服務器,訪問網頁也只能訪問到WEB2服務器了。
5)開啓WEB1,關掉WEB2。測試正常。
通過不斷的測試,終於完成了這篇稿子,望你們可以指正。還有一點就是不少時候都是配置文件中的一些小毛病形成的,好比:
一、keepAlived中的通知郵箱好像必需要寫,不然不正確;
二、keepAlived中的網卡設備要注意,按照服務器的實際狀況填寫;
三、使用時,必要的端口要打開,或者關掉防火牆。不然有事不提供服務;
四、一些命令行的執行,少一些參數執行就可能會有一些問題。
五、LINUX系統的目錄結構也頭疼,要不斷的熟悉,不然也讓你故意弄混了。
好了,你們若是有什麼建議或者問題,歡迎留言。