一 前期準備 1.1 依賴準備 編譯安裝需要依賴的包,如gcc等: yum -y install gcc gcc-c++ make glibc kernel-devel kernel-headers autoconf automake libtool glib2-devel libxml2 libx ...
一 前期準備
1.1 依賴準備
編譯安裝需要依賴的包,如gcc等: yum -y install gcc gcc-c++ make glibc kernel-devel kernel-headers autoconf automake libtool glib2-devel libxml2 libxml2-devel libxslt-devel libtool-ltdl-devel wget asciidoc libuuid-devel bzip2 bzip2-devel e2fsprogs-devel net-snmp1.2 環境準備
防火牆及SELinux關閉; 時鐘同步,ntp配置; 相關主機名配置,如下所示:1 # hostnamectl set-hostname master1.yewu.com 2 # hostnamectl set-hostname master2.yewu.com #分別配置主機名 3 # /etc/hosts 4 127.0.0.1 localhost.localdomain localhost 5 #public ip #業務host解析 6 192.168.88.100 master1.yewu.com master1 7 192.168.88.101 master2.yewu.com master2 8 9 #private ip #Heartbeat心跳解析 10 192.168.77.100 master1-private.ha.com master1-private 11 192.168.77.101 master2-private.ha.com master2-private提示:內網環境為了方便解析,在所有節點分別對業務和用於檢測心跳的地址添加解析。
1 [root@master1 ~]# ifconfig |grep eth[0-9] -A1 #確認相應IP地址
配置互免秘鑰:(建議項)
1 [root@master1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' 2 [root@master1 ~]# ssh-copy-id -i ./.ssh/id_rsa.pub [email protected] 3 [root@master2 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' 4 [root@master2 ~]# ssh-copy-id -i ./.ssh/id_rsa.pub [email protected]
二 正式安裝Heartbeat
2.1 下載相應包
所有相關包見:http://linux-ha.org/wiki/Download1 [root@master1 ~]# wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2 2 [root@master1 ~]# wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2 3 [root@master1 ~]# wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz提示:master2節點參考以上操作即可。
2.2 安裝cluster-glue
1 [root@master1 ~]# groupadd haclient 2 [root@master1 ~]# useradd -g haclient hacluster 3 [root@master1 ~]# tar xf 0a7add1d9996.tar.bz2 4 [root@master1 ~]# mv Reusable-Cluster-Components-glue--0a7add1d9996/ cluster_glue 5 [root@master1 ~]# cd cluster_glue/ 6 [root@master1 cluster_glue]# ./autogen.sh 7 [root@master1 cluster_glue]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
1 [root@master1 cluster_glue]# make && make install
提示:heartbeat依賴於cluster-glue,因此必須先安裝cluster-glue;master2節點參考以上操作即可。
2.3 安裝Resource Agents
1 [root@master1 ~]# tar xf v3.9.6.tar.gz 2 [root@master1 ~]# cd resource-agents-3.9.6/ 3 [root@master1 resource-agents-3.9.6]# ./autogen.sh 4 [root@master1 resource-agents-3.9.6]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
1 [root@master1 resource-agents-3.9.6]# make && make install
提示:master2節點參考以上操作即可;
若提示configure: error: C compiler cannot create executables或類似Cluster Glue等so文件未找到,可通過以下方式解決:
1 ln -s /usr/local/heartbeat/lib/* /lib/ 2 ln -s /usr/local/heartbeat/lib/* /lib64/ #將生成的動態庫,添加快捷方式到/lib下
2.4 安裝Heartbeat
1 [root@master1 ~]# tar xf 958e11be8686.tar.bz2 2 [root@master1 ~]# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib" 3 [root@master1 ~]# cd Heartbeat-3-0-958e11be8686/ 4 [root@master1 Heartbeat-3-0-958e11be8686]# ./bootstrap 5 [root@master1 Heartbeat-3-0-958e11be8686]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
1 [root@master1 Heartbeat-3-0-958e11be8686]# make && make install
提示:master2節點參考以上操作即可;
若提示configure: error: in `/root/Heartbeat-3-0-958e11be8686',可通過以下方式解決,然後再次configure即可。:
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
make
提示:若提示glue_config.h:105:1: error: “HA_HBCONF_DIR” redefined,是由於glue和heartbeat的版本不相容引起,可通過以下方式解決:
刪除或註釋掉/usr/local/heartbeat/include/heartbeat/glue_config.h的最後一行
錯誤2: gmake[1]: *** [strlcpy.lo] Error 1
解決:將 /usr/local/heartbeat/include/heartbeat/glue_config.h的105行 #define HA_HBCONF_DIR "/usr/local/heartbeat/etc/ha.d" 刪除或註釋掉
2.5 Heartbeat優化
1 [root@master1 ~]# cp /root/Heartbeat-3-0-958e11be8686/doc/{ha.cf,haresources,authkeys} \ 2 /usr/local/heartbeat/etc/ha.d/ #複製相關配置文件 3 [root@master1 ~]# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys 4 [root@master1 ~]# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/ 5 [root@master1 ~]# cp /usr/lib/ocf/lib/heartbeat/ocf-* \ 6 /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/ 7 [root@master1 ~]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* \ 8 /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/ 9 [root@master1 ~]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* \ 10 /usr/local/heartbeat/lib/heartbeat/plugins/ 11 [root@master1 ~]# chkconfig --add heartbeat #CentOS7可省略 12 [root@master1 ~]# systemctl enable heartbeat.service 13 [root@master1 ~]# systemctl start heartbeat.service提示:master2節點參考以上操作即可。
三 配置Heartbeat
3.1 安裝httpd服務
1 [root@master1 ~]# yum -y install httpd 2 [root@master1 ~]# systemctl stop httpd 3 [root@master1 ~]# systemctl disable httpd #master2也需要安裝 4 [root@master1 ~]# echo "master1.yewu.com" >>/var/www/html/index.html 5 [root@master2 ~]# echo "master2.yewu.com" >>/var/www/html/index.html提示:關閉httpd啟動及自啟動,從而使httpd基於Heartbeat資源形式喚醒。
3.2 配置authkeys
1 [root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/authkeys 2 auth 3 3 3 md5 Yes!
3.3 配置Heartbeat
1 [root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/ha.cf 2 logfile /var/log/ha-log #記錄Heartbeat其他相關日誌信息 3 logfacility local0 #設置heartbeat的日誌,這裡用的是系統日誌 4 keepalive 2 #設定心跳(監測)時間間隔為2秒 5 deadtime 15 #宣告死亡時間 6 warntime 10 #心跳延時時間 7 initdead 60 #初始化時間 8 udpport 694 #用於通信的UDP埠 9 bcast eth1 #接受廣播心跳的網卡介面 10 ucast eth1 192.168.77.101 #置對方機器心跳檢測的IP 11 auto_failback off #關閉自動切回恢復正常的主節點 12 node master1.yewu.com #集群節點的名稱,必須匹配uname -n的結果。 13 node master2.yewu.com 14 ping 192.168.88.1 15 respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail註意: 主機和備機之間進行心跳檢測,當備機無法檢測到主機的心跳,則開啟vip; 如果主機和備機都沒有掛掉,由於通信問題導致相互無法連接,則會出現裂腦,即主備都對外聲明瞭vip,導致數據出現故障 ,因此建議主機和備機間應該採用專門只是用於檢測心跳的網卡(網路),其他數據(業務)網路應該獨立於此心跳網路。
3.4 配置haresources
1 [root@master1 ~]# ll /usr/local/heartbeat/etc/ha.d/resource.d/ #查看現有資源類型 2 [root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/haresources 3 master1.yewu.com IPaddr::192.168.88.88/24/eth0 apache 4 [root@master1 ~]# scp /usr/local/heartbeat/etc/ha.d/{ha.cf,haresources,authkeys} 192.168.88.101:/usr/local/heartbeat/etc/ha.d/ #將所有配置複製至master2節點 5 [root@master2 ~]# vi /usr/local/heartbeat/etc/ha.d/ha.cf 6 ucast eth1 192.168.77.100 #置對方機器心跳檢測的IP
四 驗證Heartbeat
4.1 master1單節點啟動驗證
1 [root@master1 ~]# systemctl start heartbeat.service 2 [root@master1 ~]# tail -f /var/log/ha-log #驗證日誌[root@master1 ~]# ifconfig #查看活的的vip 瀏覽器訪問:http://192.168.88.88/
4.2 master2啟動並驗證
1 [root@master2 ~]# systemctl start heartbeat.service 2 [root@master1 ~]# tail -f /var/log/ha-log #觀察master2節點啟動後的master1日誌瀏覽器訪問:http://192.168.88.88/
1 [root@master1 ~]# shutdownr #模擬master1節點宕機 2 [root@master2 ~]# ifconfig #master2節點會自動接管vip瀏覽器訪問:http://192.168.88.88/ #相關vip已經飄移至mster2 提示:由於配置了auto_failback off,在master1節點恢復後資源依舊會保留至master2節點; 對於集群上節點之間的切換實質上是資源的接管,通常包括VIP分配回收,磁碟卸載掛載,以及服務的啟停等; 對於備用節點,其相應的共用磁碟狀態為不可讀寫,服務處於停止狀態; Heartbeat現有項目已拆分,建議使用pacemaker+corosync,可參考RH436相關文檔。