Redis哨兵模式之Sentinel模式(二)

一、多節點哨兵如何配置?

哨兵配置原理圖

  • 注意:sentinel哨兵模式的搭建是建立在redis主從復制節點配置基礎而搭建,在主從配置中從庫需要配置好replicaof關聯上主庫并關閉安全模式,然后設置好bind端口才能關聯上機器,而這里的如果設置了一臺哨兵機器,首先哨兵機器會通過monitor來監控你的主機器redis-master是否有宕機的可能(狀態表現為sdown-,odown-),然后哨兵會自動對slave配置文件進行配置,定位到master機器,然后后期只針對master機器進行監控即可

## 關閉redis服務
pkill redis## 創建3個哨兵文件
sentinel_26379.conf、sentinel_26380.conf、sentinel_26381.conf模版如下:                                                                                                                                                                                            port 26379
daemonize yes
pidfile /var/run/redis-sentinel_26379.pid
logfile /var/log/sentinel_26379.log(哨兵日志)
dir /data/26379
sentinel monitor mymaster 10.0.0.7 6379 2(填寫主庫地址)
sentinel down-after-milliseconds mymaster 3000
acllog-max-len 128
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
SENTINEL resolve-hostnames no
SENTINEL announce-hostnames no

哨兵節點突發宕機,如何裁決?

  • 如果發生了意外故障主節點突然宕機了,那么就只能通過投票選舉讓哨兵之間進行商量選舉出最終的主機,然后switch-fork實現了主從間關系的轉移,最后確定之后重新綁定master、slave之間的關系

redis配置文件詳解

二、LNMP對接哨兵服務

根據博客一Redis哨兵模式之Sentinel模式(一)-CSDN博客的信息已經完成了主從節點與哨兵節點的調試工作,那么現在問題來了,我究竟如何能讓php-fpm后端連接上redis哨兵來監控主master宕機并進行靈活的轉換呢????

由于php-fpm后端管理頁面無法直接填寫哨兵來完成與redis協議,可以考慮的解決方案有兩種要么對php源碼文件編寫(通常交給程序員解決),要么通過shell腳本來實現master 腳本的動態獲取,然后將主master節點依照哨的情況進行動態切換

  • 首先需要完成后端php_redis連接的配置

  • 寫shell腳本方式來動態獲取哨兵

#!/bin/bash 
############################
## auto check redis master
############################
while true 
doREDIS_MASTER=$(grep -aiE "monitor mymaster" /usr/local/redis/sentinel.conf | awk '{print $4}')grep -aiE "$REDIS_MASTER" /etc/hostsif [ $? -ne 0 ];thensed -i '/redis.jf.com/d' /etc/hostsecho "$REDIS_MASTER" >>  /etc/hostsecho Change time:`date`fisleep 5
done    

三、MYSQL讀寫分離

  • 場景分析

當用戶首次訪問網頁時,首先會將數據請求轉發到到MySQL服務器如果首次數據量過大,那么就會導致首次服務器就會出現宕機風險,此時我們就引入了分庫 ,分布式機器或MYSQL讀寫分離來進一步緩解服務器壓力了

  • 原理分析

MYSQL讀寫分離的本質是將增刪改的數據交給主庫去處理,而數據查詢就需要交給從庫來做進一步的處理了,MYSQL讀寫分離實際上是基于MySQL主從復制而設定的,這樣設計保證了在master端口寫入數據,slave同步后,Web應用就可以直接讀取從庫的數據了。

  • mycat中間件

  • 實驗部署

機器準備

master(主機)10.0.0.6
slave(從機)10.0.0.7
mycat機器10.0.0.8

實驗步驟

