Heartbeat 3.x 版拆分為 heartbeat, cluster-glue, resource-agent 三個部分,必須要分開安裝。
確認 hostname
#vim /etc/hosts,增加兩行 (Server A 和 Server B 上都要各設定兩行) 192.168.1.35 kokome1 192.168.1.36 kokome2
安裝編譯需要的套件,以及
kernel-devel-$(uname -r) kernel-headers-$(uname -r)
yum install -y bzip2 autoconf automake libtool glib2-devel libxml2-devel bzip2-devel libtool-ltdl-devel asciidoc libuuid-devel psmisc
- 安裝 cluster-glue
wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
tar jxvf 0a7add1d9996.tar.bz2
cd Reusable-Cluster-Components-glue--0a7add1d9996/
groupadd haclient
useradd -g haclient hacluster
./autogen.sh
./configure --prefix=/usr/local/heartbeat/
make
make install
cd ..
- 安裝 Resource Agents
wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz
tar zxvf v3.9.6.tar.gz
cd resource-agents-3.9.6/
./autogen.sh
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
./configure --prefix=/usr/local/heartbeat/
echo "/usr/local/heartbeat/lib" > /etc/ld.so.conf.d/heartbeat.conf
ldconfig
make
make install
cd ..
- 安裝 heartbeat
wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
tar jxvf 958e11be8686.tar.bz2
cd Heartbeat-3-0-958e11be8686
./bootstrap
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
./configure --prefix=/usr/local/heartbeat/
vi /usr/local/heartbeat/include/heartbeat/glue_config.h
/*define HA_HBCONF_DIR “/usr/local/heartbeat/etc/ha.d/”*/ (這行用/**/註釋掉)
make
make install
cd ..
- 複製設定
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
cp /usr/local/heartbeat/share/doc/heartbeat/ha.cf /usr/local/heartbeat/etc/ha.d
cp /usr/local/heartbeat/share/doc/heartbeat/authkeys /usr/local/heartbeat/etc/ha.d
cp /usr/local/heartbeat/share/doc/heartbeat/haresources /usr/local/heartbeat/etc/ha.d
- 修改 authkeys
vim /usr/local/heartbeat/etc/ha.d/authkeys #在最後加上
auth 1
1 crc
chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
- 設定 ha.cf
因為這個檔案說明太多,尋找和修改不方便,執行下面把原來的換個名稱,把 ha.cf.old 檔案過濾掉註解,剩下的輸出到 ha.cf 檔案中再修改
mv /usr/local/heartbeat/etc/ha.d/ha.cf /usr/local/heartbeat/etc/ha.d/ha.cf.old
sed -e '/^#/d' -e '/^$/d' /usr/local/heartbeat/etc/ha.d/ha.cf.old > /usr/local/heartbeat/etc/ha.d/ha.cf
然後再去修改 /usr/local/heartbeat/etc/ha.d/ha.cf 內容 (參數說明去看剛剛備份的 /etc/ha.d/ha.cf.old)
vi /usr/local/heartbeat/etc/ha.d/ha.cf
logfile /var/log/ha.log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node kokome1
node kokome2
ping 192.168.1.1
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
node 值必須和兩台主機的 uname -n 執行結果相符合 可以用 ping gateway ip 來偵測 logfile 是設定 heartbeat 執行情況的 log
- 設定 haresources
vim /usr/local/heartbeat/etc/ha.d/haresources,最後加入一行
kokome1 IPaddr::192.168.1.13/24/eth0 tomcat httpd
第1個參數是 HA 的主要電腦的 hostname
第2個參數是虛擬介面 IP
第3個參數服務名稱
- 把 heartbeat 設定全部複製到 Server B 上
scp -r /usr/local/heartbeat/etc/ha.d/ root@192.168.1.12:/usr/local/heartbeat/etc/ha.d/
啟動 heartbeat
service heartbeat restart chkconfig heartbeat on chkconfig --add heartbeat chkconfig --level 2345 heartbeat on chkconfig --list heartbeat
如果 ifconfig 沒有看到 Virtual IP 的資訊 就改用以下指令
ip -o -f inet addr show
ssh 免密碼
yum -y install openssh-clients kokome1: mkdir -p /root/.ssh cd /root/.ssh ssh-keygen -t dsa 按enter直到完成 (id_kokome1.pub為自己辨識用的名稱) scp id_dsa.pub 192.168.1.12:/root/.ssh/id_kokome1.pub ssh 192.168.1.12 cd /root/.ssh/ cat id_kokome1.pub >> authorized_keys 完成ssh免密碼 kokome2: cd /root/.ssh ssh-keygen -t dsa 按enter直到完成 (id_kokome2.pub為自己辨識用的名稱) scp id_dsa.pub 192.168.1.11:/root/.ssh/id_kokome2.pub ssh 192.168.1.11 cd /root/.ssh/ cat id_kokome2.pub >> authorized_keys 完成ssh免密碼
測試
1) Server A 正常時 用瀏覽器連上 http://192.168.1.11,應該會出現 "I am kokome 1" 用瀏覽器連上 http://192.168.1.12,應該會出現 "連線失敗" 一類訊息 用瀏覽器連上 http://192.168.1.13,應該會出現 "I am kokome 1"
(2) Server A 當掉時 假設 Server A 當了,心跳 (heartbeat) 停了,請執行
service heartbeat stop
或把 Server A 關機
(工作接管可能需要 1,2分鐘)
用瀏覽器連上 http://192.168.1.11,應該會出現 "連線失敗" 一類訊息 用瀏覽器連上 http://192.168.1.12,應該會出現 "I am kokome 2" 用瀏覽器連上 http://192.168.1.13,應該會出現 "I am kokome 2"
(3) Server A 又復原
假設 Server A 復原,心跳 (heartbeat) 復原,請執行
service heartbeat start
(工作接管可能需要 1,2分鐘)
用瀏覽器連上 http://192.168.1.11,應該會出現 "I am kokome 1" 用瀏覽器連上 http://192.168.1.12,應該會出現 "連線失敗" 一類訊息 用瀏覽器連上 http://192.168.1.13,應該會出現 "I am kokome 1"
這樣表示測試成功
- 發生 error
ERROR: Cannot locate resource script httpd
解決方法
cp /usr/sbin/apachectl /usr/local/heartbeat/etc/ha.d/resource.d/httpd
References
Current Linux-HA Release Downloads
centos7.5部署heartbeat+DRBD+mysql高可用方案
沒有留言:
張貼留言