HA-高可用集群

来源:https://www.cnblogs.com/douyi/archive/2019/10/07/11631519.html
-Advertisement-
Play Games

原理:兩台web伺服器,通過心跳線進行通信,當主節點出現服務異常,備用節點通過探測判斷主節點是否存活,若是不存活,就把服務接管過來。 Web1和Web2中間有一根心跳線,檢查對方的存活狀態。流動IP:也叫vip是對外提供服務的ip,正常情況下是配置在Web1上的,當Web1宕機後,Web2會自動配置 ...


 

原理:兩台web伺服器,通過心跳線進行通信,當主節點出現服務異常,備用節點通過探測判斷主節點是否存活,若是不存活,就把服務接管過來。

Web1和Web2中間有一根心跳線,檢查對方的存活狀態。流動IP:也叫vip是對外提供服務的ip,正常情況下是配置在Web1上的,當Web1宕機後,Web2會自動配置該vip,對外提供服務。   需求:線上上環境有一臺nginx伺服器提供對外web訪問,為了防止伺服器突然宕機造成業務損失,則需要兩台伺服器提供高可用集群一主一備服務,主的伺服器宕機,備的伺服器立即接管主的繼續對外提供訪問,讓業務不受影響。

實驗環境所需要工具:heartbeat、libnet、nginx

預設是沒有heartbeat包,需要安裝擴展源:epel epel下載地址:wget  www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm   安裝工具:yum -y install heartbeat 安裝工具:yum -y install libnet   master IP: 192.168.2.254 slave IP:192.168.2.253   一、master伺服器配置   1:修改hosts文件 [root@master ~]# vim /etc/hosts 說明:將主和備份的伺服器地址和主機寫入hosts文件,將紅色的欄位複製到備份的文件   127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.2.254 master 192.168.2.253 slave       2:切換到hearteat工具文件目錄 [root@master ~]cd /usr/share/doc/heartbeat-3.0.4/ [root@master heartbeat-3.0.4]# ls apphbd.cf  authkeys  AUTHORS  ChangeLog  COPYING  COPYING.LGPL  ha.cf  haresources  README      3:拷貝authkeys、ha.cf、haresources三個配置文件 [root@master heartbeat-3.0.4] cp authkeys ha.cf haresources /etc/ha.d/ [root@master heartbeat-3.0.4] cd /etc/ha.d/   4:編輯配置文件 [root@master ha.d ] vim authkeys auth 3  ##這裡定義的是你下麵所開啟的級別 #1 crc #2 sha1 HI! 3 md5 Hello!   5:aurhkeys文件許可權需要設置600 [root@master ha.d ] chmod 600 authkeys   6:配置虛介面和編輯vip的文件 [root@master ha.d]# cd /etc/sysconfig/network-scripts/ [root@master network-scripts]# cp ifcfg-eth0 ifcfg-eth0\:1 [root@master network-scripts]# vim ifcfg-eth0:1 加入下麵的內容 DEVICE=eth0:1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.2.110 NETMASK=255.255.255.0   7:重啟網路服務 [root@master network-scripts]# service network  restart   正在關閉介面 eth0:                                     [確定] 關閉環回介面:                                             [確定] 彈出環回介面:                                             [確定] 彈出界面 eth0: Determining if ip address 192.168.2.254 is already in use for device eth0... Determining if ip address 192.168.2.110 is already in use for device eth0...                                                            [確定]   8:重啟服務和編輯配置文件 [root@master network-scripts]# vim haresources 說明: master ##表示是主的主機名 192.168.2.110/24 ##表示流動vip也就是虛介面地址 eth0:0 ##表示你所用的網卡 nginx ##表示你用什麼服務做的集群,這裡用的是Nginx,根據自己使用情況設置   加入下麵內容 master  192.168.2.110/24/eth0:1 nginx   9:編輯ha.cf文件 [root@master ha.d]# vim ha.cf debugfile /var/log/ha-debug logfile /var/log/ha-log ##設置系統日誌的信息範圍為 local0 logfacility     local0 ##這是日誌的級別 keepalive 2  ##設置心跳的檢測時間,預設單位為秒 deadtime 30 ##宣佈節點死亡的時間,單位為秒 warntime 10 ##通過這個來調整判斷節點的死亡時間 initdead 60 ##Heartbeat 啟動資源的等待時間,單位為秒 udpport 694 ##設定用於bcast和ucast通信的埠,預設為 UDP 694 ucast eth0 192.168.2.253 ##心跳網卡和對方的ip地址 auto_failback on ##這個設定會使節點具備優先順序。當服務運行於備機上時,如果主節點已恢復,會自動取回運行在備機上的服務。 node    master ##設置主的主機名 node    slave ##設置備份的主機名 ping 192.168.2.1 ##指定ping節點,檢測網路狀態,通常是網關 respawn hacluster /usr/lib/heartbeat/ipfail ##設定 Heartbeat 監控的服務,該服務會隨著 Heartbeat 服務啟動時啟動,停止時則一起停止。當出現意外導致該服務停止時,Heartbeat 將自動重啟該服務   10:複製三個配置文件到備份伺服器 [root@master ha.d]# scp authkeys ha.cf haresources slave:/etc/ha.d/ The authenticity of host 'slave (192.168.2.253)' can't be established. RSA key fingerprint is 74:0a:ee:44:ae:1a:9f:86:47:43:92:4b:c0:02:29:0b. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'slave,192.168.2.253' (RSA) to the list of known hosts. root@slave's password: authkeys                                                                           100%  643     0.6KB/s   00:00     ha.cf                                                                                  100%  331     0.3KB/s   00:00     haresources                                                                      100% 5888     5.8KB/s   00:00   二、slave伺服器配置   1:修改hosts文件 [root@slave ~]# vim /etc/hosts   127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.2.254 master 192.168.2.253 slave   2:在備份伺服器slave里只需要編輯ha.cf配置文件,其它兩個文件預設 [root@slave src]# cd /etc/ha.d/ [root@slave ha.d]# ls authkeys  ha.cf  harc  haresources  rc.d  README.config  resource.d  shellfuncs [root@slave ha.d]# vim ha.cf   debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility     local0 keepalive 2 deadtime 30 warntime 10 initdead 60 udpport 694 ucast eth0 192.168.2.254 ##改成master的地址 auto_failback on node    master node    slave ping 192.168.2.2 respawn hacluster /usr/lib/heartbeat/ipfail   三、啟動heartbeat、測試結果 說明:在高可用集群中啟動heartbeat是按照先啟動主,再啟動備份的順序   1:啟動master,關閉iptables和selinux [root@master ha.d]# iptables -F [root@master ha.d]# setenforce 0 [root@master ha.d]# /etc/init.d/heartbeat start Starting High-Availability services: INFO:  Resource is stopped Done.   2:啟動slave,關閉iptables和selinux [root@slave ha.d]# iptables -F [root@slave ha.d]# setenforce 0 [root@slave ha.d]# /etc/init.d/heartbeat start Starting High-Availability services: INFO:  Resource is stopped Done.   3:測試,使master伺服器不能ping通slave的伺服器,讓master死掉,slave的繼承 更改下主頁文件 [root@master ~]# echo "1111111111111111111master" > /usr/share/nginx/html/index.html     4:用curl測試 [root@master ~]# curl -x 127.0.0.1:80 192.168.2.110 1111111111111111111master   5:使用命令禁掉主Ping工具,讓其死掉 [root@master ha.d]# iptables -A INPUT -p icmp -j DROP   6:在備份服務查看有沒有虛介面過來 [root@slave ha.d]# ifconfig eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:4D:F5:D8             inet addr:192.168.1.110  Bcast:192.168.1.255  Mask:255.255.255.0           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           Interrupt:19 Base address:0x2000   7:curl訪問測試 [root@slave ha.d]# curl -x127.0.0.1:80 192.168.2.110 222222222222slave ##備用的伺服器成功繼承,高可用集群實驗成功

 


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

