keepalived 主備使用

来源:https://www.cnblogs.com/askajohnny/archive/2022/12/12/16976460.html
-Advertisement-
Play Games

keepalived 主備使用 本篇主要介紹一下 keepalived 的基本的 主備使用 1.概述 什麼是 keepalived呢,它是一個集群管理中 保證集群高可用的軟體,防止單點故障,keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundanc ...


keepalived 主備使用

本篇主要介紹一下 keepalived 的基本的 主備使用

2022-12-08 06.52.42

1.概述

什麼是 keepalived呢,它是一個集群管理中 保證集群高可用的軟體,防止單點故障,keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路冗餘協議

虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將N台提供相同功能的路由器組成一個路由器組,這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在區域網內其他機器的預設路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先順序來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

通俗點說就是: keepalived中master節點會發送 ARP廣播到 keepalived 的 backup中,如果vrrp沒收到包則認為 master宕機,重新選舉master ,並且把vip給漂移到新的master機器上,實現了高可用

2.準備工作

準備2台機器 , 把111定義為 keepalived 的 MASTER 節點

ip keepalived
172.16.225.111 MASTER
172.16.225.110 BACKUP

3.安裝keepalived

我這裡簡單點直接使用 yum 安裝, 也可以通過二進位包安裝

分別在2台機器上都要安裝 keepalived

yum -y install keepalived

安裝完成後 有 /etc/keepalived/keepalived.conf 預設配置文件如下:

! Configuration File for keepalived

