redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署,修改一下ip地址就可以了)部署6个redis实例,三主三从,搭建集群的步骤如下:
第一步:在第一台机器的/usr/local/redis下创建文件夹redis-cluster,然后在其下面创建6个文件夹如下:
mkdir -p /usr/local/redis/redis-cluster
进入redis-cluster目录,创建6个文件夹
mkdir 7001 7002 7003 7004 7005 7006
第二步:把之前的redis.conf配置文件copy到7001下,修改如下内容:
cp /usr/local/redis/redis-5.0.5/redis.conf /usr/local/redis/redis-cluster/7001
说明:redis-5.0.5为解压的源码包
修改如下配置:
1 daemonize yes //redis后台运行 2 port 7001 (分别对每个机器的端口号进行设置) 3 pidfile /var/run/redis_7001.pid //pidfile文件对应7000,7002,7003...7006 4 cluster-enabled yes //开启集群 把注释#去掉 5 cluster-config-file nodes-7001.conf //集群的配置 配置文件首次启动自动生成 7001,7002,7003...7006 6 cluster-node-timeout 5000 //请求超时 设置5秒够了 7 appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 8 bind 127.0.0.1 (去掉bind绑定访问ip信息) 9 protected-mode no (关闭保护模式) 10 #dir /usr/local/redis/redis-cluster/7001/ (指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据,若该配置 不存在,请自行添加)
如果要设置密码需要增加如下配置:
11 requirepass xxx (设置redis访问密码) 12 masterauth xxx (设置集群节点间访问密码,跟上面一致)
第三步:把修改后的配置文件,copy到8002-8006,修改第2、3、5项里的端口号,可以用批量替换:
先复制:
1 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7002 2 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7003 3 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7004 4 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7005 5 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7006
然后分别到对应的目录下 把redis.conf 执行 vim
%s/源字符串/目的字符串/g
:%s/7001/7002/g
:%s/7001/7003/g
:%s/7001/7004/g
:%s/7001/7005/g
:%s/7001/7006/g
把7001替换为7002
全局替换 和 目录保持一致, 比如目录是 7003则 替换为7003
第四步:分别启动6个redis实例,然后检查是否启动成功
1 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7001/redis.conf 2 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7002/redis.conf 3 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7003/redis.conf 4 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7004/redis.conf 5 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7005/redis.conf 6 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7006/redis.conf
查看是否启动成功
使用ps-ef|grep redis 看下是否启动成功6个节点
ps -ef|grep redis
第五步:用redis-cli创建整个redis集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现)
执行命令
/usr/local/redis/bin/redis-cli --cluster create 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 127.0.0.1:7006 --cluster-replicas 1
说明:redis 5.x的集群创建不需要ruby环境了
--cluster-replicas 1 命令的意思是创建master的时候同时创建一个slave
会创建一个3master 3slaver的集群
输入yes
看到这说明集群都创建完了
第七步:验证集群:
1)连接任意一个客户端即可:
./redis-cli -c -a xxx -h 192.168.5.100 -p 7001
提示:-a访问服务端密码,-c表示集群模式,指定ip地址和端口号(若没有密码,-a xxx可省略)
执行此命令:
打开端口为7001的客户端 set一个值
./redis-cli -c -p 7001
退出该节点,进入7002端口:
发现,7002端口也可以取值
2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
3)进行数据操作验证
4)关闭集群则需要逐个进行关闭,使用命令:(模板)
/usr/local/redis/src/redis-cli -a xxx -c -h 192.168.0.60 -p 8001 shutdown
执行如下命令:
/usr/local/redis/bin/redis-cli -c -p 7001 shutdown
说明7001已关闭
提示:在搭建集群后,依然可以进行主从复制的操作,备份数据。
参考:
https://www.jianshu.com/p/8045b92fafb2
https://blog.csdn.net/qq_36514588/article/details/83856795
https://blog.csdn.net/woyixinyiyi/article/details/87967911
https://blog.csdn.net/hoopopo_wll/article/details/84925563
https://my.oschina.net/ruoli/blog/2252393 (redis5 提供了关闭集群的工具)
在这里非常感谢以上作者的劳动果实。
原文地址:https://www.cnblogs.com/116970u/p/11122331.html