【redis 3.2 集群】

目錄

一、Redis主從復制

1.概念

2.作用

2.1?數據冗余

2.2?故障恢復

2.3?負載均衡

2.4?高可用

3.缺點

4.流程

4.1 第一步

4.2 第二步

4.3 第三步

4.4 第四步

5.搭建

5.1 主

5.2 從

6.驗證

二、Reids哨兵模式

1.概念

2.作用

2.1 監控

2.2 自動故障轉移

2.3 通知(提醒)

3.缺點

4.結構

4.1 哨兵節點

4.2 數據節點

5.搭建

6.驗證

三、Redis集群

1.概述

2.原理

3.架構細節

3.1 細節一

3.2?細節二

3.3?細節三

3.4?細節四

4.選舉過程

5.搭建

5.1 基礎搭建

5.2?分別修改配置文件中

5.3?啟動服務

5.4?構建集群

5.4.1?將其他節點加入集群

5.4.2?分配slot

5.4.3?建立主從關系

5.5?查看命令

5.6?重置集群命令


一、Redis主從復制

1.概念

是指將一臺Redis服務器的數據,復制到其他的Redis服務器。前者稱為主節點(Master),后者稱為從節點(Slave);數據的復制是單向的,只能由主節點到從節點。

2.作用

2.1?數據冗余

主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。

2.2?故障恢復

當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗余。

2.3?負載均衡

在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫Redis數據時應用連接主節點,讀Redis數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的并發量。

2.4?高可用

除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高可用的基礎。

3.缺點

  • 故障恢復無法自動化
  • 寫操作無法負載均衡
  • 存儲能力受到單機的限制

4.流程

4.1 第一步

若啟動一個Slave機器進程,則它會向Master機器發送一個“sync command”命令,請求同步連接。

4.2 第二步

無論是第一次連接還是重新連接,Master機器都會啟動一個后臺進程,將數據快照保存到數據文件中(執行rdb操作),同時Master還會記錄修改數據的所有命令并緩存在數據文件中。?

4.3 第三步

后臺進程完成緩存操作之后,Maste機器就會向Slave機器發送數據文件,Slave端機器將數據文件保存到硬盤上,然后將其加載到內存中,接著Master機器就會將修改數據的所有操作一并發送給Slave端機器。若Slave出現故障導致宕機,則恢復正常后會自動重新連接。

4.4 第四步

Master機器收到Slave端機器的連接后,將其完整的數據文件發送給Slave端機器,如果Mater同時收到多個Slave發來的同步請求,則Master會在后臺啟動一個進程以保存數據文件,然后將其發送給所有的Slave端機器,確保所有的Slave端機器都正常。

5.搭建

5.1 主

修改配置文件
?? ?bind ?0.0.0.0
?? ?port ?6379
?? ?protected-mode = no
?? ?daemonize = yes

5.2 從

修改配置文件
?? ?bind ?0.0.0.0
?? ?port ?6380
?? ?protected-mode = no
?? ?daemonize = yes
?? ?slaveof 192.168.115.160 6379

6.驗證

使用redis-cli命令行登錄redis服務器,輸入role指令查看狀態
在master節點上,錄入數據,在slave節點上查看到對應數據即可

?

?

?

二、Reids哨兵模式

1.概念

是一個分布式系統,用于對主從結構中的每臺服務器進行監控,當出現故障時通過投票機制選擇新的 Master 并將所有 Slave 連接到新的 Master。所以整個運行哨兵的集群的數量不得少于3個節點。

:依托于主從模式

2.作用

2.1 監控

哨兵會不斷地檢查主節點和從節點是否運作正常。

2.2 自動故障轉移

當主節點不能正常工作時,哨兵會開始自動故障轉移操作,它會將失效主節點的其中一個從節點升級為新的主節點,并讓其他從節點改為復制新的主節點。

2.3 通知(提醒)

哨兵可以將故障轉移的結果發送給客戶端。

3.缺點

  • 寫操作無法負載均衡
  • 存儲能力受到單機的限制
  • 哨兵無法對從節點進行自動故障轉移,在讀寫分離場景下,從節點故障會導致讀服務不可用,需要對從節點做額外的監控、切換操作。

4.結構

4.1 哨兵節點

哨兵系統由一個或多個哨兵節點組成,哨兵節點是特殊的redis節點,不存儲數據。

4.2 數據節點

主節點和從節點都是數據節點。

