Docker安装Redis集群
本文展示如何快速在单机
上用docker部署redis(3主3从)集群研发
、测试
环境。本文中所有IP、端口、部署目录
请根据实际情况修改。
Redis集群高可用注意点
-
Reids集群中应该包含奇数个Master(主),至少应该有3个Master。(因为Redis集群和PXC集群都有选举机制,当集群中超过一半以上的节点挂掉,剩余节点无法进行选举,组成新的集群)
-
Redis集群中每个Master都应该有Slave(从)
Redis集群高可用架构图
部署清单
集群IP | 集群端口 | 节点 | 目录 |
---|---|---|---|
172.30.34.199 | 6880、16880 | master | /data/redis_cluster/6880 |
172.30.34.199 | 6881、16881 | master | /data/redis_cluster/6881 |
172.30.34.199 | 6882、16882 | master | /data/redis_cluster/6882 |
172.30.34.199 | 6883、16883 | slave | /data/redis_cluster/6883 |
172.30.34.199 | 6884、16884 | slave | /data/redis_cluster/6884 |
172.30.34.199 | 6885、16885 | slave | /data/redis_cluster/6885 |
Redis集群部署步骤
以下所有IP、端口、目录
请根据自己实际情况进行修改
创建部署目录
-
创建6个节点目录
mkdir -p /data/redis_cluster/688{0,1,2,3,4,5}/data
创建redis配置文件
-
找一个redis安装包中的
redis.conf
-
将redis配置文件,按照要求修改以下内容:
port 6379 #修改绑定端口端口 6880-6885 #bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问 protected-mode no #默认yes,修改为no,关闭保护模式,允许远程访问 requirepass qwer1234 #默认没有密码,放开这部分并设置密码 masterauth qwer1234 #集群加密密码,和上面密码一直 appendonly yes #redis持久化(可选) cluster-enabled yes #开启集群模式 cluster-config-file nodes-6379.conf #指定集群节点配置文件 cluster-node-timeout #制定节点超时时间
-
将6个不同端口的redis配置文件(6880-6885),上传到服务器对应目录
#上传redis.conf到/data/redis_cluster/6880-6885目录,注意配置文件中端口和目录保持一致
启动redis容器
-
在服务器
/data/redis_cluster
目录创建create.sh
#!/bin/sh for port in $(seq 6880 6885); \ do \ docker run -d \ --name myRedis${port} \ --network=host \ -v /data/redis_cluster/${port}/redis.conf:/etc/redis/redis.conf \ -v /data/redis_cluster/${port}/data:/data \ redis:6.2.6 redis-server /etc/redis/redis.conf done
-
执行脚本
bash /data/redis_cluster/create.sh
-
查看容器
docker ps -a | grep myRedis
组建redis集群网络
-
进入任意一个master节点容器
docker exec -ti myRedis6880 /bin/bash
-
组建redis网络
#qwer1234 为配置文件中设置的密码 redis-cli -a qwer1234 --cluster create 172.30.34.199:6880 172.30.34.199:6881 172.30.34.199:6882 172.30.34.199:6883 172.30.34.199:6884 172.30.34.199:6885 --cluster-replicas 1
-
查看redis集群网络
#登录 redis-cli -h 172.30.34.199 -p 6880 #授权 qwer1234 为配置文件中设置的密码 auth qwer1234 #查看集群网络 cluster nodes