HeartBeat(NFS文件掛載實現Web服務雙機熱備)

来源:https://www.cnblogs.com/Renqy/archive/2020/05/26/12964761.html
-Advertisement-
Play Games

2台主機互為備份,Web服務顯示NFS文件系統上的資源。新增一個Linux6.8的系統作為NFS文件伺服器目錄:1、完成HeartBeat基礎配置2、配置NFS伺服器3、配置HeartBeat資源管理伺服器使用NFS資源4、結果測試1、完成HeartBeat基礎配置基礎配置這裡就不在敘述了,參考下麵... ...


2台主機互為備份,Web服務顯示NFS文件系統上的資源。

新增一個Linux6.8的系統作為NFS文件伺服器

image

目錄:

1、完成HeartBeat基礎配置

2、配置NFS伺服器

3、配置HeartBeat資源管理伺服器使用NFS資源

4、結果測試

1、完成HeartBeat基礎配置

基礎配置這裡就不在敘述了,參考下麵這篇文檔。

HeartBeat基礎配置(實現Web服務雙機熱備)

2、配置NFS伺服器

創建共用文件夾/file/web/

mkdir -p /file/web/
echo "<h1>this is nfs server</h1>" >> /file/web/index.html

配置共用文件

vim /etc/exports
添加
/file/web  192.168.0.0/255.255.0.0(ro)

NFS服務配置

vim /etc/sysconfig/nfs

啟動相應的NFS版本,這裡我們使用4

image

啟動服務,配置開機自啟

service nfs start
chkconfig nfs on
image

檢查共用的文件夾

image

關閉selinux

如果是臨時測試

setenforce 0

如果長期使用

vim /etc/selinux/config

image

註意:

如果是實際生產環境,建議將selinux開啟,然後乖乖去寫安全規則。

NFS服務配置完畢

3、配置HeartBeat資源管理伺服器使用NFS資源

測試文件掛載

NA1(關閉selinux)

setenforce 0
mkdir -p /mnt/webfile/
mount -t nfs 192.168.94.131:/file/web /mnt/webfile/

image

掛載沒問題。取消掛載

umount /mnt/webfile

NA2(關閉selinux)

setenforce 0

配置heartbeat資源管理器

NA1&NA2關閉heartbeat服務

service heartbeat stop

將NFS共用目錄掛載到/var/www/html下

vim /etc/ha.d/haresources
添加
na1.server.com IPaddr::192.168.94.222/24/eth1 Filesystem::192.168.94.131:/file/web::/var/www/html::nfs httpd

然後將haresource複製到NA2上。

scp /etc/ha.d/haresources na2:/etc/ha.d/

啟動heartbeat服務

service heartbeat start
ssh na2 'service heartbeat start'

查看日誌

[root@na1 ~]# tail -f /var/log/messages
May 25 09:09:33 na1 heartbeat: [4960]: info: G_main_add_SignalHandler: Added signal handler for signal 17
May 25 09:09:33 na1 heartbeat: [4960]: info: Local status now set to: 'up'
May 25 09:09:33 na1 heartbeat: [4960]: info: Link na1.server.com:eth1 up.
May 25 09:09:44 na1 heartbeat: [4960]: info: Link na2.server.com:eth1 up.
May 25 09:09:44 na1 heartbeat: [4960]: info: Status update for node na2.server.com: status up
May 25 09:09:44 na1 harc(default)[4968]: info: Running /etc/ha.d//rc.d/status status
May 25 09:09:44 na1 heartbeat: [4960]: info: Comm_now_up(): updating status to active
May 25 09:09:44 na1 heartbeat: [4960]: info: Local status now set to: 'active'
May 25 09:09:45 na1 heartbeat: [4960]: info: Status update for node na2.server.com: status active
May 25 09:09:45 na1 harc(default)[4986]: info: Running /etc/ha.d//rc.d/status status
May 25 09:09:55 na1 heartbeat: [4960]: info: remote resource transition completed.
May 25 09:09:55 na1 heartbeat: [4960]: info: remote resource transition completed.
May 25 09:09:55 na1 heartbeat: [4960]: info: Initial resource acquisition complete (T_RESOURCES(us))
May 25 09:09:55 na1 /usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.94.222)[5038]: INFO:  Resource is stopped
May 25 09:09:55 na1 heartbeat: [5002]: info: Local Resource acquisition completed.
May 25 09:09:55 na1 harc(default)[5119]: info: Running /etc/ha.d//rc.d/ip-request-resp ip-request-resp
May 25 09:09:55 na1 ip-request-resp(default)[5119]: received ip-request-resp IPaddr::192.168.94.222/24/eth1 OK yes
May 25 09:09:55 na1 ResourceManager(default)[5138]: info: Acquiring resource group: na1.server.com IPaddr::192.168.94.222/24/eth1 Filesystem::192.168.94.131:/file/web::/var/www/html::nfs httpd
May 25 09:09:56 na1 /usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.94.222)[5164]: INFO:  Resource is stopped
May 25 09:09:56 na1 ResourceManager(default)[5138]: info: Running /etc/ha.d/resource.d/IPaddr 192.168.94.222/24/eth1 start
May 25 09:09:56 na1 IPaddr(IPaddr_192.168.94.222)[5285]: INFO: Adding inet address 192.168.94.222/24 with broadcast address 192.168.94.255 to device eth1
May 25 09:09:56 na1 IPaddr(IPaddr_192.168.94.222)[5285]: INFO: Bringing device eth1 up
May 25 09:09:56 na1 IPaddr(IPaddr_192.168.94.222)[5285]: INFO: /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-192.168.94.222 eth1 192.168.94.222 auto not_used not_used
May 25 09:09:56 na1 /usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.94.222)[5259]: INFO:  Success
May 25 09:09:56 na1 /usr/lib/ocf/resource.d//heartbeat/Filesystem(Filesystem_192.168.94.131:/file/web)[5369]: INFO:  Resource is stopped
May 25 09:09:56 na1 ResourceManager(default)[5138]: info: Running /etc/ha.d/resource.d/Filesystem 192.168.94.131:/file/web /var/www/html nfs start
May 25 09:09:56 na1 Filesystem(Filesystem_192.168.94.131:/file/web)[5444]: INFO: Running start for 192.168.94.131:/file/web on /var/www/html
May 25 09:09:56 na1 /usr/lib/ocf/resource.d//heartbeat/Filesystem(Filesystem_192.168.94.131:/file/web)[5436]: INFO:  Success
May 25 09:09:56 na1 ResourceManager(default)[5138]: info: Running /etc/init.d/httpd  start
May 25 09:09:57 na1 ntpd[1741]: Listen normally on 7 eth1 192.168.94.222 UDP 123

