redis clusterクラスタの構築プロセス(詳細)


redis clusterクラスタの構築


サーバのバージョン


CentOS Linux release 7.5.1804 (Core)

义齿

  • 三主三従
  • 192.168.24.241:6001,192.168.241.6002
  • 192.168.24.242:6001,192.168.242.6002
  • 192.168.24.243:6001,192.168.243.6002

  • redisのダウンロード

  • wget http://download.redis.io/releases/redis-4.0.8.tar.gz
  • 解凍
  • make
  • make install
  • redisサービス開始:redis-server
  • 発生したエラー
  • zmalloc.h:50:31:致命的なエラー:jemalloc/jemalloc.h:そのファイルやディレクトリがないというエラー
  • 解決方法:make MALLOC=libc

    redisを変更します。conf構成

  • redis_の作成clusterディレクトリ(サーバごと)mkdir redis_cluster
  • redis_clusterディレクトリに2つのディレクトリ6001 6002mkdir 6001mkdir 6002
  • を作成
  • redisを修正する.conf構成
  • #  
    #redis    
    daemonize    yes   
                          
    #pidfile   6001~6003
    pidfile  /var/run/redis_6000.pid   
          
    #6001~6003
    port  7000          
                         
    #    
    cluster-enabled  yes   
                      
    #            
    cluster-config-file  nodes_6001.conf 
        
    #    
    cluster-node-timeout  5000    
               
    #aof  
    appendonly  no  
    
    #    ,       ping    
    bind 192.168.21.137
    
  • redis.confは6001と6002にcp redis.conf redis_cluster/6001cp redis.conf redis_cluster/6002
  • を付与する

    redisのインストールに成功したことを確認

  • redisを起動各ディレクトリcd redis_cluster/6001redisを起動redis-server redis.conf
  • redisプロセスの表示ps -ef |grep redisredisプロセスが表示された場合は、redis起動成功
  • を表します.

    インストールredis-trib.rb


    redis-trib.rbは、クラスタを構築するための公式ツールです.

    インストールruby


    redis-trib.rbはrubyに基づいて書かれています
  • インストールrubyyum -y install ruby ruby-devel rubygems rpm-buildCentOS 7 yumライブラリでrubyのバージョンが2.0.0までサポートされているため、redis-trib.rbは>2.2.2バージョンが必要であるためrvmでruby
  • を更新する必要がある
  • ruby更新
  • rvmのインストール
  • gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
  • curl -L get.rvm.io | bash -s stable
  • find / -name rvm -print

  • 更新構成source /usr/local/rvm/scripts/rvm
  • rvmライブラリで既知のrubyバージョンrvm list known
  • を表示
  • rubyバージョンをインストールrvm install 2.3.3
  • rubyバージョンを使用rvm install 2.3.3
  • デフォルトバージョンの設定rvm use 2.3.3 --default
  • アンインストールyumダウンロードのバージョンrvm remove 2.0.0

  • redisインタフェースのダウンロード

  • 利用gemダウンロードgem install redis
  • インストール成功の確認

  • redis-trib.rbはredisのsrcディレクトリの下
  • /opt/redis/redis-4.0.8/src/redis-trib.rb

  • クラスタの作成


    redis-tribでrbクラスタの作成

  • redis-trib.rb使用
  • 参考url
  • createコマンドを使用してクラスタを作成します.**-replicas 1**は、各プライマリノードにスレーブノードがあり、その後にredisのip:port
  • が付いています.
  • ./redis-trib.rb create --replicas 1 192.168.24.241:6001 192.168.24.241:6002 192.168.24.242:6001 192.168.24.242:6002 192.168.24.243:6001 192.168.24.243:6002
  • [root@sy1 src]# ./redis-trib.rb create --replicas  1 192.168.24.241:6001 192.168.24.241:6002 192.168.24.242:6001 192.168.24.242:6002 192.168.24.243:6001 192.168.24.243:6002
    >>> Creating cluster
    >>> Performing hash slots allocation on 6 nodes...
    Using 3 masters:
    192.168.24.241:6001
    192.168.24.242:6001
    192.168.24.243:6001
    Adding replica 192.168.24.242:6002 to 192.168.24.241:6001
    Adding replica 192.168.24.243:6002 to 192.168.24.242:6001
    Adding replica 192.168.24.241:6002 to 192.168.24.243:6001
    M: f829b83670df08aa0289a5ffef9efa32386e92d2 192.168.24.241:6001
       slots:0-5460 (5461 slots) master
    S: 184f6dc341d0d49fbf17739233b7078606b399c3 192.168.24.241:6002
       replicates 130f3b8025c422820afa222f27949cf9acdc5f24
    M: 63458c1953bdaa3484c482af23b1a1fa7e6f4f71 192.168.24.242:6001
       slots:5461-10922 (5462 slots) master
    S: 8c8a6e54ee4c50e296f95faa7cda1cda0328fbe8 192.168.24.242:6002
       replicates f829b83670df08aa0289a5ffef9efa32386e92d2
    M: 130f3b8025c422820afa222f27949cf9acdc5f24 192.168.24.243:6001
       slots:10923-16383 (5461 slots) master
    S: 3c8b17d350ffafc7bafe1a0189deac5164fa45f1 192.168.24.243:6002
       replicates 63458c1953bdaa3484c482af23b1a1fa7e6f4f71
    Can I set the above configuration? (type 'yes' to accept): yes
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join..
    >>> Performing Cluster Check (using node 192.168.24.241:6001)
    M: f829b83670df08aa0289a5ffef9efa32386e92d2 192.168.24.241:6001
       slots:0-5460 (5461 slots) master
       1 additional replica(s)
    M: 130f3b8025c422820afa222f27949cf9acdc5f24 192.168.24.243:6001
       slots:10923-16383 (5461 slots) master
       1 additional replica(s)
    S: 184f6dc341d0d49fbf17739233b7078606b399c3 192.168.24.241:6002
       slots: (0 slots) slave
       replicates 130f3b8025c422820afa222f27949cf9acdc5f24
    S: 3c8b17d350ffafc7bafe1a0189deac5164fa45f1 192.168.24.243:6002
       slots: (0 slots) slave
       replicates 63458c1953bdaa3484c482af23b1a1fa7e6f4f71
    S: 8c8a6e54ee4c50e296f95faa7cda1cda0328fbe8 192.168.24.242:6002
       slots: (0 slots) slave
       replicates f829b83670df08aa0289a5ffef9efa32386e92d2
    M: 63458c1953bdaa3484c482af23b1a1fa7e6f4f71 192.168.24.242:6001
       slots:5461-10922 (5462 slots) master
       1 additional replica(s)
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    

    クラスタの接続

  • コマンド:redis-cli -h 192.168.24.241 -p 6001 -c
  • -h:Ip
  • -p:ポート、デフォルト6379
  • -c:クラスタモード、クラスタへのアクセスには
  • が必要
    [root@sy2 6001]# redis-cli -h 192.168.24.241 -p 6001 -c
    192.168.24.241:6001> set key1 key1
    -> Redirected to slot [9189] located at 192.168.24.242:6001
    OK
    192.168.24.242:6001> get key1
    "key1"
    192.168.24.242:6001> set kk 241
    -> Redirected to slot [2589] located at 192.168.24.241:6001
    OK
    192.168.24.241:6001> set kjkjkj 1231231
    OK
    192.168.24.241:6001> get kk
    "241"