002.Heartbeat部署及httpd高可用

来源:https://www.cnblogs.com/itzgr/archive/2018/12/22/10160659.html
-Advertisement-
Play Games

一 前期準備 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-snmp

1.2 環境準備

防火牆及SELinux關閉; 時鐘同步,ntp配置; 相關主機名配置,如下所示:
節點/主機名 業務IP 心跳IP
master1.yewu.com 192.168.88.100 192.168.77.100
master2.yewu.com 192.168.88.101 192.168.77.101
vip 192.168.88.88
  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地址
004 配置互免秘鑰:(建議項)
  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/Download
  1 [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'
  005
  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'
  006
  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'
  007
  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		#驗證日誌
008 [root@master1 ~]# ifconfig #查看活的的vip 009 瀏覽器訪問:http://192.168.88.88/ 010

4.2 master2啟動並驗證

  1 [root@master2 ~]# systemctl start heartbeat.service
  2 [root@master1 ~]# tail -f /var/log/ha-log	#觀察master2節點啟動後的master1日誌
  011 瀏覽器訪問:http://192.168.88.88/ 012
  1 [root@master1 ~]# shutdownr			#模擬master1節點宕機
  2 [root@master2 ~]# ifconfig			#master2節點會自動接管vip
  013 瀏覽器訪問:http://192.168.88.88/ #相關vip已經飄移至mster2 014 提示:由於配置了auto_failback off,在master1節點恢復後資源依舊會保留至master2節點; 對於集群上節點之間的切換實質上是資源的接管,通常包括VIP分配回收,磁碟卸載掛載,以及服務的啟停等; 對於備用節點,其相應的共用磁碟狀態為不可讀寫,服務處於停止狀態; Heartbeat現有項目已拆分,建議使用pacemaker+corosync,可參考RH436相關文檔。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當我們在做項目的時候,引用js或者css是通常會在後面加上時間戳,舉例如下: v的後面就是引用的時間戳,那麼時間有什麼作用,該如何定義了?具體如下>> 時間戳的作用 好多Linux + Apache的伺服器都會對CSS、JS和圖片這些靜態的內容設置緩存,到了IE這裡又會在本地做一個緩存。所以當我們更 ...
  • 一:什麼叫委托 通過反射發現,委托其實是一個類,繼承自System.MulticastDelegate,但是System.MulticastDelegate這個類是特殊類,不能被繼承 二:委托的聲明 委托可以聲明在類外面,可以聲明再類裡面 三:委托的實例和調用 private int GetSome ...
  • private:私有成員,在類的內部才可以訪問 protected:保護成員,在類的內部和繼承類中可以訪問 public:公共成員,完全公開,沒有訪問限制 internal:當前程式集內可以訪問 ...
  • zcat 解壓有gzip壓縮的文件,將解壓結果送到標準輸出。 此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、語法 zcat [-fhVL] 文件 2、選項列表 選項 說明 -h | --help 幫助信息 -V | --vers ...
  • 備忘命令: 保持更新,轉載請註明出處。 ...
  • Ubuntu引導安裝 首先是安裝前的準備工作 1.需要安裝的 ubuntu系統的ISO鏡像。 2.easyBCD引導軟體 3.所在的Windows系統(本人win7下安裝) 4.DiskGenius(分區工具) 開始安裝前win7下準備工作 一、 網上下載ubuntu的iso(應該是是官方渠道吧) ...
  • 安裝Windows10 1803 版本後,發現網路上的機器好多不見了。 使用 ping 可以ping 通,但是訪問網路共用提示下麵錯誤。 這個原因是1803 中沒有安裝 SMB1.0 協議。因為 SMB1.0協議比較早,有安全問題, windows 10 在之後的版本中都不預設支持了。 如果想迴避這 ...
  • 1 前景提要 1.1 碎片化問題 分頁與分段 頁是信息的物理單位, 分頁是為了實現非連續分配, 以便解決記憶體碎片問題, 或者說分頁是由於系統管理的需要. 段是信息的邏輯單位,它含有一組意義相對完整的信息, 分段的目的是為了更好地實現共用, 滿足用戶的需要. 頁的大小固定且由系統確定, 將邏輯地址劃分 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...