Redis三種集羣模式-Cluster集羣模式

Redis三種集羣模式-Cluster集羣模式

1、  在以前有看到過redis集羣部署的三種方案,不過性能最高的仍是redis官方推薦的redis-cluster,性能最高,下面介紹一下redis-cluster這種模式。node

一、redis-clusterredis

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

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

自動實現負載均衡與高可用,自動實現failover而且支持動態擴展。負載均衡

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

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

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

二、在每一路徑下咱們添加一下配置文件加密

都爲: redis.confspa

2、集羣配置 

      cd /usr/software/redis/redis-cluster/ 

  1.建立目錄

    /usr/software/redis/redis-cluster/1001

    /usr/software/redis/redis-cluster/1002

      /usr/software/redis/redis-cluster/1003

    /usr/software/redis/redis-cluster/1004

    /usr/software/redis/redis-cluster/1005

    /usr/software/redis/redis-cluster/1006

  2.修改redis.conf

    cd /usr/software/redis/redis-cluster/1001

    vim redis.conf

    #修改以下鍵值對 

################################## NETWORK #####################################
#bind 127.0.0.1
protected-mode no
port 1001
################################# GENERAL #####################################
daemonize yes
pidfile "/var/run/redis_1001.pid"
logfile "/usr/software/redis/redis-cluster/1001/log/redis.log"
################################ SNAPSHOTTING  ################################
dir "/usr/software/redis/redis-cluster/1001/data"
################################ REDIS CLUSTER  ###############################
cluster-enabled yes
cluster-config-file nodes-1001.conf
cluster-node-timeout 15000
################################## SECURITY ###################################
requirepass "ww"

其餘幾個實例的配置文件修改如下配置便可(須要本身建立log,data目錄):

port 100x
pidfile "/var/run/redis_100x.pid" 
logfile "/usr/software/redis/redis-cluster/100x/log/redis.log" dir "/usr/software/redis/redis-cluster/100x/data" cluster-config-file nodes-100x.conf

3、集羣啓動

一、使用redis-server    /usr/software/redis/redis-cluster/1001/redis.conf  ...將全部節點啓動

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

注意:在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節點

redis-cli --cluster create 127.0.0.1:1001  127.0.0.1:1002 127.0.0.1:1003 127.0.0.1:1004 127.0.0.1:1005 127.0.0.1:1006 --cluster-replicas 1 -a ww 

第一次因爲沒有設置 -a ww 添加密碼,集羣建立失敗,

過程當中會提示如下內容,輸入  yes  繼續;

Can I set the above configuration? (type 'yes' to accept): yes

集羣自動分配結果以下:

三、驗證集羣是否建立成功

 首先查看一下主從配對狀況

執行 :redis-cli -c -p 1001 -a ww

數據自動分配到1002節點,鏈接也轉移到1002 節點

 

 四、驗證故障轉移

結論是主節點故障後,下掛從節點會升級成主節點,並接替主節點的槽位。舊主節點上線後,也只能做爲其從節點。 

kill 掉1001 ,發現其從節點1004轉爲了master

   

從新啓動1001,其變成slave節點

 

相關文章
相關標籤/搜索