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

0、Redis目錄結構


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

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

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

      4)Redis高可用之主從複製實踐(四)ruby

      5)Redis高可用之哨兵模式Sentinel配置與啓動(五)服務器

      6)Redis高可用之集羣配置(六)微信

 

1、介紹


上篇文章中介紹了redis的主從複製,可是若是出從複製沒法知足單節點故障問題,則須要引入集羣部署。數據結構

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

一、redis-cluster負載均衡

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

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

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

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

若是集羣中的master沒有slave節點,則master掛掉後整個集羣就會進入fail狀態,由於集羣的slot映射不完整。若是集羣超過半數以上的master掛掉,不管是否有slave,集羣都會進入fail狀態。

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

 

2、集羣部署


一、環境配置

第一:準備3臺服務器,每臺服務器運行兩個redis

主機說明 主機IP 端口
Redis

192.168.250.129

 

7000

7001

Redis 192.168.250.130

7002

7003

Redis 

192.168.250.131

7004

7005

 

二、在每一臺服務器上咱們添加一下配置文件

分別爲: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

 

三、上面文件都配置好後,便可啓動

 

四、啓動後咱們就能夠建立集羣啦

注意:

在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。

 

五、咱們驗證一下集羣是否建立成功

登陸redis客戶端 ./src/redis-cli -c -p 7000, -c 參數表明鏈接到集羣中
咱們先看一下主從配對狀況,根據node ID匹配能夠得出配比。以下:紅色圈出來的爲標註,你們能夠看看是否有對應的ID,這樣咱們就區分了主從節點的關係了。

 

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

 

咱們查看一下key 爲 wangjing,發現定位到了7002

 

六、咱們驗證一下故障轉移

咱們從上面能夠看出7002爲master,7001爲其從節點。咱們按照以下流程進行操做

先停掉7002,發現7001轉爲了master節點,而後恢復7002上線,7002變爲slave節點。

那麼redis集羣演示就到此爲止吧。

後面還涉及到 集羣新增節點(包括master和slave)以及刪除節點,這些操做你們自行操做吧,俗話說 師父領進門修行在我的。你們加油。

你們若是有問題歡迎提問,謝謝。 

 

asp.net core 交流羣:787464275 歡迎加羣交流
若是您認爲這篇文章還不錯或者有所收穫,您能夠點擊右下角的【推薦】按鈕精神支持,由於這種支持是我繼續寫做,分享的最大動力!

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

微信公衆號:歡迎關注                                                 QQ技術交流羣: 歡迎加羣

                

相關文章
相關標籤/搜索