Redis高可用之集群配置(六)


0、Redis目錄結構


      1)Redis介紹及部署在CentOS7上(一)

      2)Redis指令與數據結構(二)

      3)Redis客戶端連接以及持久化數據(三)

      4)Redis高可用之主從復制實踐(四)

      5)Redis高可用之哨兵模式Sentinel配置與啟動(五)

      6)Redis高可用之集群配置(六)

 

一、介紹


上篇文章中介紹了redis的主從復制,但是如果出從復制無法滿足單節點故障問題,則需要引入集群部署。

在之前有看到過redis集群部署的三種方案,不過性能最高的還是redis官方推薦的redis-cluster,性能最高,其他兩種我就不介紹了,主要介紹一下redis-cluster這種。

1、redis-cluster

A、采用去中心化的思想,沒有中心節點的說法,它使用hash slot方式將16348個hash slot覆蓋到所有節點上,對於存儲的每個key值,使用CRC16(KEY)&16348=slot得到他對應的hash slot,

並在訪問key的時候就去找他的hash slot在哪一個節點上,然后由當前訪問節點從實際被分配了這個hash slot的節點去取數據,節點之間使用輕量協議通信 減少帶寬占用 性能很高,

自動實現負載均衡與高可用,自動實現failover並且支持動態擴展,官方已經玩到可以1000個節點 實現的復雜度低。

B、其內部中也需要配置主從,並且內部也是采用哨兵模式,如果有半數節點發現某個異常節點,共同決定更改異常節點的狀態,如果改節點是主節點,則對應的從節點自動頂替為主節點,當原先的主節點上線后,則會變為從節點。

如果集群中的master沒有slave節點,則master掛掉后整個集群就會進入fail狀態,因為集群的slot映射不完整。如果集群超過半數以上的master掛掉,無論是否有slave,集群都會進入fail狀態。

C、根據官方推薦 集群部署至少要3台以上的master節點。那么接下來就開始部署吧 

 

二、集群部署


1、環境配置

第一:准備3台服務器,每台服務器運行兩個redis

主機說明 主機IP 端口
Redis

192.168.250.129

 

7000

7001

Redis 192.168.250.130

7002

7003

Redis 

192.168.250.131

7004

7005

 

2、在每一台服務器上我們添加一下配置文件

分別為:redis-7000.conf  redis-7001.conf  redis-7002.conf  redis-7003.conf redis-7004.conf  redis-7005.conf 

配置文件內容為如下:其他的配置文件修改一下端口以及log文件、日志文件即可。其中中間部分cluster代表集群設置

daemonize yes port 7000 logfile 7000.log dir ./ bind 192.168.250.129 127.0.0.1 cluster-enabled yes cluster-config-file nodes_7000.conf cluster-node-timeout 15000 appendonly yes appendfilename aof-7000.aof appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb

 

3、上面文件都配置好后,即可啟動

 

4、啟動后我們就可以創建集群啦

注意:

在redis5.0后 創建集群統一使用redis-cli,之前的版本使用redis-trib.rb,但是需要安裝ruby軟件相對復雜,相比之前的版本5.0不需要安裝額外的軟件,方便。具體的可以參照redis官方網站查看
https://redis.io/topics/cluster-tutorial

創建集群命令:其中 cluster-replicas 1  代表  一個master后有幾個slave,1代表為1個slave節點

./src/redis-cli --cluster create 192.168.250.129:7000 192.168.250.129:7001 192.168.250.130:7002 192.168.250.130:7003 192.168.250.131:7004 192.168.250.131:7005 --cluster-replicas 1

 

等待集群創建成功,發現 7000/7002/7004為master主節點,其他的為slave。

 

5、我們驗證一下集群是否創建成功

登錄redis客戶端 ./src/redis-cli -c -p 7000, -c 參數代表連接到集群中
我們先看一下主從配對情況,根據node ID匹配可以得出配比。如下:紅色圈出來的為標注,大家可以看看是否有對應的ID,這樣我們就區分了主從節點的關系了。

 

驗證數據匹配是否采用哈希槽的方式。大家可自行測試一下。發現我在7000客戶端設置的數據,被分配到7002上了。

 

我們查看一下key 為 wangjing,發現定位到了7002

 

6、我們驗證一下故障轉移

我們從上面可以看出7002為master,7001為其從節點。我們按照如下流程進行操作

先停掉7002,發現7001轉為了master節點,然后恢復7002上線,7002變為slave節點。

那么redis集群演示就到此為止吧。

后面還涉及到 集群新增節點(包括master和slave)以及刪除節點,這些操作大家自行操作吧,俗話說 師父領進門修行在個人。大家加油。

大家如果有問題歡迎提問,謝謝。 

 

asp.net core 交流群:787464275 歡迎加群交流
如果您認為這篇文章還不錯或者有所收獲,您可以點擊右下角的【推薦】按鈕精神支持,因為這種支持是我繼續寫作,分享的最大動力!

作者:LouieGuo
聲明:原創博客請在轉載時保留原文鏈接或者在文章開頭加上本人博客地址,如發現錯誤,歡迎批評指正。凡是轉載於本人的文章,不能設置打賞功能,如有特殊需求請與本人聯系!

微信公眾號:歡迎關注                                                 QQ技術交流群: 歡迎加群

                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM