heartbeatV1+nfs實現高可用httpd

    隨著互聯網技術的不斷發展,Web應用也越來越普遍,Web服務器的無故障工作時間就顯得尤重要,但由于各種各樣的原因,一臺服務器并不能保證永遠不出問題的運行,此時就需要一種機制來實現多臺服務器共同為相同的來務功能提供服務,以確保任意一臺服務器宕機后,不會影響其所承載的業務的訪問。  

    下面演示使用HA工具heartbeatV1來實現Web應用的高可用性。

    注:由于條件所限,只能以一臺NFS服務器做為后端的存儲設備,其實這本身就一個單點故障風險點,在生產環境中應該有更加完善的存儲解決方案。

    一、拓撲圖

blob.png

    二、環境準備

        1、設置/etc/hosts

            為保證能夠正常的解決到各節點的主機名,需要設置/etc/hosts文件,當然也可以設置DNS。

1.png            另外兩臺節點也做同樣的設置。

        2、設置節點間的相互信任,即ssh密鑰

2.png

        將密鑰復制到另外兩個節點:

3.png

        在另外node2和node3上做同樣操作。

        3、同步各節點的時間

        4、下載heartbeat程序包 

            可以到下面的地址進行下載:http://down.51cto.com/data/1872114

     三、安裝heartbeat程序

        安裝heartbeat程序前需要先安裝一些依賴的軟件,請先自行配置好epel源及base yum源。

4.png

        hearbeat程序需要安裝如下圖所示的三個RPM包即可。

5.png

        在另外兩個節點上做同樣的操作。

    四、配置heartbeat

        將配置文件的模塊復制到/etc/ha.d目錄中。

5.png

        1、配置ha.cf文件

6.png

        ha.cf配置文件部分參數說明:

            autojoin none:集群中的節點不會自動加入;

            logfile /var/log/ha-log:heartbeat的日志存放位置;

            keepalive 2:指定心跳使用間隔時間為2秒(即每兩秒鐘發送一次廣播);

            deadtime 30:指定備用節點在30秒內沒有收到主節點的心跳信號后,則立即接管主節點的服務資源;

            warntime 10:指定心跳延遲的時間為十秒。當10秒鐘內備份節點不能接收到主節點的心跳信號時,就會往日志中寫入一個警告日志,但此時不會切換服務;

            initdead 120:在某些系統上,系統啟動或重啟之后需要經過一段時間網絡才能正常工作,該選項用于解決這種情況產生的時間間隔。取值至少為deadtime的兩倍;

            udpport 694:設置廣播通信使用的端口,694為默認使用的端口號。

            baud    19200:設置串行通信的波特率       

            bcast   eth0:Linux  指明心跳使用以太網廣播方式,并且是在eth0接口上進行廣播;

            mcast eth0 225.0.0.1 694 1 0:采用網卡eth0的Udp多播來組織心跳,一般在備用節點不止一臺時使用;        ucast eth0 192.168.1.2:采用網卡eth0的udp單播來組織心跳,后面跟的IP地址應為雙機對方的IP地址; 

                bcast、ucast和mcast分別代表廣播、單播和多播,是組織心跳的三種方式,任選其一即可。

            auto_failback on:用來定義當主節點恢復后,是否將服務自動切回;

            stonith baytech /etc/ha.d/conf/stonith.baytech:stonith的主要作用是使出現問題的節點從集群環境中脫離,進而釋放集群資源,避免兩個節點爭用一個資源的情形發生。保證共享數據的安全性和完整性;

            watchdog /dev/watchdog:該選項是可選配置,是通過Heartbeat來監控系統的運行狀態;

            ping 192.168.2.1:選擇ping的節點,ping 節點選擇的越好,HA集群就越強壯,可以選擇固定的路由器作為ping節點,但是最好不要選擇集群中的成員作為ping節點,ping節點僅僅用來測試網絡連接;

            ping_group group1 192.168.12.120 192.168.12.237:類似于ping,ping一組ip地址。

        2、配置authkeys文件

            此文件用于配置認證相關的信息,文件權限必須為600。

            先生成一個隨機碼:

