macOS 通过 docker 安装 redis 集群

386 阅读3分钟

安装集群

macOS 通过 docker 来进行安装 redis 机群,解决开发环境临时使用的问题,完成本地 redis 集群环境搭建。

安装步骤如下:

  1. 查询主机 ip 信息,命令如下:

ifconfig

image.png

  1. 删除容器信息,如果步骤执行错误了,可以删除容器,然后重新执行第 3 步
docker rm -f redis-30001
docker rm -f redis-30002
docker rm -f redis-30003
docker rm -f redis-30004
docker rm -f redis-30005
docker rm -f redis-30006
  1. 启动 redis 节点信息,集群配置概述:a. redis 端口因素到宿主机端口 30001 - 30006; b. 需要改动的配置直接加到启动命令上,方便快速部署。
docker run --hostname=redis-30001 --name redis-30001  -p 30001:6379 -p 31001:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30001 --cluster-announce-bus-port 31001
docker run --hostname=redis-30002 --name redis-30002  -p 30002:6379 -p 31002:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30002 --cluster-announce-bus-port 31002
docker run --hostname=redis-30003 --name redis-30003  -p 30003:6379 -p 31003:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30003 --cluster-announce-bus-port 31003
docker run --hostname=redis-30004 --name redis-30004  -p 30004:6379 -p 31004:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30004 --cluster-announce-bus-port 31004
docker run --hostname=redis-30005 --name redis-30005  -p 30005:6379 -p 31005:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30005 --cluster-announce-bus-port 31005
docker run --hostname=redis-30006 --name redis-30006  -p 30006:6379 -p 31006:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30006 --cluster-announce-bus-port 31006

  1. 进入其中一个主机,然后执行集群命令,可以通过容器名就可以进入。
docker exec -it redis-30001 /bin/bash
  1. 集群搭建
redis-cli --cluster create --cluster-replicas 1 192.168.31.41:30001 192.168.31.41:30002 192.168.31.41:30003 192.168.31.41:30004 192.168.31.41:30005 192.168.31.41:30006

  1. 外部访问
redis-cli -c -h 127.0.0.1 -p 30001

测试命令:

image.png

  1. docker 客户端查询运行的效果

image.png

网络相关

docker 网络相关,本地测试不建议使用。

# 查看网络
docker network ls
# 删除网络
docker network rm redis_3000x
# 构建网络
docker network create -d bridge --subnet=192.168.31.0/24 --gateway=192.168.31.1 -o parent=eth0 redis_3000x

常见问题

  1. (error) MOVED 15495 192.168.31.41:30003

redis-cli -c 集群模式登录

  1. Waiting for the cluster to join

使用Docker搭建Redis集群的时候,在redis-cli --cluster create环节,一直卡到"Waiting for the cluster to join”, 解决办法:同时暴露两个端口,用于提供client和其他节点,进行通信。 image.png

  1. 解决Docker macvlan网络与宿主机通讯问题

参考:blog.csdn.net/weixin_4490…