redis cluster集群搭建

x33g5p2x  于2021-11-16 转载在 Redis  
字(2.6k)|赞(0)|评价(0)|浏览(268)

redis-cluster集群搭建

准备配置文件模板

我从不知道什么地方抄的

redis-cluster.tmpl

# 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

将配置模板推到服务器上(如果是直接在服务器上操作,则不需要这一步)

# 文件路径看个人喜好,我这儿图个方便
scp ./redis-cluster.tmpl xxxx@xxx.xxx.xxx.xxx:/redis-cluster.tmpl

生成对应节点的conf和data

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

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

如果是直接在服务器上操作

source /redis-cluster-sh.sh xxx.xxx.xxx.xxx

查看生成的文件

tree /home/redis-cluster/

如果不在服务器上,则可以执行

ssh root@xxx.xxx.xxx.xxx -C "/bin/bash -s" < ./redis-cluster-sh.sh xxx.xxx.xxx.xxx

使用docker创建redis节点

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

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

如果是直接在服务器上操作

source /create-redis-container.sh

查看docker容器

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节点)

相关文章

微信公众号

最新文章

更多