天天看點

Redis4.0.9 Cluster 安裝

環境準備

作業系統:CentOS7_x86_64

IP: 192.168.1.224

1.下載下傳redis-4.0.9.tar.gz

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

2.安裝redis 

$ tar -zxf redis-4.0.9.tar.gz
$ cd redis-4.0.9
$ make && make install
      

3. redis配置

配置服務啟動腳本及相關參數

$ cp utils/redisinitscript /etc/init.d/redis_6379
$ mkdir /etc/redis
$ cp redis.conf /etc/redis/6379.conf
$ mkdir -p /var/redis/6379 #配置持久化檔案的目錄
$ mkdir -p /var/log/redis #redis日志檔案存放目錄
      

redis.conf 配置參數調整如下

# port 6379                -- 預設端口号
 # daemonize yes            -- 背景運作,預設為no
 # bind 127.0.0.1 192.168.1.224 -- 192.168.1.224為本機位址
 # pidfile /var/run/redis_6379.pid -- pid檔案
 # logfile /var/log/redis/6379.log -- 日志檔案
 # dir /var/redis/6379  -- 工作目錄
 # cluster-enabled yes      -- 預設為注釋掉
 # cluster-config-file nodes-6379.conf -- 該配置檔案首次啟動自動生成
 # cluster-node-timeout 15000
 # appendonly yes -- aof日志開啟,有需要就開啟,它會每次寫操作都記錄一條日志
      

設定開機自啟動

$ vim /etc/init.d/redis_6379
在#!/bin/bash 之後添加如下資訊
 # chkconfig: 2345 10 90      

$ chkconfig --add redis_6379

其中2345是預設啟動級别,級别有0-6共7個級别。 等級0表示:表示關機      等級1表示:單使用者模式      等級2表示:無網絡連接配接的多使用者指令行模式      等級3表示:有網絡連接配接的多使用者指令行模式      等級4表示:不可用      等級5表示:帶圖形界面的多使用者模式      等級6表示:重新啟動 10是啟動優先級,90是停止優先級,優先級範圍是0-100,數字越大,優先級越低

建立其他節點

# 配置檔案複制
cp redis.conf /etc/redis/6380.conf
cp redis.conf /etc/redis/6381.conf
cp redis.conf /etc/redis/6382.conf
cp redis.conf /etc/redis/6383.conf
cp redis.conf /etc/redis/6384.conf
 # 工作目錄複制 
mkdir -p /var/redis/6380
mkdir -p /var/redis/6381
mkdir -p /var/redis/6382
mkdir -p /var/redis/6383
mkdir -p /var/redis/6384
 # 複制自啟腳本
cd /etc/init.d
cp redis6379 redis6380
cp redis6379 redis6381
cp redis6379 redis6382
cp redis6379 redis6383
cp redis6379 redis6384
      

安裝Ruby環境 1.下載下傳ruby-2.4.4.tar.gz

wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.gz
      

2.安裝ruby

yum install zlib zlib-devel openssl openssl-devel rubygems
$ tar -zxf ruby-2.4.4.tar.gz
$ cd ruby-2.4.4
$ ./configure --prefix=/Data/servers/ruby
$ make && make install
$ ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby
$ ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby

更新國内gem源 http://ruby.taobao.org
      
$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/      
$ gem install redis # 安裝redis依賴

      

編譯安裝zlib

$ cd /Data/servers/ruby-2.4.4/ext/zlib
$ ruby extconf.rb
 
錯誤:make: *** No rule to make target          /include/ruby.h', needed by                zlib.o'.  Stop

 #修改Makefile
 zlib.o: ${top_srcdir}/include/ruby.h
 zlib.o: ../../include/ruby.h      

錯誤:Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources yum install openssl openssl-devel #修改Makefile $ 1,$s/${top_srcdir}\/include\/ruby.h/..\/..\/include/ruby.h/g $ make && make install

3.建立叢集

