磐維數據庫panweidb集中式集群配置VIP【添加、刪除和修改】

0 說明

panweidb集中式集群為了防止主備切換后應用連接無法切換到新主庫,需要配置vip,應用可以只通過該ip與數據庫連接,不用感知數據庫在哪個節點上。

panweidb中配置 VIP主要依賴 CM 組件的 VIP 仲裁功能,通過回調腳本在主備切換時自動完成 VIP 的漂移。當 cm_agent 監測到本地數據庫由備升主后,可執行回調腳本或配置參數將 VIP 綁定到本節點;當本地數據庫由主降備后,則自動解除該 VIP 的綁定。

注意:

  • 要安裝有net-tools依賴包,并為集群用戶添加ifconfig權限。
  • VIP(網卡名:DN端口號)不允許被其他非虛擬IP占用
  • 每個節點上cm_resource.json配置文件必須一致。
  • 只支持重啟方式加載。
  • 允許配置多個VIP,但是每個實例最多支持6個。
  • 只支持IPV4。

維集中書集群配置vip的總體流程如下:

在這里插入圖片描述

1 權限配置

ifconfig提權,修改權限文件/etc/sudoers或執行visudo命令,添加以下內容,為集群用戶添加ifconfig權限。

root 用戶執行:

# 安裝網絡工具包
yum install -y net-tools# 編輯/etc/sudoers文件
visudo
在文件中找到 root ALL=(ALL) ALL,在該行下方添加以下內容:
omm ALL=(ALL:ALL) NOPASSWD:/sbin/ip,/usr/sbin/arping,/sbin/iptables,/sbin/ifconfig# 賦予各命令執行權限
chmod u+s /usr/bin/sudo
chmod +x /usr/sbin/ip
chmod +x /usr/sbin/arping
chmod +x /usr/sbin/iptables
chmod +x /usr/sbin/ifconfig

2 添加VIP

有三種方式添加VIP:

  1. 集群安裝前配置(推薦)
  2. 回調腳本綁定
  3. CM工具配置

2.1 集群安裝前配置

這是在數據庫集群未安裝的場景下配置VIP,通過 cluster_config.xml配置文件指定 VIP 地址。

關注cluster_config.xml文件中的以下參數:

配置項說明
floatIp虛擬 IP 地址
dataListenIp可選參數,各節點監聽 IP,若不配置,則默認使用 backIp1s的值
floatIpMap可選參數,配置 VIP 時需要配置,表示 floatIp 與 dataListenIp 的對應關系,其順序與 dataListenIp1 的順序要相互對應

XML示例如下:

正常成功安裝好集群后,vip會自動配置好:

2.2 回調腳本綁定

確認網卡信息:

使用數據庫安裝用戶omm,在集群內所有節點的 cm_agent 的配置文件目錄下創建 VIP 綁定功能的回調 shell 腳本 cm_callback.sh 文件。

su - omm
cd /database/panweidb/cm/cm_agent
vi cm_callback.sh

添加以下內容,注意根據實際情況調整要綁定的 VIP 網卡名稱、廣播地址、掩碼等參數值:

