天天看點

centos 搭建redis叢集

前言

搭建叢集需要6個點,我是3台虛拟機每台兩個執行個體(根據自己的資源而定)
本文redis采用目前官網最新版本 redis-4.0.9
虛拟機系統 Centos7.4
           
  • 叢集功能限制

    1:key批量操作支援有限

    2:key事物操作支援有限

    3:不支援多資料庫空間,單機下redis可以支援16(0-15)個庫,叢集模式下隻能使用一個資料庫空間,即 db0 .

    4:複制結構隻支援一層,從節點隻能複制主節點,不支援嵌套樹狀複制

    5:key作為資料分區的最小粒度,是以不能将一個大的鍵值對象如 hash 、list等映射到不同的節點。

1:各節點安裝redis

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

2:解壓編譯安裝

tar -zxvf redis.tar.gz     //解壓
cd redis      //進入解壓後的目錄
make && make install  //編譯安裝
           

3:建立 Redis 節點

分别在每台虛拟機/opt/redis-/ 下建立 redis_cluster
mkdir redis_cluster
cp /opt/redis-/redis.cof /opt/redis_cluster/redis01.conf
cp /opt/redis-/redis.cof /opt/redis_cluster/redis02.conf

每台機器配置兩個redis執行個體檔案,修改端口等資訊
           
各節點配置檔案進行以下修改:
port       //其餘5個點端口7002,7003,7004,7005,7006        
bind 本機ip     //預設ip為127.0.0.1 需要改為其他節點機器可通路的ip 否則建立叢集時無法通路對應的端口,無法建立叢集
daemonize    yes     //redis背景運作
pidfile  /var/run/redis_7001.pid   //pidfile檔案
cluster-enabled  yes       //開啟叢集  把注釋#去掉
cluster-config-file  nodes_7001.conf   //叢集的配置  配置檔案首次啟動自動生成 
cluster-node-timeout     //請求逾時,預設15秒,可自行設定
appendonly  yes           //aof日志開啟  有需要就開啟,它會每次寫操作都記錄一條日志
           

4:啟動全部節點

centos 搭建redis叢集
centos 搭建redis叢集
centos 搭建redis叢集
可以看到3台虛拟機每個機器2個節點都啟動起來了。

5:建立叢集(方法一)

  • Redis 官方提供了 redis-trib.rb 這個工具,就在解壓目錄的 src 目錄中,第三步中已将它複制到 /usr/local/bin 目錄中,可以直接在指令行中使用了。使用下面這個指令即可完成安裝。
redis-trib.rb  create  --replicas   .X.X:   .X.X:   .X.X:  .X.X:  .X.X:  .X.X:
           
  • –replicas 1 表示指定每個master建立1個從節點。

執行時如果遇到 /usr/bin/env: ruby: No such file or directory 報錯

由于這個工具是用 ruby 實作的,是以需要安裝 ruby。

安裝ruby:

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis

redis4.0之後需要 redis requires Ruby version >= 2.2.2

是以需要去官網拉取新的ruby包。

http://www.ruby-lang.org/en/downloads/

再次運作指令:

redis-trib.rb  create  --replicas   .X.X:   .X.X:   .X.X:  .X.X:  .X.X:  .X.X:
           
centos 搭建redis叢集

輸入 yes 即可,然後出現如下内容,說明安裝成功。

centos 搭建redis叢集

到這一步叢集就算搭建完成 ,現在就可以登入到叢集進行操作驗證。

6:建立叢集(方法二)

通過Gossip協定彼此通信握手,達到感覺對方的存在。

指令:cluster meet x.x.x.x 7002

centos 搭建redis叢集
節點握手之後叢集還不能正常工作,這時叢集處于下線狀态,所有資料讀寫都被禁止。
           
centos 搭建redis叢集

可以看到目前所有插槽沒有配置設定到節點,是以叢集無法完成槽到節點的映射。隻有當16384個槽全部配置設定給節點後,叢集才進入線上狀态。

6.1:配置設定槽

指令(登入要配置設定曹位的節點):

cluster addslots {0...5461}

(配置設定0-5461槽位給目前機器)

6.2:添加從節點

指令:

cluster replicate 主節點ID

例:127.0.0.1:7001> cluster replicate 2db18763b42040c76b1832e5b06c43bb5b78089f

繼續閱讀