【linux】keepalived

.高可用集群

1.1 集群類型

LBLoad Balance 負載均衡
LVS/HAProxy/nginxhttp/upstream, stream/upstream
HAHigh Availability 高可用集群
數據庫、Redis
SPoF: Single Point of Failure,解決單點故障
HPCHigh Performance Computing 高性能集群

1.2 系統可用性

SLAService-Level Agreement 服務等級協議(提供服務的企業與客戶之間就服務的品質、水準、性能等方面所達成的雙方共同認可的協議或契約)

1.3 系統故障

硬件故障:設計缺陷、wear out(損耗)、非人為不可抗拒因素
軟件故障:設計缺陷 bug

1.4 實現高可用

提升系統高用性的解決方案:降低MTTR- Mean Time To Repair(平均故障時間)
解決方案:建立冗余機制
  • active/passive /
  • active/active 雙主
  • active --> HEARTBEAT --> passive
  • active <--> HEARTBEAT <--> active

1.5.VRRPVirtual Router Redundancy Protocol

虛擬路由冗余協議,解決靜態網關單點風險
  • 物理層:路由器、三層交換機
  • 軟件層:keepalived

1.5.1 VRRP 相關術語

  • 虛擬路由器:Virtual Router
  • 虛擬路由器標識:VRID(0-255),唯一標識虛擬路由器
  • VIPVirtual IP
  • VMACVirutal MAC (00-00-5e-00-01-VRID)
  • 物理路由器:
    • master:主設備
    • backup:備用設備
    • priority:優先級

1.5.2 VRRP 相關技術

通告:心跳,優先級等;周期性
工作方式:搶占式,非搶占式
安全認證:
  • 無認證
  • 簡單字符認證:預共享密鑰
  • MD5