1.png

            在/etc/ha.d/authkeys文件中添加如下內容:

2.png

            注意兩行中的數字1是相對應的,如果修改為其它數字,兩行要同時修改。

            修改文件的權限:

3.png

        3、在haresources文件中添加資源

1.png

           注意:node1.test.com必須與uname -n所顯示內容相同,192.168.2.100為VIP,即客戶端訪問的IP地址,httpd即指明高可用所針對的服務。

        4、將上面配置的三個文件復制到node2和node3上的相同目錄中

2.png

3.png

        5、在三個節點分別安裝httpd服務,并且在分別建立三個主頁,主頁內容分別為三個節點的主機名,并且啟動httpd服務,測試是否可以訪問頁面的內容;主要是為了用于測試故障轉移的效果,此操作就不做演示了。

        6、停止httpd服務,啟動heartbeat服務

4.png

6.png

        7、驗證

            查看VIP是否啟動

7.png

8.png

9.png

        測試Web應用 

10.png

        將node1下線后,自動切換到node2節點上

11.png

        將node1與node2同時下線,node3就頂替了下來;

12.png

        ha.cf中的默認設置在node1上線后會自動恢復主節點的身份,請自行驗證。

    五、設置NFS共享目錄

        經過上面的設置,heartbeat已經可以正常工作了,下面我們來使用NFS共享來為httpd服務提供主頁面。

        1、配置NFS服務器

            如果服務器上沒有nfs軟件請先安裝nfs-utils軟件。

            修改配置文件:

1.png

            啟動nfs服務:

2.png

            本地驗證:

3.png

        2、在共享目錄中提供主頁

4.png        3、在節點服務器上停止heartbeat服務,并啟動httpd服務

5.png

        4、掛載NFS共享目錄,并訪問測試

6.png

            由于是最小化安裝,在掛載nfs時會報上面的錯誤,安裝showmount命令后即可解決。

7.png

            使用curl命令來測試,可以訪問,如下圖所示:

8.png

            在其它節點上也可以按照上面的操作進行測試,確保nfs共享目錄可以被掛載。

    六、修改haresources配置文件

        修改haresources配置文件,使heartbeat能夠自動掛載nfs共享目錄。

7.png

    七、停止httpd服務、卸載nfs共享目錄并且啟動heartbeat服務

        service httpd stop 

        umount /var/www/html

        service heartbeat start

        下面是heartbeat啟動后的結果,可以看到nfs目錄已經被自動掛載了。

8.png1.png

    八、將haresources文件復制到其它節點服務器上

2.png

    九、驗證

        訪問192.168.2.100可以訪問到共享目錄中創建的頁面,并且即使有節點服務器宕機了,也不會影響頁面的訪問,請自行驗證。

4.png

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/5565

(0)
petmasterpetmaster
上一篇 2015-06-25
下一篇 2015-06-26

相關推薦

  • TCP三次握手與四次揮手

                                                      &nbsp…

    2017-09-04
  • N22-第十四周作業

    系統的INPUT和OUTPUT默認策略為DROP; ~]# iptables -P INPUT DROP ~]# iptables -P OUTPUT DROP 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的…

    Linux干貨 2017-03-15
  • Linux中的文本處理工具—sed

    sed 處理文本工具 一、概述   Stream EDitor,行編輯器    sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文…

    Linux干貨 2016-08-10
  • 馬哥教育網絡班21期+第11周課程練習

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 單向加密:只能加密,不能解密,提取數據指紋(特征碼),來保證數據的完整性,如上圖的第二步,單向加密的協議有MD5,SHA等 非對稱加密:公鑰和私鑰成對出現,私鑰必須本機器保存,用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然,數字簽名是私鑰加密特征碼,如上圖的第三步;實現對稱秘鑰交換,如上圖第五步 對稱…

    Linux干貨 2016-08-15
  • ?磁盤管理、MBR、GPT、分區工具、文件系統、常見分區掛載

    磁盤管理{磁盤結構;MBR;GPT;分區工具;文件系統;分區掛載;}

    Linux干貨 2016-08-29
欧美性久久久久