./redis-trib.rb create --replicas 1 192.168.1.224:6379 192.168.1.224:6380 192.168.1.224:6381 192.168.1.224:6382 192.168.1.224:6383 192.168.1.224:6384
出現提示輸入框是輸入:yes
      

輸出結果如下

[[email protected] src]# ./redis-trib.rb create --replicas 1 192.168.1.224:6379 192.168.1.224:6380 192.168.1.224:6381 192.168.1.224:6382 192.168.1.224:6383 192.168.1.224:6384
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.224:6379
192.168.1.224:6380
192.168.1.224:6381
Adding replica 192.168.1.224:6383 to 192.168.1.224:6379
Adding replica 192.168.1.224:6384 to 192.168.1.224:6380
Adding replica 192.168.1.224:6382 to 192.168.1.224:6381
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 0a538f5d015ce5a109771c2002d0201e8e567549 192.168.1.224:6379
   slots:0-5460 (5461 slots) master
M: 21e03e4d6ea0957df8917c335216d9e7e14497ac 192.168.1.224:6380
   slots:5461-10922 (5462 slots) master
M: 203f7d8d06b3adc5271247ca8175331564b30487 192.168.1.224:6381
   slots:10923-16383 (5461 slots) master
S: e086bc41c0410256ce339f8d90a154765aa347e1 192.168.1.224:6382
   replicates 203f7d8d06b3adc5271247ca8175331564b30487
S: 5447e331f1a44f776cbddf82eb4b74772d95738f 192.168.1.224:6383
   replicates 0a538f5d015ce5a109771c2002d0201e8e567549
S: 85d27b84e855d57724ef3c13bd2ff94809f4c043 192.168.1.224:6384
   replicates 21e03e4d6ea0957df8917c335216d9e7e14497ac
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.1.224:6379)
M: 0a538f5d015ce5a109771c2002d0201e8e567549 192.168.1.224:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 85d27b84e855d57724ef3c13bd2ff94809f4c043 127.0.0.1:6384
   slots: (0 slots) slave
   replicates 21e03e4d6ea0957df8917c335216d9e7e14497ac
M: 203f7d8d06b3adc5271247ca8175331564b30487 127.0.0.1:6381
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 21e03e4d6ea0957df8917c335216d9e7e14497ac 127.0.0.1:6380
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: e086bc41c0410256ce339f8d90a154765aa347e1 127.0.0.1:6382
   slots: (0 slots) slave
   replicates 203f7d8d06b3adc5271247ca8175331564b30487
S: 5447e331f1a44f776cbddf82eb4b74772d95738f 127.0.0.1:6383
   slots: (0 slots) slave
   replicates 0a538f5d015ce5a109771c2002d0201e8e567549
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
      

4.管理常用指令

$ pkill redis  #快速關閉叢集
$ ./redis-trib.rb check 192.168.1.224:6379 #檢查叢集狀态
      

5.叢集常用指令

$ redis-cli
$ cluster nodes #列出叢集所有節點
$ cluster info  #顯示叢集的資訊
      

節點

cluster meet   #将 ip 和 port 所指定的節點添加到叢集當中
cluster forget <node_id style="-webkit-print-color-adjust: exact;"> #從叢集中移除 nodeid 節點。
cluster replicate <nodeid> #将目前節點設定為 nodeid 節點的從節點。
cluster saveconfig #将節點的配置檔案儲存到硬碟
      

槽(slot)

cluster addslots id> #将槽 slot 指派給 nodeid 指定的節點,如果槽已經指派給另一個節點,那麼先讓另一個節點删除該槽>,然後再進行指派。
cluster setslot id> #将本節點的槽 slot 遷移到 nodeid 指定的節點中。
cluster setslot id> #從 node_id 指定的節點中導入槽 slot 到本節點。
cluster setslot       

cluster keyslot  #計算鍵 key 應該被放置在哪個槽上。
cluster countkeysinslot       

繼續閱讀