#!/bin/bash
# -------------------------------------------------------------------------------
# Filename:    cm_callback.sh
# Revision:    1.0
# Date:        2019/10/09
# Description: 
# Notes:       
#      callback 僅實現vip 的 添加和移除        
#              
# -------------------------------------------------------------------------------
# 
# -------------------------------------------------------------------------------readonly cb_name=$1
readonly role=$2
readonly scope=$3VIP=192.168.131.18  # vip 地址
VIPBRD=192.168.131.255 # 廣播地址
VIPNETMASKBIT=24   # 掩碼
VIPDEV=ens33     # 網絡接口名稱,vip會綁定到該接口
VIPLABEL=1   # 接口標簽,默認為1PING_TIMEOUT=2 # 設置為不高于panweidb.yml配置文件里loop_wait的40%,如果loop_wait設置為10,PING_TIMEOUT建議設置為3,如果loop_wait設置為5,建議設置為2function usage() {echo "Usage: $0 <on_start|on_stop|on_role_change> <role> <scope>";exit 1;
}function addvip(){echo "`date +%Y-%m-%d\ %H:%M:%S,%3N` INFO: /sbin/ip addr add ${VIP}/${VIPNETMASKBIT} brd ${VIPBRD} dev ${VIPDEV} label ${VIPDEV}:${VIPLABEL}"sudo /sbin/ip addr add ${VIP}/${VIPNETMASKBIT} brd ${VIPBRD} dev ${VIPDEV} label ${VIPDEV}:${VIPLABEL}sudo /usr/sbin/arping -q -A -c 1 -I ${VIPDEV} ${VIP}#sudo /sbin/iptables -F}function delvip(){echo "`date +%Y-%m-%d\ %H:%M:%S,%3N` INFO: sudo /sbin/ip addr del ${VIP}/${VIPNETMASKBIT} dev ${VIPDEV} label ${VIPDEV}:${VIPLABEL}"sudo /sbin/ip addr del ${VIP}/${VIPNETMASKBIT} dev ${VIPDEV} label ${VIPDEV}:${VIPLABEL}#sudo /usr/sbin/arping -q -A -c 1 -I ${VIPDEV} ${VIP}#sudo /sbin/iptables -F}#if [[ $cb_name != "on_master_check"  ]]; then
#    echo "`date +%Y-%m-%d\ %H:%M:%S,%3N` WARNING: has callback $cb_name $role $scope"
#ficase $cb_name inon_stop)delvip;;on_start)
if [[ $role == "master" ]]; thenaddvip
fi;;on_role_change)if [[ $role == "master" ]]; thenaddvipelif [[ $role == "slave" ]]||[[ $role == "replica" ]]||[[ $role == "logical" ]]; thendelvipfi;;on_master_check)if [[ $role == "master" ]]; thenvip_status=`/sbin/ip addr|grep ${VIP}`if [[ ${vip_status} == "" ]]; thenecho "`date +%Y-%m-%d\ %H:%M:%S,%3N` WARNING: has callback $cb_name $role $scope"echo "`date +%Y-%m-%d\ %H:%M:%S,%3N` WARNING: The vip was lost,bind vip because i am leader"/usr/bin/ping -I ${VIPDEV} -q -c 3 -W ${PING_TIMEOUT} ${VIP}is_vip_used=$?if [[ $is_vip_used -eq 0 ]]; thenecho "`date +%Y-%m-%d\ %H:%M:%S,%3N` WARNING: The vip bind failed, ${VIP} is in use"elseaddvipfififi;; on_slave_check)if [[ $role == "slave" ]]; thenvip_status=`/sbin/ip addr|grep ${VIP}`if [[ ${vip_status} != "" ]]; thendelvipfifi;;  *)usage;;
esac

給腳本文件賦執行權限,用于在本節點數據庫主備角色發生變化時,自動由集群管理服務執行綁定和釋放 VIP 的操作:

chmod u+x cm_callback.sh

接下來,修改集群中每個節點的 cm_agent 配置文件cm_agent.conf 中的 callback_bin_path 參數,將cm_callback.sh腳本路徑寫入到CM配置文件中。

omm用戶執行,切換至數據庫安裝目錄,執行如下命令:

cd /database/panwei/cm/cm_agentvi cm_agent.conf
修改內容:
callback_bin_path = /database/panwei/cm/cm_agent/cm_callback.shvi $GAUSSHOME/bin/alarmConfig.conf
修改內容:
callback_bin_path = /database/panwei/cm/cm_agent/cm_callback.sh

使用數據庫安裝用戶 omm 用戶重啟集群使 VIP 功能的配置生效:

cm_ctl stop
cm_ctl start

查看vip:

主庫在結點3.

在主庫查看IP:

2.3 CM工具配置