工作模式:
  • /備:單虛擬路由器
  • /主:主/備(虛擬路由器1),備/主(虛擬路由器2

.Keepalived 部署

2.1 keepalived 簡介

vrrp 協議的軟件實現,原生設計目的為了高可用 ipvs服務
官網:http://keepalived.org/
功能:
  • 基于vrrp協議完成地址流動
  • vip地址所在的節點生成ipvs規則(在配置文件中預先定義)
  • ipvs集群的各RS做健康狀態檢測
  • 基于腳本調用接口完成腳本中定義的功能,進而影響集群事務,以此支持nginxhaproxy等服務

2.2 Keepalived 架構

  • 用戶空間核心組件:
    • vrrp stackVIP消息通告
    • checkers:監測real server
    • system call:實現 vrrp 協議狀態轉換時調用腳本的功能
    • SMTP:郵件組件
    • IPVS wrapper:生成IPVS規則
    • Netlink Reflector:網絡接口
    • WatchDog:監控進程
  • 控制組件:提供keepalived.conf 的解析器,完成Keepalived配置
  • IO復用器:針對網絡目的而優化的自己的線程抽象
  • 內存管理組件:為某些通用的內存管理功能(例如分配,重新分配,發布等)提供訪問權限

2.3 Keepalived 環境準備

拓撲:

  • 各節點時間必須同步:ntp, chrony
  • 關閉防火墻及SELinux
  • 各節點之間可通過主機名互相通信:非必須
  • 建議使用/etc/hosts文件實現:非必須
  • 各節點之間的root用戶可以基于密鑰認證的ssh服務完成互相通信:非必須

2.4 Keepalived 相關文件

  • 軟件包名:keepalived
  • 主程序文件:/usr/sbin/keepalived
  • 主配置文件:/etc/keepalived/keepalived.conf
  • 配置文件示例:/usr/share/doc/keepalived/
  • Unit File/lib/systemd/system/keepalived.service
  • Unit File的環境配置文件:/etc/sysconfig/keepalived

2.5 Keepalived 安裝

[root@KA1 ~]# dnf install keepalived -y
[root@KA1 ~]# systemctl start keepalived

2.6 KeepAlived 配置說明

2.6.1 配置文件組成部分

配置文件:/etc/keepalived/keepalived.conf
配置文件組成
  • GLOBAL CONFIGURATION
????????Global definitions: 定義郵件配置,route_idvrrp配置,多播地址等
  • VRRP CONFIGURATION
????????VRRP instance(s):
????????定義每個vrrp虛擬路由器
  • LVS CONFIGURATION
????????Virtual server group(s)
????????Virtual server(s):
????????LVS集群的VSRS

三.實驗步驟

設備IP
KA1172.25.254.20
KA2172.25.254.30
RS1172.25.254.40
RS2172.25.254.50
cilent172.25.254.110

1.設置IP地址和主機名,并關閉防火墻

通過腳本,前兩篇文章有腳本

KA1、KA2

RS1、RS2

所有機器:

2.KA1和KA2間設置NTP(時間同步)

KA1:KA1設置允許其他主機找自己進行時間同步

KA2:KA2找KA1進行時間同步

KA2校驗時間同步:

3.KA1、KA2安裝keepalived和ipvsadm包,RS1、RS2安裝nginx和mariadb-server包,cilent安裝mariadb包

KA1、KA2:

RS1、RS2:

cilent:

4.配置主備模式

4.1配置全局參數:global_defs:(KA1、KA2都配置一樣)

4.2配置虛擬路由器

KA1:

KA1使用-t -f 檢測配置:

KA2:

KA2使用 -t -f檢測配置:

也可以使用單播進行配置:

單播效果:

4.3檢驗效果

KA1監聽組播地址

當KA1的keepalived掛掉的時候,再查看監聽:

說明KA1掛掉的時候,KA2已經接替了KA1的工作,VIP現在在KA2上:

KA2,VIP在KA2上:

KA1,當KA1再次啟動的時候,VIP又因為KA1的優先級高,自動切換回來:

5.啟動keepalived日志功能:

編輯.etc.sysconfig.keepalived文件,啟動日志功能:

編輯.etc.rsyslog.conf文件:

重啟syslog服務:

成功啟動日志:

6.配置獨立子配置文件

7.非搶占模式配置、搶占模式延遲

非搶占模式:

搶占模式延遲:

8.企業級應用實例(雙主模式)

KA1配置:

global_defs {notification_email {weiyihong@163.com}notification_email_from keepalived@KA1.comsmtp_server 172.0.0.1smtp_connect_timeout 30router_id KA1.wyh.comvrrp_skip_check_adv_addrvrrp_garp_interval 1vrrp_gna_interval 1vrrp_mcast_group4 224.0.0.44
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev  eth0 label eth0:0}
}vrrp_instance VI_2 {state BACKUPinterface eth0virtual_router_id 52priority 80nopreemptadvert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.200/24 dev  eth0 label eth0:1}
}virtual_server 172.25.254.100 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 172.25.254.40 80 {weight 1TCP_CHECK {connect_timeout 5retry 3delay_before_retry 3connect_port 80}}real_server 172.25.254.50 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 1retry 3delay_before_retry 1}}
}

KA2配置:

global_defs {notification_email {weiyihong@163.com}notification_email_from keepalived@KA1.comsmtp_server 172.0.0.1smtp_connect_timeout 30router_id KA1.wyh.comvrrp_skip_check_adv_addrvrrp_garp_interval 1vrrp_gna_interval 1vrrp_mcast_group4 224.0.0.44
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev  eth0 label eth0:0}
}vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 52priority 100nopreemptadvert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.200/24 dev  eth0 label eth0:1}
}virtual_server 172.25.254.100 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 172.25.254.40 80 {weight 1TCP_CHECK {connect_timeout 5retry 3delay_before_retry 3connect_port 80}}real_server 172.25.254.50 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 1retry 3delay_before_retry 1}}
}

開啟雙主模式:

KA1:

KA2:

效果1:

效果2:

效果3:

9.在其基礎上配置后端RS服務

RS1、RS2寫默認網頁區別:

RS1使用腳本綁定VIP至web服務器lo網卡:

RS2使用腳本綁定VIP至web服務器lo網卡:

KA1服務配置,KA2同理:

后端RS1、RS2配置回環IP:

RS1、RS2都添加環回網卡100:

IPVS效果1:

IPVS效果2:ipvs高可用,當RS1故障時,流量自動打到RS2上

當RS1恢復的后,流量又開始負載均衡

ipvs高可用,當ka1失效時,ka2接管VIP,流量也同樣可以負載均衡:

