Redis6.0.4 服务器集群搭建

实现目标

在一台主机上,搭建一个3主3从的高可用Redis服务器集群。

Redis6.0.4安装

参见CentOS7.0安装Redis6.0.4

准备工作

1.在redis安装目录,创建6个文件夹:

mkdir 9000 9001  9002  9003  9004  9005

2.将redis安装目录redis.conf文件分别拷贝到6个文件夹中,并命名为:
redis-cluster.conf

[root@localhost redis-6.0.4]# cp redis.conf 9000/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9001/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9002/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9003/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9004/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9005/redis-cluster.conf

3.将9000-9005 的6个文件夹中redis-cluster.conf文件按照以下的方式进行配置。
第92行的端口号改成所在文件夹的名称,比如以9000为例:
Redis6.0.4 服务器集群搭建_第1张图片
4.将206的守护进程开启:
Redis6.0.4 服务器集群搭建_第2张图片
5.关闭保护模式:(如果开启,需要设置密码,比较繁琐。如有需要可以按照自己的需求配置)
Redis6.0.4 服务器集群搭建_第3张图片
6.1172行,将集群开启:
Redis6.0.4 服务器集群搭建_第4张图片
7.将1180行的注释打开,按照如下格式进行配置:nodes-当前节点的端口号.conf
Redis6.0.4 服务器集群搭建_第5张图片
8.创建启动脚本:start-cluster.sh

#以集群方式启动9000到9005的Redis服务
for port in {9000..9005}
do
#关闭已经启动的服务,删除临时文件
redis-cli -c -p $port -h 192.168.43.88 shutdown
rm -f $port/dump*
rm -f $port/nodes*
done;
#start redis
for port in {9000..9005}
do redis-server $port/redis-cluster.conf
done;
#create cluster
echo yes|src/redis-cli --cluster create  192.168.43.88:9000 192.168.43.88:9001 192.168.43.88:9002 192.168.43.88:9003 192.168.43.88:9004 192.168.43.88:9005  --cluster-replicas 1

需要将其中的IP修改为你服务器对应的IP:
Redis6.0.4 服务器集群搭建_第6张图片

ps:需要注意的是,老版本的redis创建服务节点需要使用redis-trib.rb创建,但是新版本的redis则直接用redis-cli 就可以了。

其它参数解释:
–cluster-replicas 1:表示希望为集群中的每个主节点创建一个从节点(一主一从)。
–cluster-replicas 2:表示希望为集群中的每个主节点创建两个从节点(一主二从)。

也就是说,当前的脚本,将启动3主3从的节点。

9.创建停止脚本:stop-cluster.sh

for port in {9000..9005}
do
redis-cli -c -p $port shutdown
done;

验证

执行 sh start-cluster.sh
Redis6.0.4 服务器集群搭建_第7张图片
可以看到,3主3从的集群配置成功。
M:代表主节点,并且自动分配了槽道号。
S:代表从节点,没有槽道号。

测试一下

登录其中一个节点:设置 zhaoliwen键的值为ok:
通过对zhaoliwen键的hash取模计算,得到其槽道号为6716,归属端口为9003的节点管理,并自动切换到了端口为9003的节点:
Redis6.0.4 服务器集群搭建_第8张图片
获取键值:
在这里插入图片描述
ok,redis集群到此搭建成功。剩下的就可以通过java客户端调取使用了。

错误解决

[ERR] Node 192.168.43.88:9000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
Redis6.0.4 服务器集群搭建_第9张图片
如果遇到这样的错误,不要慌。
1.删除dump.rdb文件。
2.删除自动生成的在redis.conf里面cluster-config-file配置的的文件:
Redis6.0.4 服务器集群搭建_第10张图片

你可能感兴趣的:(互联网)