-Advertisement-
Play Games
更多相關文章
  • 本篇主要寫了怎麼搭建自定義的 YUM 源,在一個擁有大量本地網路的主機環境中,可以減少對外網的依賴。 ...
  • 通過 NFS 網路文件系統,可以通過網路共用目錄,讓網路上的其他主機可以通過掛載訪問共用目錄的數據。 ...
  • 在 Linux 中,許多網路服務針對客戶機提供訪問控制機制,而 TCP Wrappers 是應用服務與網路之間的一道特殊的防線,提供額外的安全保障。 ...
  • 本篇寫一些關於 Linux 網路中 SSH 服務的相關知識。 ...
  • 設置 DNS 分離解析可以對不同的客戶端提供不同的功能變數名稱解析記錄。來自不同地址的客戶機請求同一功能變數名稱時,為其提供不同的解析結果。 ...
  • 設置主從 DNS 的主要是為了冗餘,分擔壓力,防止伺服器宕機後, DNS 無法正常解析。 ...
  • 具體到一個公司的網路環境中,不可能只有一個 VLAN,更不可能對每個 VLAN 都架設一個 DHCP 伺服器,這時就要做一個 DHCP 的中繼,使得 DHCP 的廣播可以通過 VLAN 。 ...
  • 想使用 mongodb 官網提供的YUM安裝方法快速安裝,但官方暫時未提供centos8的安裝包,只需稍作修改則能順利安裝! ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...