LVS +Keepalived高可用群集

目錄

一:Keepalived雙機熱備基礎知識

1.Keepalived 概述及安裝

1.1.Keepalived的熱備方式

1.2.Keepalived 的安裝與服務控制

(1)安裝Keepalived

(2)控制Keepalived服務

2.使用Keepalived實現雙機熱備

2.1.主服務器的配置

2.2.備用服務器配置

2.3.檢測雙機熱備功能

(1)連通性測試

(2)web訪問測試

(3)查看日志記錄

二:使用Keepalived實現雙機熱備

1.基礎環境配置

2.配置主調度器

(1)全局配置,熱備配置

(2)web服務器池配置

(3)重新啟動Keepalived

3.配置從調度器

4.配置web節點服務器

5.測試LVS+Keepalived高可用群集


一:Keepalived雙機熱備基礎知識

? ? ? Keepalived 起初是專門針對 LVS 設計的一款強大的輔助工具,主要用來提供故障切換(Failover)和健康檢査(Health Checking)功能--判斷 LVS 負載調度器、節點服務器的可用性,當master 主機出現故障及時切換到 backup節點保證業務正常,當 master 故障主機恢復后將其重新加入群集并且業務重新切換回 master 節點。

1.Keepalived 概述及安裝

? ? ? Keepalived 的官方網站位于 http://www.keepalived.org/,本章將以 YUM方式講解 Keepalived 的安裝、配置和使用過程。在非 LVS 群集環境中使用時,Keepalived 也可以作為熱備軟件使用。

1.1.Keepalived的熱備方式

? ? ? Keepalived 采用 VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協議)熱備份協議,以軟件的方式實現 Linux 服務器的多機熱備功能。VRRP是針對路由器的一種備份解決方案--由多臺路由器組成一個熱備組,通過共用的虛擬IP地址對外提供服務;每個熱備組內同一時刻只有一臺主路由器提供服務,其他路由器處于冗余狀態。若當前在線的路由器失效,則其他路由器會自動接替(優先級決定接替順序)虛擬IP地址,以繼續提供服務。
? ? ? 熱備組內的每臺路由器都可能成為主路由器,虛擬路由器的IP地址(VIP)可以在熱備組內的路由器之間進行轉移,所以也稱為漂移IP地址。使用Keepalived 時,漂移地址的實現不需要手動建立虛接口配置文件(如 ens33 :0),而是由 Keepalived 根據配置文件自動管理。

操作系統配置IP服務
OpenEuler242C4G192.168.10.101keepalived/nginx
OpenEuler242C4G192.168.10.102keepalived/nginx

?

1.2.Keepalived 的安裝與服務控制

(1)安裝Keepalived
yum install -y keepalived ipvsadm nginx
(2)控制Keepalived服務
systemctl enable keepalived

2.使用Keepalived實現雙機熱備

2.1.主服務器的配置

systemctl stop firewalld //關閉防火墻
setenforce 0
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
vi keepalived.conf
global_defs {router_id HA_TEST_R1     //本路由器(服務器)的名稱
}
vrrp_instance VI_1 {       //定義 VRRP 熱備實例state MASTER     //熱備狀態,MASTER 表示主服務器interface ens33     //承載 VIP 地址的物理接口virtual_router_id 1     //虛擬路由器的 ID 號,每個熱備組保持一致priority 100     //優先級,數值越大優先級越高advert_int 1     //通告間隔秒數(心跳頻率)authentication {     //認證信息,每個熱備組保持一致auth_type PASS     //認證類型auth_pass 123456     //密碼字串}virtual_ipaddress {     //指定漂移地址(VIP),可以有多個192.168.10.100}
}
systemctl start keepalived
ip addr show dev ens33