5.搭建

vim /etc/redis-sentinel.conf

????????bind 0.0.0.0
????????port 26379????????????????????????Redis哨兵默認的監聽端口
????????protected-mode no? ? ? ? ? ?關閉保護模式
????????daemonize ?yes
????????sentinel monitor mymaster 主IP?6379 2??
????????修改 指定該哨兵節點監控ip:6379這個主節點,該主節點的名稱是mymaster,最后的2的含義? ? ? ? ? 與主節點的故障判定有關:至少需要2個哨兵節點同意,才能判定主節點故障并進行故障轉移

????????
????????sentinel down-after-milliseconds mymaster 30000????????判定服務器down掉的時間周期,默認? ? ? ? ? 30000毫秒

????????sentinel failover-timeout mymaster 180000????????故障節點的最大超時時間為180000毫秒

?

?

指定日志存放路徑
logfile "/var/log/sentinel.log"

指定數據庫存放路徑
dir "/var/lib/redis"

6.驗證

停止master后,slave會通過選舉產生新的master
哨兵配置文件會自動修改監聽的master節點地址為新的master節點地址

?

?

?

?

?

?

三、Redis集群

1.概述

Redis3.0版本以上開始支持cluster,采用的是hashslot(hash槽),可以將多個Redis實例整合在一起,形成一個群集,也就是將數據分散到群集的多臺機器上。

2.原理

Redis Cluster是一個無中心的結構,每個節點都保存數據和整個群集的狀態。每個節點都會保存其他節點的信息,知道其他節點所負責的槽,并且會與其他節點定時發送心跳信息,能夠及時感知群集中異常的節點。

3.架構細節

3.1 細節一

所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬。

3.2?細節二

節點的失效(fail)在群集中超過半數的主(master)節點檢測失效時才生效。

3.3?細節三

客戶端與 redis 節點直連,不需要中間代理(proxy)層,客戶端不需要連接群集所有節點,連接群集中任何一個可用節點即可。

3.4?細節四

redis-cluster 把所有的物理節點映射到【0-16383】slot 上,cluster 負責維護 node<->slot<->key。

4.選舉過程

  • 選舉過程是群集中所有master參與,如果半數以上master節點與當前 master 節點通信超時(cluster—node—timeout),認為當前 master 節點掛掉。以下兩種情況為整個群集不可用(cluster_state:fail),當群集不可用時,所有對群集的操作都不可用,收到((error)CLUSTEFDOWN The cluster is down)錯誤。
  • 如果群集任意 master掛掉,且當前 master 沒有 slave,則群集進入 fail狀態,也可以理解成群集的slot映射【0 ~16383】不完整時進入fail狀態。
  • 如果群集中超過半數的master掛掉,無論是否有slave,群集都進入 fail狀態。
  • 默認情況下,每個群集的節點都使用兩個TCP端口.一個是6379,一個是16379;6379服務于客戶端的連接,16379 用于群集總線,即使用二進制協議的節點到節點通信通道。節點使用群集總線進行故障檢測、配置更新、故障轉移授權等。如果開啟了防火墻,需要開放這兩個端口。

5.搭建

5.1 基礎搭建

mkdir /etc/redis
mv /etc/redis.conf /etc/redis/6379.conf
cd /etc/redis
for i in {0..4};do cp ./6379.conf ./638${i}.conf;done
for i in {0..4};do sed -i "s/port 6379/port 638${i}/" ./638${i}.conf;done
sed -i "s/dir \/var\/lib\/redis/dir \/var\/lib\/redis\/6379/" ./6379.conf
for i in {0..4};do sed -i "s/dir \"\/var\/lib\/redis\/6379\"/dir \"\/var\/lib\/redis\/638${i}\"/" ./638${i}.conf;done
cd /var/lib/redis
mkdir 6379 638{0..4}

5.2?分別修改配置文件

port
cluster-enabled yes
cluster-config-file nodes-【6379~6384】.conf
cluster-node-timeout 15000

5.3?啟動服務

for((i=6379;i<=6384;i++));do redis-server /etc/redis/${i}.conf;done

5.4?構建集群

5.4.1?將其他節點加入集群

?CLUSTER MEET 192.168.42.138 6380
?CLUSTER MEET 192.168.42.138 6381
?CLUSTER MEET 192.168.42.138 6382
?CLUSTER MEET 192.168.42.138 6383
?CLUSTER MEET 192.168.42.138 6384

