前言:
最近给客户部署项目提供三台机器,需要用到redis就想着部署RedisCluster模式集群,但是找遍了csdn都没找到我想要的。花了好久参考了很多博主的帖子终于让我搞出来了,个人比较菜各位看官老爷见笑。话不多说开搞!!!!!!
安装前准备:
1.在三台机器上分别创建对应配置文件夹,一台机器两个节点(一主一从),命令如下:
机器1: mkdir /mnt/redis/share/redis-node -1/conf
机器1: mkdir /mnt/redis/share/redis-node -2/conf
机器2: mkdir /mnt/redis/share/redis-node -3/conf
机器2: mkdir /mnt/redis/share/redis-node -4/conf
机器3: mkdir /mnt/redis/share/redis-node -5/conf
机器3: mkdir /mnt/redis/share/redis-node -6/conf
2.在新建好的文件夹内编辑对应的配置文件 6个文件夹6份
机器1: vim /mnt/redis/share/redis-node -1/conf/redis.conf
机器1: vim /mnt/redis/share/redis-node -2/conf/redis.conf
机器2:略
机器3:略
配置文件内容在下面:复制粘贴的时候注意看写的注释作出相应更改。
#端口 比如机器1 节点1 6381 节点2 6382 机器2 节点1 6383 节点2 6384 机器3 略
port 6381
#非保护模式
protected-mode no
#启用集群模式
cluster-enabled yes
cluster-config-file nodes-6381.conf
#超时时间
cluster-node-timeout 15000
#集群各节点IP地址,记得修改为节点所在的ip地址
cluster-announce-ip 192.168.21.128
#集群节点映射端口,记得修改为节点端口
cluster-announce-port 6381
#集群总线端口 这里记得修改例如1+port
cluster-announce-bus-port 16381
#开启aof持久化策略
appendonly yes
#后台运行
#daemonize yes
#进程号存储 这里记得修改例如 port
pidfile /var/run/redis_6381.pid
#外部访问
bind 0.0.0.0
#集群加密
#masterauth itheima
#requirepass itheima
安装:
docker pull redis/redis:7.0.1
启动:
注意:启动命令可能由于自动换行问题复制粘贴的时候先粘贴到txt上并修改成一行。
机器1 节点1
docker run -d -it –restart always –name redis-node-1 -p 6381:6381 -p 16381:16381 -v /mnt/redis/share/redis-node -1/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /mnt/redis/share/redis-node-1/data:/data –privileged=true redis:7.0.1 redis-server /usr/local/etc/redis/redis.conf
机器1 节点2
docker run -d -it –restart always –name redis-node-2 -p 6382:6382 -p 16382:16382 -v /mnt/redis/share/redis-node -2/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /mnt/redis/share/redis-node-2/data:/data –privileged=true redis:7.0.1 redis-server /usr/local/etc/redis/redis.conf
机器2 机器3 略
集群连接:
进入任意节点即可:
docker exec -it redis-node-1 bash
redis-cli –cluster create xxx.xxx.xxx:6381 xxx.xxx.xxx:6382 xxx.xxx.xxx:6383 xxx.xxx.xxx:6384 xxx.xxx.xxx:6385 xxx.xxx.xxx:6386 –cluster-replicas 1
输入:yes
出现下图大功告成:
踩坑报错:
如果出现 waiting for the cluster to join
检查配置文件 cluster-announce-ip 是否填写正确 以及端口节点对应端口是否开放。