2.2.備用服務器配置

  1. 在同一個 Keepalived 熱備組內,所有服務器的 Keepalived 配置文件基本相同,包括虛擬路由器的 ID 號、認證信息、漂移地址、心跳頻率等。不同之處主要在于路由器名稱、熱備狀態、優先級。
  • 路由器名稱(router_id):建議為每個參與熱備的服務器指定不同的名稱。
  • 熱備狀態(state):至少應有一臺主服務器,將狀態設為 MASTER;可以有多臺備用的服務器,將狀態設為 BACKUP。
  • 優先級(priority):數值越大則取得 VIP 控制權的優先級越高,因此主服務器的優先級應設為最高;其他備用服務器的優先級可依次遞減,但不要相同,以免在爭奪 VIP 控制權時發生沖突。

配置備用服務器(可以有多臺)時,可以參考主服務器的 keepalived.conf 配置文件內容,只需修改路由器名稱、熱備狀態、優先級

systemctl stop firewalld //關閉防火墻
setenforce 0
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
vi keepalived.conf
global_defs {router_id HA_TEST_R2     //本路由器(服務器)的名稱
}
vrrp_instance VI_1 {       //定義 VRRP 熱備實例state BACKUP     //熱備狀態,BACKUP 表示備用服務器interface ens33     //承載 VIP 地址的物理接口virtual_router_id 1     //虛擬路由器的 ID 號,每個熱備組保持一致priority 90     //優先級,低于主服務器advert_int 1     //通告間隔秒數(心跳頻率)authentication {     //認證信息,每個熱備組保持一致auth_type PASS     //認證類型auth_pass 123456     //密碼字串}virtual_ipaddress {     //指定漂移地址(VIP),可以有多個192.168.10.100}
}
systemctl start keepalived
ip addr show dev ens33

2.3.檢測雙機熱備功能

? ? ? Keepalived 的日志消息保存在 /var/log/messages 文件中,在測試主、備故障自動切換功能時,可以跟蹤此日志文件來觀察熱備狀態的變化。以針對連通性和 Web 服務的測試為例,主要操作如下。

(1)連通性測試

? ? ? 在客戶機中執行 “ping -t 192.168.10.100” 命令,能夠正常、持續 ping 通,根據以下操作繼續觀察測試結果。
① 停止啟用主服務器的 Keepalived 服務,發現 ping 測試只中斷了 1 或 2 個包即恢復正常,說明已有其他服務器接替 VIP 地址,并及時響應客戶機請求。
② 重新啟用主服務器的 Keepalived 服務,發現 ping 測試再次中斷 1 或 2 個包即恢復正常,說明主服務器已恢復正常,并奪回 VIP 地址的控制權。

(2)web訪問測試
# Keepalived01
systemctl start nginx
echo "web01" >/usr/share/nginx/html/index.html# Keepalived02
systemctl start nginx
echo "web02" >/usr/share/nginx/html/index.html

? ? ?在 keepalived 運行的主機上啟動 nginx 服務并寫入不通的測試頁面內容
① 停止啟用主服務器的 Keepalived 服務,再次訪問上述 Web 服務,將看到由備用服務器 192.168.10.102 提供的網頁文檔,說明 VIP 地址已切換至備用服務器。
② 重新啟用主服務器的 Keepalived 服務,再次訪問上述 Web 服務,將看到重新由主服務器 192.168.10.101 提供的網頁文檔,說明主服務器已重新奪取 VIP 地址。

(3)查看日志記錄

在執行主、備服務器故障切換的過程中,分別觀察各自的 /var/log/messages 日志文件,可以看到 MASTER、SLAVE 狀態的遷移記錄。
① 主服務器中,Keepalived 服務狀態先變為 “stop”,移除 VIP 地址,恢復后重新變為 MASTER。

less /var/log/messages

二:使用Keepalived實現雙機熱備