:只此步驟在某數據庫內部執行

5.4.2?分配slot

redis-cli -h 192.168.42.138 -p 6379 cluster addslots {0..5461}
redis-cli?-h 192.168.42.138 -p 6381 cluster addslots {5462..10922}
redis-cli -h 192.168.42.138 -p 6383 cluster addslots {10923..16383}

5.4.3?建立主從關系

redis-cli -h 192.168.42.138 -p 6380 cluster replicate?
redis-cli -h 192.168.42.138 -p 6382 cluster replicate ?

redis-cli -h 192.168.42.138 -p 6384 cluster replicate?

5.5?查看命令

cluster nodes????????查看所有群集節點
cluster info? ? ? ? ? ??查看群集狀態

?

5.6?重置集群命令

cluster reset
數據的key不能相同

:每個節都要重置

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

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

相關文章

分布式應用:Zabbix監控Nginx

目錄 一、理論 1.Zabbix監控Nginx 二、實驗 1.Zabbix監控Nginx部署 三、問題 1.重啟zabbix客戶端失敗 2.zabbix服務端測試客戶端nginx狀態失敗 3.nginx啟動失敗 4.權限不夠 一、理論 1.Zabbix監控Nginx &#xff08;1&#xff09;環境 zabbix服務端&#xff1a;192.1…

Tomcat線程池原理

1. 一個 SpringBoot 項目能同時處理多少請求&#xff1f;tomcat容器&#xff0c; 200 次。 2. 怎么來的&#xff1f; 而點擊這些線程&#xff0c;查看其堆棧消息&#xff0c;可以看到 Tomcat、threads、ThreadPoolExecutor 等關鍵字 基于“短時間內有 200 個請求被立馬處理…

分類預測 | Python實現LR邏輯回歸多輸入分類預測

分類預測 | Python實現LR邏輯回歸多輸入分類預測 目錄 分類預測 | Python實現LR邏輯回歸多輸入分類預測基本介紹模型描述源碼設計學習小結參考資料基本介紹 邏輯回歸是一種廣義線性的分類模型且其模型結構可以視為單層的神經網絡,由一層輸入層、一層僅帶有一個sigmoid激活函數…

設計模式十二:享元模式(Flyweight Pattern)

當我們需要創建大量相似對象時&#xff0c;享元模式可以幫助我們節省內存空間和提高性能。該模式通過共享相同的數據來減少對象的數量。 在享元模式中&#xff0c;有兩種類型的對象&#xff1a;享元&#xff08;Flyweight&#xff09;和非享元&#xff08;Unshared Flyweight&a…

Postman下載教程

目錄 下載 安裝 注意事項 看到很多小伙伴在問 Postman 下載的相關問題&#xff0c;花時間整理了下&#xff0c;下面教新入門的小伙伴如何去下載 Postman。 開始前我們可以先了解下&#xff1a;Postman 簡介 下載 第一步&#xff1a;進入 Postman 官網 首先&#xff0c;我…

maven打包上傳到私有倉庫的步驟

maven打包上傳到私有倉庫的步驟 一、pom.xml引入二、Maven的settings.xml三、pom.xml中添加源碼插件四、執行發布命令 先準備私庫地址&#xff1a; http://localhost:8081/nexus3/repository/maven-releases http://localhost:8081/nexus3/repository/maven-snapshots 假如現需…

如何在Vue表單處理中實現表單字段的文件下載

Vue.js 是一種流行的JavaScript框架&#xff0c;用于構建用戶界面。在Vue應用中&#xff0c;我們經常需要處理表單操作&#xff0c;其中一個常見需求是實現文件下載。以下介紹如何在Vue表單處理中實現表單字段的文件下載&#xff0c;大家共同交流。 一、使用HTML的a標簽實現文…

Java單例模式詳解(五種實現方式)

1、什么是單例模式&#xff1f; Java單例模式是一種設計模式&#xff0c;用于確保一個類只有一個實例&#xff0c;并提供全局訪問點以獲取該實例。它通常用于需要共享資源或控制某些共享狀態的情況下。 例如&#xff1a; 一個日志記錄器&#xff08;Logger&#xff09;。在一個…

二級考python和c語言哪個好,計算機二級python和c

