Redis官方集羣安裝配置

操作系統:deepin15.9桌面版(國產Linux發行版)

集羣介紹:Redis Cluster爲官方發佈集羣方案,區別去其他方案(一致性哈希算法),本方案採用16384個slot槽的方案設計。可以在線修改糟的歸屬Redis節點,優秀的客戶端可以通過不斷積累更新16384個slot糟的redis節點,實現高效率。

優點:非代理,而是直接面向連接,效率很高。而且通過配置slave節點,實現高可用redis集羣方案。


Redis-cluster 架構圖


介紹:

(1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬.

(2)節點的fail是通過集羣中超過半數的節點檢測失效時才生效.

(3)客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連接集羣所有節點,連接集羣中任何一個可用節點即可

(4)redis-cluster把所有的物理節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value


安裝過程:

對應的redis節點和端口如下:

127.0.0.1:7000  127.0.0.1:7001

127.0.0.1:7002  127.0.0.1:7003

127.0.0.1:7004  127.0.0.1:7005

1 安裝Redis:

獲取包:

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

解壓,安裝:

tar xf redis-3.0.0.tar.gz                       
cd redis-3.0.0
make && make install

創建存放多個實例的目錄:

mkdir /data/cluster -p
cd /data/cluster
mkdir 7000 7001 7002 7003 7004 7005

修改配置文件:

port 7000 #端口設置

daemonize yes #開啓後臺進程,開啓這個就可以讓redis在後臺自行運行

cluster-enabled yes #允許集羣

cluster-config-file nodes.conf #設定了保存節點配置文件的路徑, 默認值爲nodes.conf ,節點配置文件無須人爲修改, 它由                                                    Redis 集羣在啓動時創建

cluster-node-timeout 5000 #redis節點宕機被發現的時間  也是主節點服務宕機 從節點頂替上來需要的時間

appendonly yes #開啓AOF模式

pidfile /var/run/redis_xxx.pid #這裏時指定一個redis開啓的所有進程的pid的記錄文件,因爲開啓的redis多了,全部都寫到同一個                                              文件裏,不方便查閱管理

logfile "logxxx.log" #指定一個自己的log打印文件,同理,也是方便查個各自的log文件

dbfile dumpxxx.rdb #指定各種持久化的文件

分別啓動6個redis實例:

cd /data/cluster/7000
redis-server redis.conf
cd /data/cluster/7001
redis-server redis.conf
cd /data/cluster/7002
redis-server redis.conf
cd /data/cluster/7003
redis-server redis.conf
cd /data/cluster/7004
redis-server redis.conf
cd /data/cluster/7005
redis-server redis.conf

查看進程否存在:

[root@redis-server 7005]# ps -ef | grep redis

執行命令創建集羣,首先安裝依賴,否則創建集羣失敗:

//安裝Ruby和RubyGems
{
    apt-get install ruby-full rubygems
//測試確保路徑下有gem命令:
    which gem
//如果命令沒有找到,則更新相應的PATH變量,例如,您可以使用以下行:更新.bashrc文件
    export PATH=$PATH:/var/lib/gems/1.8/bin

//離線安裝RubyGems
//首先下載安裝包:https://rubygems.org/pages/download。
//解壓並進入目錄,執行命令:ruby setup.rb
    cd /home/cmfchina/rubygems
    tar -zxvf rubygems-2.6.12.tgz
// 執行命令:ruby setup.rb
}

//安裝gem-redis
{
    gem install -l redis-3.0.0.gem  
//如果失敗:(手工下載並安裝:)
    wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
    gem install -l ./redis-3.2.1.gem

}


創建集羣:

redis-trib create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
命令的意義如下:

給定 redis-trib.rb 程序的命令是 create , 這表示我們希望創建一個新的集羣。
選項 --replicas 1 表示我們希望爲集羣中的每個主節點創建一個從節點。
之後跟着的其他參數則是實例的地址列表, 我們希望程序使用這些地址所指示的實例來創建新集羣。
簡單來說, 以上命令的意思就是讓 redis-trib 程序創建一個包含三個主節點和三個從節點的集羣。
>>> Creating cluster
Connecting to node 127.0.0.1:7000: /var/lib/gems/2.5.0/gems/redis-3.2.1/lib/redis/client.rb:443: warning: constant ::Fixnum is deprecated
OK
Connecting to node 127.0.0.1:7001: OK
Connecting to node 127.0.0.1:7002: OK
Connecting to node 127.0.0.1:7003: OK
Connecting to node 127.0.0.1:7004: OK
Connecting to node 127.0.0.1:7005: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
M: 74eeaa511a26c050deaed5c33180fead4b513db3 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 1c0ce26bad338ddf165176f97dbdca6a1466135b 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 17d6445e3da0274f4ec088a6b6f4407c26e59390 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
S: 19ee1c278329a86409238ca93c94e6afbc2b3b4a 127.0.0.1:7003
   replicates 74eeaa511a26c050deaed5c33180fead4b513db3
S: da398bc786c253c9aa7d82dee1fcaaa5de8ea1db 127.0.0.1:7004
   replicates 1c0ce26bad338ddf165176f97dbdca6a1466135b
S: 3495eee50240f5178f1bbefa9157fd5d10f3699c 127.0.0.1:7005
   replicates 17d6445e3da0274f4ec088a6b6f4407c26e59390
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 127.0.0.1:7000)
M: 74eeaa511a26c050deaed5c33180fead4b513db3 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 1c0ce26bad338ddf165176f97dbdca6a1466135b 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 17d6445e3da0274f4ec088a6b6f4407c26e59390 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
M: 19ee1c278329a86409238ca93c94e6afbc2b3b4a 127.0.0.1:7003
   slots: (0 slots) master
   replicates 74eeaa511a26c050deaed5c33180fead4b513db3
M: da398bc786c253c9aa7d82dee1fcaaa5de8ea1db 127.0.0.1:7004
   slots: (0 slots) master
   replicates 1c0ce26bad338ddf165176f97dbdca6a1466135b
M: 3495eee50240f5178f1bbefa9157fd5d10f3699c 127.0.0.1:7005
   slots: (0 slots) master
   replicates 17d6445e3da0274f4ec088a6b6f4407c26e59390
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章