操作系統配置主機名IP服務
OpenEuler242C4Glb01192.168.10.101Keepalived/ipvsadm
OpenEuler242C4Glb01192.168.10.102Keepalived/ipvsadm
OpenEuler242C4Gweb01192.168.10.103Nginx
OpenEuler242C4Gweb02192.168.10.104Nginx
OpenEuler242C4Gnfs-server192.168.10.105nfs-utils/rpcbind

1.基礎環境配置

# 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld# 關閉內核安全機制
setenforce 0
sed -i "s/^SELINUX=.*$/SELINUX=disabled/g" /etc/selinux/config# 修改主機名
hostnamectl set-hostname lb01
hostnamectl set-hostname lb02
hostnamectl set-hostname web01
hostnamectl set-hostname web02# 加載 ip_vs 模塊
modprobe ip_vs# 查看 ip_vs 版本信息
cat /proc/net/ip_vs# 安裝服務并備份模板配置文件
yum install ipvsadm keepalived -y
cp /etc/keepalived/keepalived.conf{,.bak}

2.配置主調度器

(1)全局配置,熱備配置
vi keepalived.conf
global_defs {router_id HA_TEST_R1     //本路由器(服務器)的名稱
}
vrrp_instance VI_1 {       //定義 VRRP 熱備實例state MASTER     //熱備狀態,MASTER 表示主服務器interface ens33     //承載 VIP 地址的物理接口virtual_router_id 1     //虛擬路由器的 ID 號,每個熱備組保持一致priority 100     //優先級,數值越大優先級越高advert_int 1     //通告間隔秒數(心跳頻率)authentication {     //認證信息,每個熱備組保持一致auth_type PASS     //認證類型auth_pass 123456     //密碼字串}virtual_ipaddress {     //指定漂移地址(VIP),可以有多個192.168.10.100}
}
(2)web服務器池配置
vi /etc/keepalived/keepalived.conf
......  #省略部分信息
virtual_server 192.168.10.100 80 {    #虛擬服務器地址(VIP)、端口delay_loop 15        #健康檢查的間隔時間(秒)lb_algo rr        #輪詢(rr)調度算法lb_kind DR        #直接路由(DR)群集工作模式! persistence 60    #連接保持時間(秒),若啟用請去掉!號protocol TCP        #應用服務采用的是 TCP 協議real_server 192.168.10.103 80 {    #第一個 Web 節點的地址、端口weight 1        #節點的權重TCP_CHECK {    #健康檢查方式connect_port 80    #檢查的目標端口connect_timeout 3    #連接超時(秒)nb_get_retry 3    #重試次數delay_before_retry 4    //重試間隔(秒)}}
real_server 192.168.10.104 80 {    #第二個 Web 節點的地址、端口weight 1        #節點的權重TCP_CHECK {    #健康檢查方式connect_port 80    #檢查的目標端口connect_timeout 3    #連接超時(秒)nb_get_retry 3    #重試次數delay_before_retry 4    //重試間隔(秒)
}
(3)重新啟動Keepalived
systemctl restart keepalived

3.配置從調度器

vi /etc/keepalived/keepalived.conf
......  #省略部分信息
virtual_server 192.168.10.100 80 {    #虛擬服務器地址(VIP)、端口delay_loop 15        #健康檢查的間隔時間(秒)lb_algo rr        #輪詢(rr)調度算法lb_kind DR        #直接路由(DR)群集工作模式! persistence 60    #連接保持時間(秒),若啟用請去掉!號protocol TCP        #應用服務采用的是 TCP 協議real_server 192.168.10.103 80 {    #第一個 Web 節點的地址、端口weight 1        #節點的權重TCP_CHECK {    #健康檢查方式connect_port 80    #檢查的目標端口connect_timeout 3    #連接超時(秒)nb_get_retry 3    #重試次數delay_before_retry 4    //重試間隔(秒)}}
real_server 192.168.10.104 80 {    #第二個 Web 節點的地址、端口weight 1        #節點的權重TCP_CHECK {    #健康檢查方式connect_port 80    #檢查的目標端口connect_timeout 3    #連接超時(秒)nb_get_retry 3    #重試次數delay_before_retry 4    //重試間隔(秒)
}
systemctl restart keepalived

4.配置web節點服務器

ip addr add 192.168.10.100/32 dev lo label lo:0
nmcli c reload
nmcli c up lo
ip router add local 192.168.10.100/30 dev lo       #不需要敲
router add -host 192.168.10.172 dev lo
永久生效:
vim /etc/rc.local
ip addr add 192.168.10.100/32 dev lo label lo:0  
:wq
chmod +x /etc/rc.localvim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p 

5.測試LVS+Keepalived高可用群集

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83086.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83086.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入剖析Java類加載機制:雙親委派模型的突破與實戰應用

引言:一個詭異的NoClassDefFoundError 某金融系統在遷移到微服務架構后,突然出現了一個詭異問題:在調用核心交易模塊時,頻繁拋出NoClassDefFoundError,但類明明存在于classpath中。經過排查,發現是由于不同…

Go語言的context

Golang context 實現原理 本篇文章是基于小徐先生的文章的修改和個人注解,要查看原文可以點擊上述的鏈接查看 目前我這篇文章的go語言版本是1.24.1 context上下文 context被當作第一個參數(官方建議),并且不斷的傳遞下去&…

BERT、GPT-3與超越:NLP模型演進全解析

自然語言處理(NLP)領域近年來經歷了前所未有的變革,從早期的統計方法到如今的深度學習大模型,技術的進步推動了機器理解、生成和交互能力的飛躍。其中,BERT和GPT-3作為兩個里程碑式的模型,分別代表了不同的…

Kanass入門教程- 事項管理

kanass是一款國產開源免費、簡潔易用的項目管理工具,包含項目管理、項目集管理、事項管理、版本管理、迭代管理、計劃管理等相關模塊。工具功能完善,用戶界面友好,操作流暢。本文主要介紹事項管理使用指南。 1、添加事項 事項有多種類型 分…

2025年5月個人工作生活總結

本文為 2025年5月工作生活總結。 研發編碼 一個項目的臨時記錄 月初和另一項目同事向業主匯報方案,兩個項目都不滿意,后來領導做了調整,將項目合并,拆分了好幾大塊。原來我做的一些工作,如數據庫、中間件等&#xff…

? Unity AVProVideo插件自帶播放器 腳本重構 實現視頻激活重置功能

一、功能概述 本筆記記錄直接修改插件自帶的場景播放其中 原始的 MediaPlayerUI 腳本,實現激活時自動重置播放器的功能。 我用的插件版本是 AVPro Video - Ultra Edition 2.7.3 修改后的腳本將具備以下特性: 激活 GameObject 時自動重置播放位置到開頭 可配置是否在重置后自…

5.31 數學復習筆記 22

前面的筆記,全部寫成一段,有點難以閱讀。現在改進一下排版。另外,寫筆記實際上就是圖一個放松呢,關鍵還是在于練習。 目前的計劃是,把講義上面的高數例題搞清楚之后,大量刷練習冊上面的題。感覺不做幾本練…

什么是 WPF 技術?什么是 WPF 樣式?下載、安裝、配置、基本語法簡介教程

什么是 WPF 技術?什么是 WPF 樣式?下載、安裝、配置、基本語法簡介教程 摘要 WPF教程、WPF開發、.NET 8 WPF、Visual Studio 2022 WPF、WPF下載、WPF安裝、WPF配置、WPF樣式、WPF樣式詳解、XAML語法、XAML基礎、MVVM架構、數據綁定、依賴屬性、資源字典…

ROS2與Unitree機器人集成指南

Tested systems and ROS2 distro systemsROS2 distroUbuntu 20.04foxyUbuntu 22.04humblesrc目錄上級才可以colcon build git clone https://github.com/unitreerobotics/unitree_ros2 Install Unitree ROS2 package 1. Dependencies sudo apt install ros-humble-rmw-cyclon…

深入探討集合與數組轉換方法

目錄 1、Arrays.asList() 1.1、方法作用 1.2、內部實現 1.3、修改元素的影響 1.4、注意事項 2、list.toArray() 2.1、方法作用 2.2、內部實現 2.3、修改元素的影響 2.4、特殊情況 1、對象引用 2、數組copy 3、對比總結 4、常見誤區與解決方案 5、實際應用建議…

深入理解交叉熵損失函數——全面推演各種形式

帶你從不一樣的視角綜合認識交叉熵損失,閱讀這篇文章,幫你建立其分類問題,對比學習,行人重識別,人臉識別等問題的聯系,閱讀這篇文章相信對你閱讀各種底層深度學習論文有幫助。 引言 1. 重新理解全連接層&…

STM32之FreeRTOS移植(重點)

RTOS的基本概念 實時操作系統(Real Time Operating System)的簡稱就叫做RTOS,是指具有實時性、能支持實時控制系統工作的操作系統,RTOS的首要任務就是調度所有可以利用的資源來完成實時控制任務的工作,其次才是提高工…

MySQL connection close 后, mysql server上的行為是什么

本文著重講述的是通過 msql client 連接到 mysql server ,發起 update 、 select 操作(由于數據量非常大,所以 update、select 操作都很耗時,即在結果返回前我們有足夠的時間執行一些操作) 。 在客戶端分別嘗試執行 ctrl C 結束關閉 mysql c…

dvwa3——CSRF

LOW: 先嘗試change一組密碼:123456 修改成功,我們觀察上面的url代碼 http://localhost/DVWA/vulnerabilities/csrf/?password_new123456&password_conf123456&ChangeChange# 將password_new部分與password_conf部分改成我們想要的…

Linux 中常見的安全與權限機制

Linux 中常見的安全與權限機制主要包括以下幾類,從文件系統權限到系統級訪問控制,構建了多層次的安全保障體系。 🔐 一、文件權限與用戶管理 1. 基本權限(rwx) r(read):讀取文件內…

CSS篇-3

1. CSS 中哪些樣式可以繼承?哪些不可以繼承? 可繼承的樣式: 與字體相關的樣式,如:font-size、font-family、color 列表樣式:list-style(如 UL、OL 的 list-style-type) 不可繼承…

計算機網絡物理層基礎練習

第二章 物理層 填空題 從通信雙方信息交互的方式來看,通信的三種基本方式為單工、半雙工和全雙工。其中,單工數據傳輸只支持數據在一個方向上傳輸,全雙工數據傳輸則允許數據同時在兩個方向上傳輸。最基本的帶通調制方法包括三種&#xff1a…

Redis7底層數據結構解析

redisObject 在 Redis 的源碼中,Redis 會將底層數據結構(如 SDS、hash table、skiplist 等)統一封裝成一個對象,這個對象叫做 redisObject,也簡稱 robj。 typedef struct redisObject {unsigned type : 4; // 數…

華為OD機試_2025 B卷_靜態掃描(Python,100分)(附詳細解題思路)

題目描述 靜態掃描可以快速識別源代碼的缺陷,靜態掃描的結果以掃描報告作為輸出: 1、文件掃描的成本和文件大小相關,如果文件大小為N,則掃描成本為N個金幣 2、掃描報告的緩存成本和文件大小無關,每緩存一個報告需要…

【Java】在 Spring Boot 中連接 MySQL 數據庫

在 Spring Boot 中連接 MySQL 數據庫是一個常見的任務。Spring Boot 提供了自動配置功能,使得連接 MySQL 數據庫變得非常簡單。以下是詳細的步驟: 一、添加依賴 首先,確保你的pom.xml文件中包含了 Spring Boot 的 Starter Data JPA 和 MySQ…