10.再次基礎上再在RS上加一個服務,使得兩個VIP都可以用上,實現KA的互相負載,RS的互相負載。

RS1、RS2都添加環回網卡200:

KA1、KA2配置都一樣:

virtual_server 172.25.254.200 3306 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 172.25.254.40 3306 {weight 1TCP_CHECK {connect_timeout 5retry 3delay_before_retry 3connect_port 3306}}real_server 172.25.254.50 3306 {weight 1TCP_CHECK {connect_timeout 5retry 3delay_before_retry 3connect_port 3306}}
}

編輯/etc/my.cnf文件,測試的時候標識是哪臺數據庫

標識RS1:

標識RS2:

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

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

相關文章

Webpack配置原理

一、Loader&#xff1a; 1、定義&#xff1a;將不同類型的文件轉換為 webpack 可識別的模塊2、分類&#xff1a; ① pre&#xff1a; 前置 loader &#xff08;1&#xff09;配置&#xff1a;在 webpack 配置文件中通過enforce進行指定 loader的優先級配置&#xff08;2&#x…

對比JS“上下文”與“作用域”

下面從定義、特性、示例&#xff0c;以及在代碼分析中何時側重“上下文”&#xff08;Execution Context/this&#xff09;和何時側重“作用域”&#xff08;Scope/變量查找&#xff09;&#xff0c;以及二者結合的場景來做對比和指導。一、概念對比 | 維度 | 上下文&#xff0…

如何做數據增強?

目錄 1、為什么要做數據增強&#xff1f; 2、圖像數據增強&#xff1f; 3、文本與音頻數據增強&#xff1f; 4、高級數據增強&#xff1f; 數據增強技術就像是一種“造數據”的魔法&#xff0c;通過對原始數據進行各種變換&#xff0c;生成新的樣本&#xff0c;從而提高模型…

Go by Example

網頁地址Go by Example 中文版 Github倉庫地址mmcgrana/gobyexample&#xff1a;按示例進行 HelloWorld package mainimport ("fmt" )func main() {fmt.Println("Hello World") } Hello World 值 package mainimport ("fmt" )func main() {…

ClickHouse高性能實時分析數據庫-消費實時數據流(消費kafka)

告別等待&#xff0c;秒級響應&#xff01;這不只是教程&#xff0c;這是你駕馭PB級數據的超能力&#xff01;我的ClickHouse視頻課&#xff0c;凝練十年實戰精華&#xff0c;從入門到精通&#xff0c;從單機到集群。點開它&#xff0c;讓數據處理速度快到飛起&#xff0c;讓你…

電子電氣架構 --- 車載軟件與樣件產品交付的方法

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

C++:STL中vector的使用和模擬實現

在上一篇中講到了string類&#xff0c;string并不屬于STL中因為string出現的比STL早&#xff0c;但是在使用方法上兩者有相似之處&#xff0c;學習完string后再來看vector會容易的多&#xff0c;接著往下閱讀&#xff0c;一定會有收獲滴&#xff01; 目錄 vector的介紹 vect…

倉庫管理的流程、績效和解決方案?

什么是倉庫管理&#xff1f; 倉庫管理涉及對所有倉庫運營的日常監督。一個全面、集成的倉庫管理解決方案采用行業最佳實踐&#xff0c;并涵蓋使高效運營得以實現的所有基本要素。這些要素包括分銷和庫存管理、倉庫勞動力管理以及業務支持服務。此外&#xff0c;由內部提供或與服…

TIM 實現定時中斷【STM32L4】【實操】

使用定時器實現定時中斷的功能&#xff1a;比如每1ms進入中斷處理函數使用STM32CubeMX配置TIM初始化先了解每個參數的含義&#xff0c;在進行配置Counter Settings: 計數器基本設置Prescaler(PSC): 預分頻器&#xff0c;設置預分頻器系數Counter Mode: 技術模式&#xff0c;…

Elasticsearch 的聚合(Aggregations)操作詳解

目錄 1. 概述 2. 聚合類型分類詳解 2.1 桶聚合&#xff08;Bucket Aggregations&#xff09; 2.1.1 基礎桶聚合 2.1.2 特殊桶聚合 2.1.3 高級桶聚合 2.2 指標聚合&#xff08;Metric Aggregations&#xff09; 2.2.1 單值指標聚合&#xff08;Single-value Metrics&am…

