利用heartbeat v1配置簡單的web高可用集羣

信息層實現方式(只負責把心跳,集羣事務傳遞給上層):
   Heartbeat
   keepalived
   ultramonkey
   Corosync(OpenAIS)
 
資源間的關係:
 
位置約束:定義服務更傾向於在哪個結點上運行(資源粘性)
    -inf 負無窮大
    inf  正無窮大
    inf和-inf遇到一塊時(例如IP inf,httpd -inf),以-inf爲準

順序約束:定義資源間的依賴關係,被依賴的資源要先啓動

排列約束:定義資源間的互斥或者互相吸引的關係,多個資源必須運行在一個結點上,或者某些資源一定不能運行在同一個結點上
 
RA(Resource Agent)類型(實現服務啓動、停止的服務腳本):
  Heartbeat V1
  LSB:符合linux標準庫的腳本
  OCF(Open Cluster Framework):開放集羣框架(與LSB相比,能接受參數)
  STONITH:互相監控運行狀態,關鍵時刻能夠實現隔離效果
 
資源類型:
 primitive:某個資源只能運行在一個結點上
 group:一個組內的資源必須運行在一個結點上
 clone:需要同時運行在多個結點上
 Master-slave:主從模型
 
CRM應用程序:
 Heartbeat V1
 Heartbeat V2(CRM)
 Heartbeat V3 + Pacemaker(資源管理器) + Cluster-glue
 
 心跳信息通過主機名進行傳遞的方式:
  1、 mcast 組播(多播)
  2 、bcast 廣播
  3 、ucast 單播
高可用集羣的配置(heartbeat v1) :
 
配置前注意事項:
 1、各結點之間最好配置好雙機互信(不是必須的)
 2、各結點主機時間要同步,相差間隔不能超過1s(可以使用ntp進行相關配置)
 3、定義爲資源的服務不能開機啓動(或者不能在高可用集羣服務啓動之前啓動)
 4、多個結點配置文件必須保持一致
 5、啓動或者停止服務要遠程操作(ssh node 'command')
IP地址分配:
 vip:192.168.0.66
 node1:192.168.0.223
 node2:192.168.0.226
 DNS使用/etc/hosts文件進行配置
 
 配置雙機互信:
  [root@rs1 ~]# ssh-keygen -t rsa -P ''
  [root@rs1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@rs2
  rs2上按同樣方法配置雙機互信
  [root@rs1 ~]# date;ssh rs2 'date'查看兩個結點的時間是否同步,如若不同步,需配置爲同步
  [root@rs2 i386]# rpm -qpi heartbeat-pils-2.1.4-10.el5.i386.rpm 安裝軟件包之前查看安裝包信息
  [root@rs2 i386]# yum -y --nogpgcheck localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
  rs2上執行同樣操作
  [root@rs1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/(配置文件路徑)
   ha.cf:heartbeat主配置文件
   haresources:資源管理器的配置文件
   outhkeys:認證密鑰(權限必須是600或者400)
  [root@rs1 heartbeat-2.1.4]# cp ha.cf haresources authkeys /etc/ha.d/ 
  [root@rs1 ha.d]# chmod 600 authkeys 
  [root@rs1 ha.d]# vim authkeys
  修改配置文件如下:
  auth 3
  #1 crc
  #2 sha1 HI!
  3 md5 Hello! 
(啓用任意一種加密算法即可)
  [root@rs1 ha.d]# dd if=/dev/urandom count=1 bs=512 | md5sum 生成隨機數並加密
  用生成的密鑰把authkeys裏的md5後的字符串替換掉  
  
  [root@rs1 ha.d]# vim ha.cf 編輯配置文件,根據實際需要修改相關參數和指令
  配置文件中部分指令(選項)的作用
  logfacility     local0 定義日誌文件保存在messages中
  #       keepalive: how long between heartbeats?多長時間傳遞一次心跳信息
  #initdead 120定義剛啓動集羣的時候延長假設故障時間 
  auto_failback on 主結點上線時服務是否主動返回
  #node   kathy 定義集羣裏都有哪些結點,此處主機名必須使用uname -n的名字 
   node    www.gao.com 定義集羣中的結點
   node    www2.gao.com
  #ping 192.168.0.221 結點都能ping通的仲裁設備(一般爲網關)
  #ping_group group1 10.10.10.254 10.10.10.253指定多個ping結點
  #deadping 30 ping結點故障容錯時間
  #compression    bz2 報文傳輸之前按bz2方式壓縮
  #compression_threshold 2 壓縮門檻(單位K,小於2k不壓縮)
 
  在另外一臺主機上建立文件服務器,兩結點掛載文件作爲網頁文件
  [root@www2 ~]# vim /etc/exports
  /www/htdocs     192.168.0.0/24(rw)
  [root@www2 ~]# useradd -r -u 48 webusers(建立web服務映射的系統用戶)
  [root@www2 ~]# setfacl -m u:webusers:rwx /www/htdocs(賦予該系統用戶共享文件的訪問權限)
  在結點上掛載共享文件
  [root@rs1 ~]# mount -t nfs 192.168.0.222:/www/htdocs /var/www/html
  [root@rs1 ~]# umount /var/www/html/集羣啓動之前要卸載
  
  [root@rs1 ha.d]# vim haresources
  添加如下內容
 rs1.gao.com     192.168.0.66/24/eth0/192.168.0.255 Filesystem::192.168.0.222:/www/htdocs::/var/www/html::nfs httpd
 定義主結點      VIP            掩碼 別名定義的網卡 該網段的廣播地址               文件系統                            web服務
   資源接受參數:使用::隔開
  [root@rs1 ha.d]# scp -p authkeys haresources ha.cf rs2:/etc/ha.d/
  [root@rs1 ha.d]# service heartbeat start 啓動heartbeat服務
  [root@rs1 ha.d]# ssh rs2 'service heartbeat start'
  
  [root@rs1 ha.d]# cd /usr/lib/heartbeat/(hb_standby腳本路徑)
  [root@rs1 heartbeat]# ./hb_standby把當前結點轉換爲背結點
打開瀏覽器訪問網頁,測試效果
 
(僅供參考)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章