global_defs {
   # 通知 發郵件的 
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
#VRRP 實例定義塊
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
}
#虛擬伺服器定義塊
virtual_server 192.168.200.100 443 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    real_server 192.168.201.100 443 {
        weight 1
        SSL_GET {
            url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
....
  • global_defs 定義全局配置 ,如 郵件配置
  • VRRP 實例定義塊: 主要配置
  • 虛擬伺服器定義塊: LVS 的配置 本篇不涉及

4.配置 2台 機器的keepalived

4.1 配置 MASTER 機器

把111機器的 keepalived.conf 文件修改如下

! Configuration File for keepalived

global_defs {
   router_id LB111
}

vrrp_instance VI_1 {
    # 定義為master
    state MASTER 
    # 網卡 
    interface ens160
    #這個一定要 和 110 一樣 規定為一組路由器中的機器
    virtual_router_id 51
    # 優先順序 
    priority 100 
    # vrrp組之間的心跳包頻率 預設1s
    advert_int 1
    # 組的認證信息 可能有多個路由器組,為了不讓把1組的vip漂移到2組的機器上
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虛擬出來的 ip 地址
    virtual_ipaddress {
        172.16.225.200
    }
}

4.2 配置 BACKUP 機器

! Configuration File for keepalived

global_defs {
   router_id LB111
}

vrrp_instance VI_1 {
    # 指定 BACKUP 備用機
    state BACKUP
    interface ens160
    # 虛擬router id 一組的機器要一致
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       172.16.225.200
    }
}

5.啟動 keepalived

分別在2台機器上直接啟動

#啟動keepalived
systemctl start keepalived 

#查看狀態
systemctl status keepalived

可能啟動不成功: IPVS: Can't initialize ipvs: Protocol not available

[root@middle keepalived]# tail -f  /var/log/messages
Dec  8 06:23:39 middle systemd: Started LVS and VRRP High Availability Monitor.
Dec  8 06:23:39 middle Keepalived_vrrp[17171]: VRRP_Instance(VI_1) removing protocol VIPs.
Dec  8 06:23:39 middle Keepalived_vrrp[17171]: Using LinkWatch kernel netlink reflector...
Dec  8 06:23:39 middle Keepalived_vrrp[17171]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Dec  8 06:23:39 middle Keepalived_healthcheckers[17170]: `IPVS: Can't initialize ipvs: Protocol not available`
Dec  8 06:23:39 middle Keepalived_healthcheckers[17170]: Stopped
Dec  8 06:23:39 middle Keepalived[17169]: Keepalived_healthcheckers exited with permanent error FATAL. Terminating
Dec  8 06:23:39 middle Keepalived[17169]: Stopping
Dec  8 06:23:40 middle Keepalived_vrrp[17171]: Stopped
Dec  8 06:23:44 middle Keepalived[17169]: Stopped Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2

需要安裝 ipvsadm

yum -y install ipvsadm

再次啟動

image-20221208062859996

查看VIP 已經在 111 master節點的機器上了 並且在 ens160這個網卡上

image-20221208063349638

6. 模擬 宕機MASTER

當 master機器如果出現了故障 比如斷點 或者 關機等等.. 那麼 master機器上的 keepalived 肯定不存在了

image-20221208063612288

查看 BACKUP 機器上的 ip 可以發現 vip 已經漂移到這個機器上了

image-20221208063648780

在ping 的同時 模擬宕機 可以看到中間短暫的超時 後面立即恢復了

image-20221208063901897

總結

本篇主要介紹了keepalived 的基本的主備使用方式, 不過主備方式有缺點 它的備用伺服器一直不工作 有點資源浪費, 可以改成 雙主備模式 有機會再說

keepalived 可以結合 check檢查腳本 來檢測如 nginx redis mysql 等等 實現這些服務的高可用方式

歡迎大家訪問 個人博客 Johnny小屋
歡迎關註個人公眾號

歡迎關註個人公眾號


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

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 目前平臺前端使用的是原生CSS+BEM命名,在多人協作的模式下,容易出現樣式衝突。為了減少這一類的問題,提升研效,我調研了業界上主流的7種CSS解決方案,並將最終升級方案落地到了工程中。 樣式衝突的原因 目前遇到的樣式衝突的原因,其實根本 ...
  • 一、JS執行機制 JS語言有個特點是單線程,即同一時間只能做一件事。單線程就意味著,所有的任務需要排隊,前一個任務結束,才會執行後一個任務,可能造成頁面渲染不連貫。 為瞭解決這個問題,利用多核CPU的計算能力,允許JS腳本創建多個線程,即同步和非同步。 同步任務: 同步任務都在主線程上執行,形成一個執 ...
  • 關於 SpringBoot 的自動裝配功能,相信是每一個 Java 程式員天天都會用到的一個功能,但是它究竟是如何實現的呢?今天阿粉來帶大家看一下。 自動裝配案例 首先我們通過一個案例來看一下自動裝配的效果,創建一個 SpringBoot 的項目,在 pom 文件中加入下麵的依賴。 <depende ...
  • 這本書是寫什麼的? 這是一本 Go 語言快速入門手冊,目標讀者是有任一編程語言基礎,希望以最快的時間 (比如一個周末) 入門 Go 語言。 這本書應該怎麼讀? 書中幾乎沒有較長篇幅的理論知識,更多的是 示例驅動開發,鼓勵讀者通過快速實踐加深基礎理解,加快學習速度。 全書按照章節順序閱讀即可,其中一些 ...
  • 背景 管理資料庫的界面工具。 開發團隊中一般有非技術背景人員,比如: 產品,功能測試人員; 對他們來說,可能安裝資料庫管理工具客戶端都很麻煩,需要一款線上的網頁工具能方便他們查閱數據。 本地docker安裝 單庫: docker run --name myadmin -d -e PMA_HOST=l ...
  • dubbo當前版本 2.7.3 期望升級到 3.0.11。 升級過程 maven依賴變更 <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>3.0.11</version> ...
  • 前言 本文給大家分享的是如何通過利用Python實現多功能音樂播放器,廢話不多直接開整~ 開發工具 Python版本: 3.6 相關模塊: os模塊 sys模塊 time模塊 random模塊 PyQt5模塊 環境搭建 安裝Python並添加到環境變數,pip安裝需要的相關模塊即可。 文中完整源碼, ...
  • 官方資料 官方解釋: https://pkg.go.dev/cmd/go#hdr-Build_constraints ,go help buildconstraint 也能看到描述 根據官方描述,go1.16開始建議使用go:build方式,與+build相比更容易被人閱讀。 有關go:build註 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...