4、結果測試

訪問VIP192.168.94.222

image

關閉NA1再訪問

image

訪問正常,查看NA2的日誌

May 25 09:09:04 na2 heartbeat: [3838]: info: Status update for node na1.server.com: status up
May 25 09:09:04 na2 harc(default)[3845]: info: Running /etc/ha.d//rc.d/status status
May 25 09:09:05 na2 heartbeat: [3838]: info: Comm_now_up(): updating status to active
May 25 09:09:05 na2 heartbeat: [3838]: info: Local status now set to: 'active'
May 25 09:09:05 na2 heartbeat: [3838]: info: Status update for node na1.server.com: status active
May 25 09:09:05 na2 harc(default)[3861]: info: Running /etc/ha.d//rc.d/status status
May 25 09:09:15 na2 heartbeat: [3838]: info: local resource transition completed.
May 25 09:09:15 na2 heartbeat: [3838]: info: Initial resource acquisition complete (T_RESOURCES(us))
May 25 09:09:15 na2 heartbeat: [3879]: info: No local resources [/usr/share/heartbeat/ResourceManager listkeys na2.server.com] to acquire.
May 25 09:09:15 na2 heartbeat: [3838]: info: remote resource transition completed.
May 25 09:15:28 na2 dhclient[1500]: DHCPREQUEST on eth1 to 192.168.94.254 port 67 (xid=0x14aa7d01)
May 25 09:15:28 na2 dhclient[1500]: DHCPACK from 192.168.94.254 (xid=0x14aa7d01)
May 25 09:15:28 na2 dhclient[1500]: bound to 192.168.94.130 -- renewal in 848 seconds.
May 25 09:15:28 na2 NetworkManager[1470]: <info> (eth1): DHCPv4 state changed renew -> renew
May 25 09:15:28 na2 NetworkManager[1470]: <info>   address 192.168.94.130
May 25 09:15:28 na2 NetworkManager[1470]: <info>   prefix 24 (255.255.255.0)
May 25 09:15:28 na2 NetworkManager[1470]: <info>   gateway 192.168.94.2
May 25 09:15:28 na2 NetworkManager[1470]: <info>   nameserver '192.168.94.2'
May 25 09:15:28 na2 NetworkManager[1470]: <info>   domain name 'localdomain'
May 25 09:15:28 na2 heartbeat: [3838]: info: Received shutdown notice from 'na1.server.com'.
May 25 09:15:28 na2 heartbeat: [3838]: info: Resources being acquired from na1.server.com.
May 25 09:15:28 na2 heartbeat: [3931]: info: acquire local HA resources (standby).
May 25 09:15:28 na2 heartbeat: [3931]: info: local HA resource acquisition completed (standby).
May 25 09:15:28 na2 heartbeat: [3838]: info: Standby resource acquisition done [all].
May 25 09:15:28 na2 heartbeat: [3932]: info: No local resources [/usr/share/heartbeat/ResourceManager listkeys na2.server.com] to acquire.
May 25 09:15:28 na2 harc(default)[3957]: info: Running /etc/ha.d//rc.d/status status
May 25 09:15:29 na2 mach_down(default)[3972]: info: Taking over resource group IPaddr::192.168.94.222/24/eth1
May 25 09:15:29 na2 ResourceManager(default)[3997]: info: Acquiring resource group: na1.server.com IPaddr::192.168.94.222/24/eth1 Filesystem::192.168.94.131:/file/web::/var/www/html::nfs httpd
May 25 09:15:29 na2 /usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.94.222)[4023]: INFO:  Resource is stopped
May 25 09:15:29 na2 ResourceManager(default)[3997]: info: Running /etc/ha.d/resource.d/IPaddr 192.168.94.222/24/eth1 start
May 25 09:15:29 na2 IPaddr(IPaddr_192.168.94.222)[4144]: INFO: Adding inet address 192.168.94.222/24 with broadcast address 192.168.94.255 to device eth1
May 25 09:15:29 na2 IPaddr(IPaddr_192.168.94.222)[4144]: INFO: Bringing device eth1 up
May 25 09:15:29 na2 IPaddr(IPaddr_192.168.94.222)[4144]: INFO: /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-192.168.94.222 eth1 192.168.94.222 auto not_used not_used
May 25 09:15:29 na2 /usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.94.222)[4118]: INFO:  Success
May 25 09:15:29 na2 /usr/lib/ocf/resource.d//heartbeat/Filesystem(Filesystem_192.168.94.131:/file/web)[4228]: INFO:  Resource is stopped
May 25 09:15:29 na2 ResourceManager(default)[3997]: info: Running /etc/ha.d/resource.d/Filesystem 192.168.94.131:/file/web /var/www/html nfs start
May 25 09:15:29 na2 Filesystem(Filesystem_192.168.94.131:/file/web)[4303]: INFO: Running start for 192.168.94.131:/file/web on /var/www/html
May 25 09:15:29 na2 /usr/lib/ocf/resource.d//heartbeat/Filesystem(Filesystem_192.168.94.131:/file/web)[4295]: INFO:  Success
May 25 09:15:30 na2 ResourceManager(default)[3997]: info: Running /etc/init.d/httpd  start
May 25 09:15:30 na2 mach_down(default)[3972]: info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
May 25 09:15:30 na2 mach_down(default)[3972]: info: mach_down takeover complete for node na1.server.com.
May 25 09:15:59 na2 heartbeat: [3838]: WARN: node na1.server.com: is dead
May 25 09:15:59 na2 heartbeat: [3838]: info: Dead node na1.server.com gave up resources.
May 25 09:15:59 na2 heartbeat: [3838]: info: Link na1.server.com:eth1 dead.

