1,准备
准备好redis镜像
docker pull redis
准备好集群网络
docker network create 172.19 --gateway 172.19.0.1 --subnet 172.19.0.0/24
redis集群官方建议最少6个节点,准备如下6个节点ip
172.19.0.11,172.19.0.12,172.19.0.21,172.19.0.22,172.19.0.31,172.19.0.32
准备如下文件
-rw-r--rw-. 1 root root 61K 4月 24 10:06 redis-cluster11.conf -rw-r--rw-. 1 root root 9.5K 4月 24 11:35 redis-cluster11.log -rw-r--rw-. 1 root root 61K 4月 24 10:58 redis-cluster12.conf -rw-r--rw-. 1 root root 7.1K 4月 24 11:35 redis-cluster12.log -rw-r--rw-. 1 root root 61K 4月 24 10:08 redis-cluster21.conf -rw-r--rw-. 1 root root 9.5K 4月 24 11:35 redis-cluster21.log -rw-r--rw-. 1 root root 61K 4月 24 10:59 redis-cluster22.conf -rw-r--rw-. 1 root root 7.4K 4月 24 11:35 redis-cluster22.log -rw-r--rw-. 1 root root 61K 4月 24 10:09 redis-cluster31.conf -rw-r--rw-. 1 root root 9.8K 4月 24 11:35 redis-cluster31.log -rw-r--rw-. 1 root root 61K 4月 24 10:59 redis-cluster32.conf -rw-r--rw-. 1 root root 7.8K 4月 24 11:35 redis-cluster32.log
各个文件之后挂载到对应容器节点(配置文件,可从本地环境拷贝一份)
各个配置文件需要修改的主要参数:
logfile /var/log/redis.log dir /data #主从认证密码 masterauth 123.com #本地认证密码 requirepass 123.com cluster-enabled yes cluster-config-file nodes-11.conf
各个节点配置唯一不同的地方在于最后一行,可以依次按节点命名(如上所示)
2,创建容器
for i in {11,12,21,22,31,32} do docker run -d --name redis-cluster$i --hostname redis-cluster$i --ip 172.19.0.$i --network 172.19 --restart unless-stopped -v /data/redis/conf/redis-cluster$i.conf:/etc/redis.conf -v /data/redis/conf/redis-cluster$i.log:/var/log/redis.log redis redis-server /etc/redis.conf done
创建结果如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0926b0803caa redis "docker-entrypoint.s…" 35 minutes ago Up 35 minutes 6379/tcp redis-cluster32 dfd9a6a1baf5 redis "docker-entrypoint.s…" 35 minutes ago Up 35 minutes 6379/tcp redis-cluster31 12b26ff7c35c redis "docker-entrypoint.s…" 35 minutes ago Up 35 minutes 6379/tcp redis-cluster22 f0b3c49afd8c redis "docker-entrypoint.s…" 36 minutes ago Up 35 minutes 6379/tcp redis-cluster21 677263b89606 redis "docker-entrypoint.s…" 36 minutes ago Up 36 minutes 6379/tcp redis-cluster12 3118704df588 redis "docker-entrypoint.s…" 36 minutes ago Up 36 minutes 6379/tcp redis-cluster11
3,创建集群
任意进入一个节点,执行如下命令
redis-cli --cluster create 172.19.0.11:6379 172.19.0.12:6379 172.19.0.21:6379 172.19.0.22:6379 172.19.0.31:6379 172.19.0.32:6379 --cluster-replicas 1 --pass 123.com
结果如下:
输入 yes 并回车,结果如下
在当前节用redis终端登入redis节点
redis-cli -c --pass 123.com
执行cluster info
可以看见集群相关信息
cluster_known_nodes:6 这一行确认集群有6个节点
执行 cluster nodes
可以看到,三主三从的相关信息,
比如,主节点是11,12,21;32是12的从节点,22是21的从节点,31是11的从节点
可以在任意节点执行 info replicaiton 来再次验证,比如在11节点
至此,redis集群搭建完毕。