我从不知道什么地方抄的node
redis-cluster.tmpl
redis
# redis端口 port ${PORT} # 关闭保护模式 protected-mode no # 开启集群 cluster-enabled yes # 集群节点配置 cluster-config-file nodes.conf # 超时 cluster-node-timeout 5000 # 集群节点IP cluster-announce-ip ${HOST} # 集群节点端口 cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} # 开启 appendonly 备份模式 appendonly yes # 每秒钟备份 appendfsync everysec # 对aof文件进行压缩时,是否执行同步操做 no-appendfsync-on-rewrite no # 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写 auto-aof-rewrite-percentage 100 # 重写前AOF文件的大小最小值 默认 64mb auto-aof-rewrite-min-size 64mb
将配置模板推到服务器上(若是是直接在服务器上操做,则不须要这一步)docker
# 文件路径看我的喜爱,我这儿图个方便 scp ./redis-cluster.tmpl xxxx@xxx.xxx.xxx.xxx:/redis-cluster.tmpl
新建一个.sh
脚本文件redis-cluster-sh.sh
shell
#!/bin/bash # 通常来讲建集群至少须要6个redis节点 # 根据实际状况设置{HOST}和{PORT} # 多台服务器记得更换{HOST} # 经过$1传入HOST大概能够更加灵活一点 export HOST=$1 for port in $(seq 7501 7506); do \ mkdir -p /home/redis-cluster/"$port"/conf \ && PORT="$port" envsubst < /redis-cluster.tmpl > \ /home/redis-cluster/"$port"/conf/redis.conf \ && mkdir -p /home/redis-cluster/"$port"/data; \ done
若是是直接在服务器上操做bash
source /redis-cluster-sh.sh xxx.xxx.xxx.xxx
查看生成的文件服务器
tree /home/redis-cluster/
若是不在服务器上,则能够执行app
ssh root@xxx.xxx.xxx.xxx -C "/bin/bash -s" < ./redis-cluster-sh.sh xxx.xxx.xxx.xxx
建立一个.sh
脚本文件create-redis-container.sh
ssh
for port in $(seq 7501 7506); do \ docker run -itd -p "$port":"$port" -p 1"$port":1"$port" \ -v /home/redis-cluster/"$port"/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -v /home/redis-cluster/"$port"/data:/data \ --restart always --name redis-"$port" \ redis redis-server /usr/local/etc/redis/redis.conf; \ done
若是是直接在服务器上操做rest
source /create-redis-container.sh
查看docker容器code
docker ps -a
若是不在服务器上,则能够执行
# 远程执行本地的脚本文件 ssh xxxx@xxx.xxx.xxx.xxx < ./create-redis-container.sh # 查看docker ssh xxxx@xxx.xxx.xxx.xxx "docker ps -a"
上述步骤能够在多台服务器上进行,以建立6/12/18/.../6*N个节点
以后选择其中的一个容器进行集群的建立,把涉及到的节点所有添加到进来
# 选择任意一个redis容器 docker exec -it redis-750* redis-cli --cluster \ create xxx.xxx.xxx.xxx:7501 \ xxx.xxx.xxx.xxx:7502 xxx.xxx.xxx.xxx:7503 \ xxx.xxx.xxx.xxx:7504 xxx.xxx.xxx.xxx:7505 \ xxx.xxx.xxx.xxx:7506 --cluster-replicas 1
预览一下主从信息,以后键入 yes
确认建立
若是不在服务器上,则能够执行
# 选择任意一个redis容器 ssh -t xxxx@xxx.xxx.xxx.xxx "docker exec -it redis-750* \ redis-cli --cluster create xxx.xxx.xxx.xxx:7501 \ xxx.xxx.xxx.xxx:7502 xxx.xxx.xxx.xxx:7503 \ xxx.xxx.xxx.xxx:7504 xxx.xxx.xxx.xxx:7505 \ xxx.xxx.xxx.xxx:7506 --cluster-replicas 1"
至此,redis-cluster 集群就算是建立完成了
上述方法会建立3主3从(1:1)的集群,主节点挂掉以后对应的从节点会顶上来
若是以为从节点太少,建立集群的时候能够经过修改 --cluster-replicas
来调整每一个主节点的从节点数量,好比3主6从(1:2)什么的,可是须要增长节点数量(从6节点增长到9节点)