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 10:12
下一篇 2015-06-26 10:11

相關推薦

  • sed工具 vim編輯器

    sed工具:    用法:           sed [option]… 'script' inputfile…      常用選項:           &nbs…

    Linux干貨 2016-08-12
  • Linux下history命令的介紹

    Linux下history命令的介紹 一、用處 對于Linux而言,命令是人機交互的重要方式,而查看命令歷史可以幫助我們了解系統的使用狀態、增強安全性也可以調用歷史達到快捷操作的目的。 二、命令行歷史   執行過的命令會被存入緩存,當正常退出shell時,緩存中的命令會被寫入文件中并保存在用戶下的隱藏文件文件.bash_history中。當用戶登陸…

    Linux干貨 2016-07-29
  • 第七周作業

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;        (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [ro…

    2017-04-05
  • iptables基礎詳解

    一.iptables基礎認知二.iptables使用格式  一.iptables簡介   1.Iptabels是與Linux內核集成的包過濾防火墻系統,幾乎所有的linux發行版本都會包含Iptables的功能。如果 Linux 系統連接到因特網或LAN、服務器或連接 LAN 和因特網的代理服務器, 則Iptables有利于在 …

    2017-05-03
  • loganalyzer——日志分析工具

    Loganalyzer是一款syslog日志和其他網絡事件數據的Web前端。它提供了對日志的簡單瀏覽、搜索、基本分析和一些圖表報告的功能。數據可以從數據庫或一般的syslog文本文件中獲取,所以LogAnalyzer不需要改變現有的記錄架構?;诋斍暗娜罩緮祿?,它可以處理syslog日志消息,Windows事件日志記錄,支持故障排除,使用戶能夠快速查找日志數…

    Linux干貨 2016-10-18
  • 第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; [root@unclez ~]#  grep -E "^[[:space:]]+.*" /boot/grub/grub.cong 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟…

    Linux干貨 2016-12-31
欧美性久久久久