Redis集羣搭建-4.0.x版本

網上已經有很多類似教程,我只是簡單記錄一下其主要過程和遇到的問題。

1 軟件準備

    虛擬機:centos 7.x

    redis版本:4.0.9

    ruby版本:ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]

    軟件準備遇到的問題:

        安裝ruby過程中:

Error running 'requirements_centos_libs_install autoconf automake bison libffi-devel libtool readline-devel sqlite-devel zlib-devel libyaml-devel 
openssl-devel',

        解決:一頓yum install 缺少的lib

2 redis.conf配置文件

    複製出6份redis_8001conf、redis_8002conf、redis_8003conf、redis_8004conf、redis_8005conf、redis_8006conf

    爲什麼要6份呢?因爲集羣要求(最少3主),如果每個主節點需要1個備份而集羣少於6個節點則報錯如下:

>>> Creating cluster
*** ERROR: Invalid configuration for cluster creation.
*** Redis Cluster requires at least 3 master nodes.
*** This is not possible with 4 nodes and 1 replicas per node.
*** At least 6 nodes are required.

    配置文件每份內容大致如下:

daemonize yes
port 8001
bind 你的ip
pidfile /var/run/redis_8001.pid
dir /data/redis_data/8001
cluster-enabled yes
cluster-config-file nodes_8001.conf
cluster-node-timeout 15000
cluster-require-full-coverage no
appendonly yes

3 啓動redis服務

    分別啓動6個redis服務

$ cd redis/src
$ ./redis-server ../redis_8001.conf

    每個redis服務啓動成功的話:

11815:C 01 Jun 11:59:32.966 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
11815:C 01 Jun 11:59:32.966 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=11815, just started
11815:C 01 Jun 11:59:32.966 # Configuration loaded

    查詢redis進程ps -ef|grep redis,redis進程後有[cluster]標記:

user      11801     1  0 11:59 ?        00:00:02 ./redis-server xxx.xx.xx.xx:8001[cluster]

4  啓動redis集羣

Redis的實例全部運行之後,還需要redis-trib.rb工具來完成集羣的創建。

redis-trib.rb二進制文件在Redis包主目錄下的src目錄中,運行該工具依賴Ruby(yum -y install ruby rubygems環境和gem(gem install redis,因此需要提前安裝。(引自:https://blog.csdn.net/huwh_/article/details/79242625

$ cd redis/src
$ ./redis-trib.rb create --replicas 1 ip:8001 ip:8002 ip:8003 ip:8004 ip:8005 ip:8006

成功的話:

 

 

    此處遇到的問題:

    cluster啓動報錯:

>>> Creating cluster
[ERR] Sorry, can't connect to node xxx.xx.xx.xxx:8001

    解決:1、查看redis配置文件bind參數的ip和啓動時的命令中的ip是否一致 2、查看redis配置文件有沒有添加密碼驗證,有則取消。3、網上所說的ruby版本過低??

5 驗證集羣

很簡單,測試以集羣方式登錄某一節點,創建一個key,去另一個節點get等等驗證方式。

集羣登錄節點方式:

$ cs redis/src
$ ./redis-cli -c -h 127.0.0.1 -p 8001

6 集羣密碼

以上方式創建的集羣是無密碼的,直接可以拿來用。

給集羣添加密碼1234 方式如下:

依次登陸每個節點添加集羣認證(masterauth)和單個服務自己的密碼(requirepass)且要保持一致:

$ redis-cli -c -h 127.0.0.1 -p 8001
> config set masterauth 1234
OK
> config set requirepass 1234
OK
> quit
$ redis-cli -c -h 127.0.0.1 -p 8001 -a 1234
> config rewrite

 

密碼登錄集羣節點的命令:

 

redis-cli -c -h 127.0.0.1 -p 8001 -a 1234

7 集羣重啓遇到的問題

由於服務器重啓,之前的redis集羣服務未停止。後來在啓動集羣時,集羣可以啓動成功,但是新增key值,報錯:

CLUSTERDOWN Hash slot not served

解決辦法:

修復意外停止的集羣,每一個節點執行:redis-trib.rb fix IP:端口

 

 

 

 

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