redis 集羣環境搭建和工作原理

相關閱讀:
Redis下載及安裝(windows版)
linux 安裝redis 完整步驟
Redis主從架構搭建詳細步驟
redis哨兵環境搭建和工作原理
如果大家有前面安裝,或者主從等相關內容查看相關閱讀,這裏是基於以上內容都會的情況下直接搭建的集羣環境

redis集羣相關介紹

在這裏插入圖片描述

  • redis是一個開源的key value存儲系統,受到了廣大互聯網公司的青睞。redis3.0版本之前只支持單例模式,在3.0版本及以後才支持集羣,我這裏用的是redis3.0.0版本;
  • redis集羣採用P2P模式,是完全去中心化的,不存在中心節點或者代理節點;
  • redis集羣是沒有統一的入口的,客戶端(client)連接集羣的時候連接集羣中的任意節點(node)即可,集羣內部的節點是相互通信的(PING-PONG機制),每個節點都是一個redis實例;
  • 爲了實現集羣的高可用,即判斷節點是否健康(能否正常使用),redis-cluster有這麼一個投票容錯機制:如果集羣中超過半數的節點投票認爲某個節點掛了,那麼這個節點就掛了(fail)。這是判斷節點是否掛了的方法;
  • 那麼如何判斷集羣是否掛了呢? -> 如果集羣中任意一個節點掛了,而且該節點沒有從節點(備份節點),那麼這個集羣就掛了。這是判斷集羣是否掛了的方法;
  • 那麼爲什麼任意一個節點掛了(沒有從節點)這個集羣就掛了呢? -> 因爲集羣內置了16384個slot(哈希槽),並且把所有的物理節點映射到了這16384[0-16383]個slot上,或者說把這些slot均等的分配給了各個節點。當需要在Redis集羣存放一個數據(key-value)時,redis會先對這個key進行crc16算法,然後得到一個結果。再把這個結果對16384進行求餘,這個餘數會對應[0-16383]其中一個槽,進而決定key-value存儲到哪個節點中。所以一旦某個節點掛了,該節點對應的slot就無法使用,那麼就會導致集羣無法正常工作。
  • 綜上所述,每個Redis集羣理論上最多可以有16384個節點。

在這裏插入圖片描述
在這裏插入圖片描述

redis 集羣前準備工作

在這裏插入圖片描述
這裏我創建了一個clusterconf文件夾目的是把集羣的相關配置都放在這個下面
在這裏插入圖片描述
複製一份原來的redis-6379.conf文件到這個文件夾下內容添加紅框內容,含義分別是:
在這裏插入圖片描述
在這裏插入圖片描述

 175  sed "s/6379/6380/g" redis-6379.conf redis-6380.conf 
  176  sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf 
  177  sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf 
  178  sed "s/6379/6382/g" redis-6379.conf > redis-6382.conf 
  179  sed "s/6379/6383/g" redis-6379.conf > redis-6384.conf 
  180  sed "s/6379/6384/g" redis-6379.conf > redis-6384.conf 
  181  sed "s/6379/6385/g" redis-6379.conf > redis-6385.conf 

1複製爲6(一會3主3從) ,使用這個命令複製出來的文件內容都已經修改好了,不用一個一個的去修改了,dir是配置的data我把data下面全部刪除,方便後面我們觀察效果,
在這裏插入圖片描述
如果沒有安裝ruby的情況下安裝ruby

yum install ruby

我們現在開啓6個窗口,啓動cluster下面的6個rides
在這裏插入圖片描述
這裏就是正常啓動rides沒有任何區別我這裏是用的窗口啓動方便觀察日誌,生產環境不會這麼做的,啓動也不會一個一個的啓動,使用一個腳本就可以,這都是次要的全部啓動就ok了
到這來準備工作就完成了

redis集羣操作

我們在打開一個窗口啓動集羣
低版本都是用redis-trib.rb 命令
在這裏插入圖片描述
這裏直接提醒我們命令已經換了

redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

這裏我們就直接去我們redis安裝目錄下使用redis-cli命令啓動了,cluster-replicas 1 這個1 表示主後面跟幾個從,我們這裏是3主3從所以是1,看下面的打印信息前面3個爲主後面三個爲從
在這裏插入圖片描述
在這裏插入圖片描述
上面3行表示每個主分的曹的編號,下面3行是表示哪個從連的哪個主

此時我們看看我們data目錄下
在這裏插入圖片描述
在這裏插入圖片描述
繼續gogo
在這裏插入圖片描述
在這裏插入圖片描述
這裏我把每個信息都截圖下拉目的是方便一會我們理解其中的原理
主的信息
![在這在這裏插入圖片描述
這類說明下:上面環境搭建好了是好了,但是由於一個虛擬機跑6個redis導致直接卡死沒辦法我複製了2個虛擬機下面的截圖是基於新環境下搭建的
說明如下:

192.168.43.230:6379 主1
192.168.43.231:6379 主2
192.168.43.232:6379 主3
192.168.43.230:6380 從1
192.168.43.231:6380 從2
192.168.43.232:6380 從3

數據設置和獲取

存數據
在這裏插入圖片描述
此時鏈接客戶端的時候需要加-c
slot 5798 也就是說存儲到曹編號是5789上面

在這裏插入圖片描述
主1設置數據
在這裏插入圖片描述
在這裏插入圖片描述
主2 從3獲取數據都沒問題,當然其他的都可以獲取,這裏就不一一截圖了

主從切換

從下線

這裏我就讓從1下線:

在這裏插入圖片描述
這個時候另外五個都獲取到從1下線了,大家可以觀察每一個窗口的日誌信息

從1上線:
在這裏插入圖片描述
相互通信 從1又上線了, 其他的同步信息就不說了,從下線還是比較簡單

主下線

主3 下線
在這裏插入圖片描述
此時我們查看下節點信息:
在這裏插入圖片描述
4個主一個fail的3個成功的, 2個從,也就是說一個slave編程了master

我們再讓下線的上線:

在這裏插入圖片描述
在這裏插入圖片描述
這個時候我們發現主從發生切換

其他節點操作命令

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章