紅色字體表示,NA1dead後,NA2進行的一系列活動。

接管VIP,掛載資源,啟動httpd服務。


讀書和健身總有一個在路上


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們知道在 Linux 中,“一切皆文件”,作為系統管理員或者程式員我們每天都需要和大量的文本文件打交道。Linux 系統為我們提供了三個文本處理工具:grep, sed, 和 awk,它們也被稱為 Linux 文本處理的三劍客被大家廣泛使用。今天先和大家介紹一下 grep 的以及正則表達式的用法, ...
  • 大家好,我是良許。 在我們的日常工作中,需要我們重覆做的工作簡直不能太多。比如,我們想要確認網路是否是連通的,傳統的做法就是使用 ping 命令不停去測試某個地址(比如百度)。網路比較好還好說,但如果網路很差,那麼就需要一直去運行 ping 命令。 作為程式員,重覆性的工作怎麼能忍呢?只要是重覆性的 ...
  • 常見shell種類 1 Bourne Shell(/usr/bin/sh或/bin/sh) 2 Bourne Again Shell(/bin/bash) 3 C Shell(/usr/bin/csh) 4 K Shell(/usr/bin/ksh) 5 Shell for Root(/sbin/s ...
  • 怎樣將MAMP Pro for Mac中的mysql在navicat中使用 博客說明 文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗彙總,如有什麼地方侵權,請聯繫本人刪除,謝謝! 步驟 1.打開MAMP Pro for Mac,在資料庫的欄目裡面看到使用嵌套字鏈接,將/Applica ...
  • mkpasswd命令 功能說明:生成隨機密碼 註意:要使用此命令,需要安裝expect軟體包。 用法:mkpasswd [ args ] [ user ] 選項 作用 -l 指定密碼的長度(length),預設是9位 -d 指定密碼中使用多少位的數字(digits),預設為2位 -c 指定密碼中使用 ...
  • last命令 功能說明:顯示最近登錄用戶的列表 last命令會讀取位於/var/log/下的wtmp文件,並把文件中記錄的登錄系統的用戶名顯示出來。 用法:last 選項 作用 -n 設置顯示名單的行數 -R 不顯示登錄的主機名稱和IP地址 示例:顯示最近登錄用戶的信息 root pts/1 192 ...
  • id命令 功能說明:查看指定用戶的ID信息 用法:id [OPTIONS]... [USERNAME] id命令不指定用戶時,則顯示當前用戶的ID。若指定用戶,而不加任何選項時,則顯示用戶ID及所屬組的ID。 選項 作用 -u,--user 僅顯示用戶UID -g,--group 僅顯示用戶的基本組 ...
  • passwd命令 功能說明:設置密碼 用法:passwd [options] [username] 管理員可以使用不帶任何選項的passwd命令修改自己的密碼。 管理員修改任何用戶的密碼都不需要知道用戶原來的密碼,普通用戶僅能更改自己的密碼,且在更改密碼之前,系統會要求用戶輸入現在的密碼,另外普通用 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...