電子電氣架構 --- 高階智能駕駛對E/E架構的新要求

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

0.深度學習環境配置步驟

0.深度學習環境配置步驟 這里介紹深度學習環境配置詳細步驟&#xff0c;包括安裝軟件&#xff0c;每一步都有安裝時的截圖&#xff08;后續持續更新&#xff0c;敬請關注&#xff09; 目錄如下&#xff1a; 1.安裝anaconda 2.安裝CUDA 3.安裝CU_DNN 4.安裝pytorch

在 Azure 中配置 SMS 與 OTP

1. Azure Active Directory B2C (AAD B2C) 中的 SMS/OTP 身份驗證 1.1. 現狀與原理&#xff1a;電話注冊與登錄 Azure Active Directory B2C (AAD B2C) 提供了將電話號碼作為用戶身份標識進行注冊和登錄的功能&#xff0c;旨在為用戶提供一種便捷的替代傳統電子郵件或用戶名登錄…

簡單實現支付密碼的頁面及輸入效果

干我們這行&#xff0c;風吹日曬不到&#xff0c;就怕甲方突發奇想。 今天客戶要做一個安全密碼前置校驗&#xff0c;還要做成支付寶那種效果。ps:android端 心理吐槽了一萬遍以后&#xff0c;還是得面對現實。 先用通義問一遍&#xff0c;給了兩個方案&#xff0c;要么自己寫&…

proxmox 解決docker容器MongoDB創建報錯MongoDB 5.0+ requires a CPU with AVX support

目錄 最簡單直接的方式 測試MongoDB docker compose的安裝shell腳本 驗證訪問 最簡單直接的方式 讓虛擬機直接使用宿主機的物理 CPU 功能標志。 打開 Proxmox Web UI。 選擇你的 VM → 硬件 (Hardware) → CPU → 點擊 編輯 (Edit)。 將 CPU 類型改為 host。 確認并重啟…

向前滾動累加SQL 實現思路

一、業務背景在經營分析場景里&#xff0c;我們經常需要回答&#xff1a;“截至今天&#xff0c;過去 N 天/月/周累計發生了多少&#xff1f;”“把維度切到省、市、房型、項目經理、代理商等&#xff0c;結果又是什么&#xff1f;”本文用兩個真實需求做演示&#xff1a;以天為…

Spring AI(14)——文本分塊優化

RAG時&#xff0c;檢索效果的優劣&#xff0c;和文本的分塊的情況有很大關系。SpringAI中通過TokenTextSplitter對文本分塊。本文對SpringAI提供的TokenTextSplitter源碼進行了分析&#xff0c;并給出一些自己的想法&#xff0c;歡迎大家互相探討。查看了TokenTextSplitter的源…

Python----大模型(RAG 的智能評估-LangSmith)

一、LangSmith LangSmith是LangChain的一個子產品&#xff0c;是一個大模型應用開發平臺。它提供了從原 型到生產的全流程工具和服務&#xff0c;幫助開發者構建、測試、評估和監控基于LangChain 或其他 LLM 框架的應用程序。 安裝 LangSmith pip install langsmith0.1.137 官網…

磁懸浮軸承轉子不平衡質量控制策略設計:原理、分析與智能實現

磁懸浮軸承(Active Magnetic Bearing, AMB)以其無接觸、無摩擦、高轉速、無需潤滑等革命性優勢,在高端旋轉機械領域(如高速電機、離心壓縮機、飛輪儲能、航空航天動力系統)展現出巨大潛力。然而,轉子固有的質量不平衡是AMB系統面臨的核心挑戰之一,它誘發強同步振動,威脅…

C++查詢mysql數據

文章目錄 文章目錄 1.前言 2. 代碼 &#xff08;1&#xff09;執行查詢SQL &#xff08;2&#xff09;獲取結果集 &#xff08;3&#xff09;遍歷結果集&#xff08;獲取字段數、行數&#xff09; &#xff08;4&#xff09;釋放資源 3.完整代碼 1.前言 我們成功連接數…