大家好&#xff0c;小編來為大家解答以下問題&#xff0c;二級python和二級c語言哪個更吃香一些&#xff0c;二級python和二級c語言哪個更吃香一點&#xff0c;今天讓我們一起來看看吧&#xff01; 計算機二級貌似只是在校園里的自嗨&#xff0c;出來工作后并沒有覺得這個證書有…

JavaScript+Asp.Net MVC5同時下載多個文件

前端同時啟動多個下載任務&#xff08;但是沒有做壓縮包下載&#xff09; 前端JavaScript腳本&#xff1a; var idList [1,2,3];//要下載的列表 $.each(idList, function (index, item) {downloadURL("/File/GetPdf?id" item); });var count 0; var downloadUR…

LeetCode 21.合并兩個有序鏈表

文章目錄 &#x1f4a1;題目分析&#x1f4a1;解題思路&#x1f6a9;思路1: 歸并排序思想&#xff08;不使用帶哨兵衛的頭節點&#xff09;&#x1f514;接口源碼&#xff1a; &#x1f4a1;解題思路&#x1f6a9;思路2: 歸并排序思想&#xff08;使用帶哨兵衛的頭節點&#xf…

Ubuntu安裝JDK與IntelliJ IDEA

目錄 前言 Ubuntu 安裝 JDK 1、更新軟件包列表 2、安裝OpenJDK 3、驗證安裝 Ubuntu安裝IntelliJ IDEA 1、下載 IntelliJ IDEA 2、解壓縮 IntelliJ IDEA 安裝包 3、移動 IntelliJ IDEA 到安裝目錄 4、啟動 IntelliJ IDEA 前言 APT&#xff08;Advanced Package Tool&…

web-xss-dvwa

目錄 xss&#xff08;reflected&#xff09; low medium high xss(store) low medium high xss(dom) low medium high xss&#xff08;reflected&#xff09; low 沒有什么過濾&#xff0c;直接用最普通的標簽就可以了 http://127.0.0.1/DVWA-master/vulnerabili…

C++ STL vector 模擬實現

?<1>主頁&#xff1a;我的代碼愛吃辣 &#x1f4c3;<2>知識講解&#xff1a;C之STL &#x1f525;<3>創作者&#xff1a;我的代碼愛吃辣 ??<4>開發環境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;上次我們已經數字會用…

【uniapp使用web-view點擊返回報錯后返回不了】

問題及解決 問題解決 問題 使用web-view跳轉到別人的網站之后點擊返回報錯&#xff0c;返回不了 解決 使用以下方法 <template><view></view> </template> <script> var wv;//計劃創建的webview export default {onLoad() {// #ifdef APP-PL…

(杭電多校)2023“釘耙編程”中國大學生算法設計超級聯賽(7)

1002 Random Nim Game 只有3種情況,要么必贏,要么必輸,要么從宏觀角度考慮,隨機的話,贏的概率就是1/2(就像拋硬幣一樣,隨著拋的次數越來越多,正反面的概率將越來越接近1) 當只要有一堆石頭數量不是1,那么就是必贏或必輸,贏的概率就是1/2 當每堆石頭數量都為1時,當堆數為奇數…

unity新輸入系統的簡單使用(New InputSystem)

1、在包管理器 unity注冊表中下載安裝InputSystem 2、給玩家添加組件PlayerInput&#xff0c;點擊CreatAction,創建一個InputAct InputAct,這是玩家的輸入文件&#xff0c;在里面可以設置玩家輸入 3、使用 例如玩家控制角色移動 在InputAct中&#xff0c;默認已經設置好了移…

學習pytorch 2 導入查看dataset

學習pytorch 2 2. dataset實戰代碼數據集 2. dataset實戰 B站小土堆視頻 代碼 from torch.utils.data import Dataset from PIL import Image #import cv2 import osclass MyData(Dataset):def __init__(self, root_dir, label_dir):self.root_dir root_dirself.label_dir …

【Unity實戰100例】人物狀態欄UI數據刷新—MVC觀察者模式

目錄 一.創建Model層數據模型 二.創建View層關聯UI組件 三.創建Controller層使得V和M數據關聯 源碼:htt

[python]RuntimeError: Can‘t decrement id ref count (unable to close file...

使用spectralspatial模型進行EEG分類時&#xff0c;出現以下錯誤 RuntimeError: Cant decrement id ref count (unable to close file, errno 5, error message Input/output error) Segmentation fault (core dumped) 猜測是因為存儲的model太大了導致的&#xff0c;找到了…