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:端口

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值