redis cluster集群搭建

redis-cluster集群搭建

准备配置文件模板

我从不知道什么地方抄的node

redis-cluster.tmplredis

# 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

生成对应节点的conf和data

新建一个.sh脚本文件redis-cluster-sh.shshell

#!/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

使用docker建立redis节点

建立一个.sh脚本文件create-redis-container.shssh

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"

建立redis-cluster集群

上述步骤能够在多台服务器上进行,以建立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节点)

相关文章
相关标签/搜索