##(mycat機器操作)
## Jdk環境安裝部署
yum -y install java## mycat的jar包和zip包上傳
mycat2-1.21-release-jar-with-dependencies.jar
mycat2-install-template-1.21.zip## 壓縮mycat程序
unzip mycat2-install-template-1.21.zip 
\mv mycat /usr/local/## 拷貝mycat依賴環境
cp mycat2-1.21-release-jar-with-dependencies.jar /usr/local/mycat/lib/#授予Mycat bin目錄下文件執行權限;
chmod +x /usr/local/mycat/bin/*#查看Mycat程序是否部署成功;
ls -l /usr/local/mycat/## (master機器操作)
## 創建專有用戶
CREATE USER 'mycat'@'%' IDENTIFIED BY 'aaaAAA111.';
#授權用戶訪問;
GRANT XA_RECOVER_ADMIN ON *.* to 'mycat'@'%';
GRANT ALL PRIVILEGES ON *.* to 'mycat'@'%';
FLUSH PRIVILEGES;
# 創建數據原型庫mycat----->mycat數據表存放地
create database mycat;## 修改mycat數據源配置(參見下圖)vim /usr/local/mycat/conf/datasources/prototypeDs.datasource.json## 創建物理型數據庫實現讀寫分離
## 拷貝模板文件,生成master和slave配置文件
\cp prototypeDs.datasource.json master.datasource.json
\cp prototypeDs.datasource.json slave-01.datasource.json

mycat配置文件修改

mycat-master數據源配置信息

mycat-slave數據源配置信息

配置物理數據源cluster集群信息

cd? /usr/local/mycat/conf/clusters
\cp prototype.cluster.json master-slave.cluster.json

## 配置cluster.conf文件配置信息
cat>master-slave.cluster.json<<EOF
{"clusterType":"MASTER_SLAVE","heartbeat":{"heartbeatTimeout":1000,"maxRetry":3,"minSwitchTimeInterval":300,"slaveThreshold":0},"masters":["master"],"replicas":["slave-01"],"maxCon":5000,"name":"master-slave","readBalanceType":"BALANCE_ALL","switchType":"NOT_SWITCH"
}
EOF

將物理數據庫與集群綁定起來

cd?/usr/local/mycat/conf/schemas

## 創建discuz框架文件
cat>discuz.schema.json<<EOF
{"schemaName": "discuz","targetName": "master-slave","normalTables": {}
}
EOF

mycat數據讀取流程

修改 Mycat 登錄用戶信息

cd /usr/local/mycat/conf/users/

#修改root.user.json文件,代碼;
{"dialect":"mysql","ip":null,"password":"aaaAAA111.","transactionType":"xa","username":"root"
}

有關mycat啟動服務、查看狀態、幫助情況

#啟動服務;
/usr/local/mycat/bin/mycat start
#查看服務狀態;
/usr/local/mycat/bin/mycat status
#查看Mycat幫助信息;
/usr/local/mycat/bin/mycat --help

?檢查是否存在報錯問題(無法連接上mysql數據庫):

下面針對mycat服務啟動時發現mysql服務器未創建用戶解決方案

ALTER USER 'root'@'localhost' IDENTIFIED BY 'aaaAAA111.';

update mysql.user set host='%' where user="root";

檢查mycat的監聽端口

netstat -tnlp | grep -E "8066|9066"

mysql測試連接情況

驗證讀寫分離

## 在slave中創建數據表
create table t1 (id char(20),name char(20),job char(10));
insert into t1 values (01,'wanger','IT'); 
insert into t1 values (02,'zhangsan','IT'); 

補充一個MySQL從服務器配置mycat讀寫分離

(配置了一主兩從架構)

開放的一臺新機器IP地址為10.0.0.5

## 安裝mysql,mysql-server軟件包
yum -y install mysql mysql-server## 將master機器加上讀鎖
flush  tables  with  read  lock;
## 數據備份完成之后解開鎖
unlock tables;## 備份主表的數據
mysqldump -B -uroot -paaaAAA111. --all-databases > 0707all.sql## 將主表的數據發送給新機器
scp -r 0707all.sql 10.0.0.5:/root/## 重啟mysql服務
service mysqld start## 編輯mysql配置,編寫server-id配置
vim /etc/my.cnf.d/mysql-server.cnf ## 數據導入
mysql -uroot -p < 0707all.sql ## 與master機器綁定建立關聯(根據master狀態來決定)
change master to 
master_host='10.0.0.6',master_user='repl',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=2679454;
start slave;
show slave status\G;## 檢查還無法啟動
stop slave;
reset slave;##拷貝02數據源(修改name)
cp slave-01.datasource.json slave-02.datasource.json## 修改集群架構配置文件
cd ../clusters/
vim master-slave.cluster.json(在replica中加入slave-02) 

mysql-mycat引擎一主兩從架構

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

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

    相關文章

    基于Excel的數據分析思維與分析方法

    數據分析一定要會Excel、SQL和Python&#xff1f;非常肯定地回答您&#xff0c;Python、R語言、Excel函數和VBA&#xff0c;以及高級數據分析軟件&#xff0c;都學不到&#xff0c;您將學到&#xff1a;5個有效的數據分析利器&#xff0c;以及分析思維 一、描述性統計分析 在…

    計算機網絡筆記(不全)

    一、計算機網絡體系結構1.計算機網絡的概念計算機網絡&#xff1a;由若干結點和連接這些結點的鏈路組成。結點可以是計算機、集線器、交換機、路由器等。互連網(internet)&#xff1a;多個計算機網絡通過路由器互相連接而成&#xff0c;可用任意協議通信。互聯網(因特網Interne…

    XML Schema 復合元素

    XML Schema 復合元素 引言 XML(可擴展標記語言)作為一種靈活的標記語言,廣泛應用于數據交換和存儲。XML Schema 是一種用于描述和定義 XML 文檔結構的語言,它定義了 XML 文檔的元素、屬性、類型和約束。本文將詳細介紹 XML Schema 中的復合元素,并探討其在實際應用中的重…

    華為云Flexus+DeepSeek征文 | 彈性算力實戰:Flexus X實例自動擴縮容策略優化

    華為云FlexusDeepSeek征文 | 彈性算力實戰&#xff1a;Flexus X實例自動擴縮容策略優化 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 總有一行代碼&#xff0c;能點亮萬千星辰。 &#x1f50d; 在技術的宇宙中&#xff0c;我愿做永不停歇的探索者…

    【倉頡】運行環境配置VSCode + Win11

    作者&#xff1a;大李子 團隊&#xff1a;堅果派 十年iOS&#xff0c;All in轉鴻蒙 前言 “倉頡編程語言是一款面向全場景智能的新一代編程語言&#xff0c;主打原生智能化、天生全場景、高性能、強安全。融入鴻蒙生態&#xff0c;為開發者提供良好的編程體驗。” ——摘自倉…

    【K線訓練軟件研發歷程】【日常記錄向】1.K線滑動窗口

    文章目錄 當前效果未來發展思路技術選型值得分享的技術點數據加載、解析的代碼echats的代碼當前效果 ??相當于有個hello world了。 未來發展思路 開源 技術選型 界面直接采用electron,等開源后,可以直接掛release,用戶下載安裝包后,一鍵安裝,一鍵運行,降低使用門檻…

    抖音解析下載工具 v1.0.0:免安裝單文件,一鍵無水印保存高清視音頻

    寶子們&#xff0c;今天給你們帶來一款超輕量的抖音下載神器——抖音解析下載工具 v1.0.0。 它只有單文件&#xff0c;雙擊就能用&#xff0c;免安裝、無廣告、完全免費&#xff0c;復制粘貼鏈接即可一鍵解析下載高清無水印視頻/音頻&#xff0c;簡直不要太方便&#xff01; 為…

    Ingress——2

    目錄 ?一. 域名重定向&#xff08;HTTP→HTTPS/舊域名跳轉&#xff09;? ?二. 前后端分離Rewrite&#xff08;路徑改寫&#xff09;? ?三. 混合配置示例&#xff08;重定向Rewrite&#xff09;? ?四. SSL/TLS配置&#xff08;HTTPS加密&#xff09;? ?五. 基本認…

    12. grafana-Dashboard的Variable(過濾)使用

    說明制作這樣一個選擇過濾的下拉框&#xff0c;可以選擇某個服務器的步驟1. 點擊最上面的Dashboard settings2. 選擇Variables 并點擊ADD variable3. 寫出過濾的標簽名和查詢條件&#xff08;label_values(查詢條件)&#xff09;4. 點擊 save as... 保存退出5. 出來后左上角就…

    Cursor一鍵續杯pro教程,支持最新1.0系列版本

    使用前檢查&#xff1a; 使用前請先看左下角&#xff0c;是否獲取到Cursor的版本號 如果沒有請先在 功能頁面 -→ 自定義Cursor路徑 選擇你Cursor的安裝的路徑&#xff0c;并開啟后重啟YCursor&#xff0c;獲取到版本后才能正常使用功能 檢查軟件左下角的權限標識是否為綠色 如…

    pyhton基礎【25】面向對象進階六

    目錄 十七.單例模式 實現單例模式的兩種方式 __new__方法概述 單例模式的使用場景 十七.單例模式 引入 單例模式是一種常用的軟件設計模式&#xff0c;它確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來獲取這個實例。 實現單例模式的兩種方式 使用類屬性創…

    后端樹形結構

    案例 在后端開發中&#xff0c;樹形結構數據的查詢和處理是一個常見的需求&#xff0c;比如部門管理、分類目錄展示等場景。接下來&#xff0c;我們以一個部門管理系統為例&#xff0c;詳細介紹如何實現后端的樹查詢功能。 案例背景 假設我們正在開發一個公司的內部管理系統&am…

    高效溝通04-RIDE說服模型

    高效溝通專欄–組織運轉的命脈與個人成功的基石 目錄 1. RIDE模型的核心理念2. RIDE模型的應用場景3. RIDE模型使用步驟4. RIDE模型示例與練習4.1 應用RIDE模型:4.2 練習:你來試試!5. 總結RIDE模型是一種結構化的說服框架,旨在幫助你在溝通(尤其是書面溝通或需要清晰邏輯…

    利用selenium獲取網頁數據,腳本加載慢問題的解決辦法

    問題&#xff1a;最近在寫一個腳本去獲取一個網站的數據&#xff0c;用到一個表格中的數據&#xff0c;條目是1000條&#xff0c;需要逐條去獲取網站上對應的數據&#xff0c;遇到的問題是腳本運行后&#xff0c;很久才開始打開驅動瀏覽器。經過很多次嘗試&#xff0c;主要原因…

    Ubuntu查看本機代理的實操指南

    快速確認代理狀態的必要性在Ubuntu系統中&#xff0c;代理設置是跨境訪問、企業內網連接、開發調試的重要配置。無論是排查網絡卡頓、驗證代理是否生效&#xff0c;還是確保特定應用走代理通道&#xff0c;快速查看當前代理狀態都是關鍵步驟。圖形界面查看&#xff0c;可視化操…

    三格電子——雙通道 CAN(FD)轉以太網

    【SG-CAN(FD)NET-210】 一、功能描述 CANFD 完全向下兼容 CAN &#xff0c;以下統稱 CAN(FD) 。 SG-CAN(FD)NET-210 是一款用來把 CANFD 總線數據轉為網口數據的設 備。 網口支持 TCP Sever 、 TCP Client 、 UDP Sever 、 UDP Client 四種模式。 可以通過軟件配置…

    【一起來學AI大模型】卷積神經網絡(CNN):視覺識別的革命性架構

    一、CNN的核心思想與生物啟示 卷積神經網絡&#xff08;Convolutional Neural Networks&#xff09;是受生物視覺皮層啟發的深度學習架構&#xff0c;專門用于處理網格狀拓撲數據&#xff08;如圖像、視頻、音頻&#xff09;。其核心創新在于&#xff1a; 局部感受野&#xff…

    創建和編輯Crontab的方法

    計劃任務&#xff0c;在 Linux 中一般使用Crontab&#xff0c;通過crontab命令&#xff0c;我們可以在固定的間隔時間執行指定的系統指令或 Shell 腳本。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個命令非常適合周期性的日志分析或數據備份等工作。 創建…

    在職場中如何培養創新思維?

    芯片研發人員&#xff0c;授權發明專利40&#xff0c;聊聊技術層面的創新&#xff0c; 創新的本質&#xff0c;是舊有知識的創造性組合&#xff0c; 不存在無中生有的創新&#xff0c; 你必須建立本領域的知識體系&#xff0c;對過往各種創新&#xff0c;爛熟于心&#xff0…

    設備健康管理平臺功能深度對比:中訊燭龍如何以預測性維護重構工業運維范式?

    全球制造業因非計劃停機每年損失超千億美元?&#xff0c;而搭載預測性維護系統的企業&#xff0c;設備可用率可提升至99.8%??。 在工業4.0與智能制造浪潮下&#xff0c;設備健康管理平臺已從“可選工具”升級為“核心生產力工具”。面對市場上功能繁雜的解決方案&#xff0c…