這個方式主要是帶CM的數據庫集群已安裝的場景下配置VIP,通過cm_ctl res命令新增floatIp資源。

在每個節點上用數據庫安裝用戶執行以下命令:

# 新增VIP資源,res_name為資源名稱,資源類型resources_type必須指定為VIP,float_ip表示該自定義VIP資源的虛擬ip
cm_ctl res --add --res_name="VIP_az1" --res_attr="resources_type=VIP,float_ip=192.168.131.18"# 編輯各自定義VIP資源VIP_az1,添加節點,node_id表示對應的節點id,res_instance_id用于告知CM綁定的DN實例id,需要與對應的DN實例id對應
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6001" --inst_attr="base_ip=192.168.131.14"
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=2,res_instance_id=6002" --inst_attr="base_ip=192.168.131.15"
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=3,res_instance_id=6003" --inst_attr="base_ip=192.168.131.16"# 使用cm_ctl res --check命令進行檢查
cm_ctl res --check

執行完成后,在/database/panweidb/cm/cm_agent/目錄下會生成一個自定義資源配置文件cm_resource.json,示例如下:

{"resources":    [{"name": "VIP_az1","resources_type":       "VIP","instances":    [{"node_id":      1,"res_instance_id":      6001,"inst_attr":    "base_ip=192.168.131.14"}, {"node_id":      2,"res_instance_id":      6002,"inst_attr":    "base_ip=192.168.131.15"}, {"node_id":      3,"res_instance_id":      6003,"inst_attr":    "base_ip=192.168.131.16"}],"float_ip":     "192.168.131.18"}]

使用數據庫安裝用戶 omm 用戶重啟集群使 VIP 功能的配置生效:

cm_ctl stop
cm_ctl start

3 修改

需要先刪除再添加,直接使用edit命令不生效。

在每個數據庫節點,使用數據庫管理用戶執行,刪除VIP資源:

cm_ctl res --del --res_name="VIP_az1"

新增VIP資源,res_name為資源名稱,資源類型resources_type必須指定為VIP,float_ip表示該自定義VIP資源的虛擬ip:

cm_ctl res --add --res_name="VIP_az1" --res_attr="resources_type=VIP,float_ip=192.168.131.18"

編輯各自定義VIP資源VIP_az1,添加節點,node_id表示對應的節點id,res_instance_id用于告知CM綁定的DN實例id,需要與對應的DN實例id對應:

cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6001" --inst_attr="base_ip=192.168.131.14"
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=2,res_instance_id=6002" --inst_attr="base_ip=192.168.131.15"
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=3,res_instance_id=6003" --inst_attr="base_ip=192.168.131.16"

使用cm_ctl res --check命令進行檢查:

cm_ctl res --check

check后檢查自定義資源配置文件cm_resource.json是否有配置了。

配置無誤后重啟集群生效。

cm_ctl stop
cm_ctl start

4 刪除

刪除vip的場景應該不多,除非是配置的VIP與其他IP沖突了。

在每個節點上用數據庫安裝用戶執行以下命令:

cm_ctl res --del --res_name="VIP_az1"
cm_ctl res --check

刪除后查看資源提示null:

并且自定義資源配置文件cm_resource.json是空的:

依舊是重啟生效。

5 總結

通過以上配置,磐維數據庫集中式集群能夠實現 VIP 的自動漂移,保障數據庫高可用性,簡化應用連接管理,提升系統穩定性與可靠性。

此外,對于多中心集群,如果沒有額外的硬件網絡設施支持,一個VIP無法同時服務于多個中心,所以需要為每個中心或az配置一個VIP。

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

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

相關文章

python的保險業務管理與數據分析系統

前端開發框架:vue.js 數據庫 mysql 版本不限 后端語言框架支持&#xff1a; 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 數據庫工具&#xff1a;Navicat/SQLyog等都可以 保險行業…

R語言如何接入實時行情接口

目錄 1. 安裝必要的R包 2. 導入庫 3. 連接WebSocket 4. 處理連接成功后的操作 5. 處理接收到的消息 6. 處理連接關閉和錯誤 7. 發送心跳數據 8. 自動重連機制 9. 啟動連接和重連 總結 在數據分析和金融研究中&#xff0c;實時行情數據的獲取至關重要&#xff0c;但市…

Redis數據安全性分析

Redis高可用與數據安全機制深度解析前置知識&#xff1a;Redis基礎安裝與使用&#xff08;主從復制、哨兵集群、Cluster集群搭建&#xff09;一、Redis性能壓測工具 工具名稱&#xff1a;redis-benchmark核心作用&#xff1a;快速基準測試Redis性能使用場景&#xff1a;評估不同…

差分和前綴和

差分和前綴和的原理、用法和區別。前綴和&#xff08;Prefix Sum&#xff09;核心思想&#xff1a;預處理數組的前綴和&#xff0c;快速回答「區間和查詢」 適用場景&#xff1a;數組靜態&#xff08;更新少、查詢多&#xff09;&#xff0c;需要頻繁計算任意區間的和1. 定義與…

C++并發編程-12. 用內存順序實現內存模型

前情回顧 前文我們介紹了六種內存順序&#xff0c;以及三種內存模型&#xff0c;本文通過代碼示例講解六種內存順序使用方法&#xff0c;并實現相應的內存模型。全局一致性模型同步模型(獲取和釋放)松散模型memory_order_seq_cst memory_order_seq_cst代表全局一致性順序&#…

AI測試革命:從智能缺陷檢測到自愈式測試框架的工業實踐

AI測試革命&#xff1a;從智能缺陷檢測到自愈式測試框架的工業實踐 希望對大家有用&#xff01; 目錄AI測試革命&#xff1a;從智能缺陷檢測到自愈式測試框架的工業實踐希望對大家有用&#xff01;一、傳統測試之殤&#xff1a;工業質檢的切膚之痛二、智能缺陷檢測系統架構1. …

二、深度學習——損失函數

二、損失函數損失函數定義&#xff1a;損失函數是用來衡量模型參數的質量的函數&#xff0c;衡量方式是比較網絡輸出和真實輸出的差異別名&#xff1a;損失函數&#xff08;loss function&#xff09;&#xff0c;代價函數&#xff08;cost function&#xff09;&#xff0c;目…

面向數據報的套接字通道技術詳解

數據報通道基礎 通道特性與創建方式 java.nio.channels.DatagramChannel類實例代表數據報通道&#xff0c;默認處于阻塞模式。通過configureBlocking(false)方法可將其配置為非阻塞模式。創建數據報通道需調用其靜態open()方法&#xff0c;若用于IP組播則需指定組播組的地址類型…

147.在 Vue3 中使用 OpenLayers 地圖上 ECharts 模擬飛機循環飛行

&#x1f9e9; 效果預覽 &#x1f447; 飛機從多個城市起飛并向其他城市飛行&#xff0c;動畫流暢&#xff0c;地圖可縮放拖拽&#xff1a; &#x1f4e6; 一、項目技術棧 技術用途Vue 3現代前端框架OpenLayers地圖底圖渲染ECharts ol-echarts飛機飛行動畫渲染ol-echarts將 …

OCR與PDF解析的區別

我們日常所接觸的文檔中&#xff0c;經常能碰到多語言混合的文檔。比如論文試卷、財報研報、跨國票據都含有多種語言和文字。要將文檔中的內容識別并提取務必需要使用到OCR技術&#xff0c;而傳統的OCR工具在處理這類型文檔的時候有局限性。早期的 OCR 系統識別精度有限&#x…

Java 單例類詳解:從基礎到高級,掌握線程安全與高效設計

作為一名Java開發工程師&#xff0c;你一定對**單例模式&#xff08;Singleton Pattern&#xff09;**不陌生。它是23種經典設計模式中最簡單也是最常用的一種&#xff0c;用于確保一個類在整個應用程序中只有一個實例存在。單例廣泛應用于系統配置、數據庫連接池、日志管理器、…

面向對象設計

你列出的這些屬于 C 高級開發中面向對象設計與架構設計的核心知識&#xff0c;也是面試高級工程師崗位必問的內容。下面我按順序&#xff0c;深入講解每一項概念、原理、用途&#xff0c;并穿插 C 示例。? 1. 設計原則&#xff08;SOLID&#xff09;SOLID 是面向對象設計的五大…

IntelliJ IDEA讓我的開發效率翻倍:從新手到高效開發者的進階之路

IntelliJ IDEA讓我的開發效率翻倍&#xff1a;從新手到高效開發者的進階之路 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 總有一行代碼&#xff0c;能點亮萬千星辰。 &#x1f50d; 在技術的宇宙中&#xff0c;我愿做永不停歇的探索者。 ? 用…

css sprites使用

CSS Sprites 是一種將多個小圖標或背景圖像合并到一個大圖中的技術。通過減少HTTP請求次數&#xff0c;可以顯著提高頁面加載速度。其核心原理是&#xff1a;通過設置元素的背景圖&#xff08;background-image&#xff09;為這個大圖&#xff0c;然后調整背景位置&#xff08;…

分布式爬蟲在電商平臺商品數據大規模采集中的技術應用

在電商平臺商品數據大規模采集場景中&#xff0c;分布式爬蟲憑借其高效、可擴展、抗風險的特性&#xff0c;成為突破單節點爬蟲性能瓶頸的核心技術方案。以下從技術架構、關鍵技術點、電商場景適配及挑戰應對四個維度&#xff0c;解析其具體應用&#xff1a;一、分布式爬蟲的核…

Linux的`if test`和`if [ ]中括號`的取反語法比較 筆記250709

Linux的if test和if 中括號的取反語法比較 筆記250709 Linux的 test命令&#xff08;或等價中括號寫法 [空格expression空格]&#xff09;的用法詳解. 筆記250709 四種取反語法: if ! test -e xxx ;then... 和 if test ! -e xxx ;then... 和 if ! [ -e xxx ] ;then... 和 if …

記錄使用ubuntu16.04編譯aosp(android8.1與10)遇到的問題

一、前言&#xff1a; 本來打算用wsl來編譯AOSP&#xff0c;但是折騰了好幾天&#xff0c;以失敗告終。后來使用vmware反而成功了。 本篇同樣會把wsl遇到的問題與嘗試記錄下來。 環境&#xff1a;vmware ubuntu16.04。 為什么會使用ubuntu16.04呢&#xff0c;因為在公司有一…

hiredis window之RFDMap

簡介 RFDMap用于將socket分配映射成連續的文件描述符&#xff0c;同時管理回收的文件描述符&#xff0c;因為ae構架中管理fd與對應事件處理器使用的是數據&#xff0c;fd作為數組下標 結構 #mermaid-svg-zQz2LTrKRi0LQTII {font-family:"trebuchet ms",verdana,arial…

RustFS一款Rust 驅動的 高性能 分布式存儲系統

演示地址&#xff1a;https://play.rustfs.com/browser 訪問賬號&#xff08;默認 rustfsadmin&#xff09;。 訪問密鑰&#xff08;默認 rustfsadmin&#xff09;。 下載mc https://dl.min.io/client/mc/release可以直接在 Linux 系統上安裝 mc&#xff08;&#xff0c;然后訪…

微軟 Bluetooth LE Explorer 實用工具的詳細使用分析

微軟 Bluetooth LE Explorer 實用工具的詳細使用分析 文章目錄 微軟 **Bluetooth LE Explorer** 實用工具的詳細使用分析1. **工具定位與核心功能**2. **關鍵特性與更新**3. **使用場景示例**4. **系統要求與依賴**5. **與專業工具對比**6. **局限性**7. **實踐建議**結論以下是…