Mac系统Docker安装Redis cluster集群(三主三从)

如果这篇文章对您有些用处,请点赞告诉我O(∩_∩)O

抱歉,之前的文章有错误,集群本身测试没有问题,但使用Jedis客户端JedisCluster调用时,报No reachable node in cluster。究其原因是docker MacOS不支持Host模式。

以下内容已修正并测试通过。

目录

一、安装

二、配置

三、启动并创建集群节点

四、验证


一、安装

(1)搜索redis

docker search redis

0

(2)拉取redis,默认拉取laster

docker pull redis

0

(3)查看laster具体版本

docker image inspect redis:latest | grep -i version

0

也可以在https://hub.docker.com搜索指定版本拉取

0

(4)查看镜像

docker images

0

二、配置

(1)在用户目录创建redis集群配置文件夹。(Mac系统中,配置文件必须在/Users 子目录下,原因后面解释)

mkdir redis_cluster

0

(2)创建配置模板

vim redis_cluster/redis-cluster.tmpl

redis-cluster.tmpl

# 关闭保护模式
protected-mode no
# 开启集群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP
cluster-announce-ip 10.211.242.73
# 集群节点端口 7001 - 7006
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
# 开启 appendonly 备份模式
appendonly yes
# 后台
daemonize no
# 密码
requirepass xxxxredis密码在此xxxx
masterauth xxxxredis密码在此xxxx

坑1:cluster-announce-ip 不能是127.0.0.1,这一点和不使用docker直接在MacOS上搭建redis-cluster不同,会被容器认为是自己,而不是宿主。

(3)利用模板生成三主三从(7001-7006)配置文件

cd redis-cluster

for port in `seq 7001 7006`; do \
  mkdir -p ${port}/conf \
  && PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf \
  && mkdir -p ${port}/data; \
done

(4)树结构查看已生成的配置文件

安装tree命令(已存在跳过)

brew install tree

tree

0

三、启动并创建集群节点

(1)使用docker run批量启动容器7001-7006

for port in `seq 7001 7006`; do \
docker run -id --restart always --name redis-${port} \
-p ${port}:${port} -p 1${port}:1${port} \
-v /Users/yaoguangyao/DEV/docker/redis-cluster/${port}/conf:/usr/local/etc/redis \
-v /Users/yaoguangyao/DEV/docker/redis-cluster/${port}/data:/data \
redis redis-server /usr/local/etc/redis/redis.conf \
--requirepass "xxxxredis密码在此xxxx"; \
done

坑2:-v 表示挂载,在MacOS中挂载目录被限制为只能在\Users下,也就是网络上大多文章挂载的目录/usr/local/****等,对于Mac都是无效目录。(这不是权限问题,不能通过chmod简单解决)

如果进入容器查看/Data目中没有任何文件(应该至少存在nodes.conf)或者 /usr/local/etc/redis/redis.conf 不是一个文件而是一个空目录,

则表示挂载失败,redis启动时也就无法读入redis.conf配置。

(在Windows系统中也有同样的问题,挂载目录被限制在C:\Users下)

坑3:MacOS和docker网络交互,不支持host模式(--net host),需要使用默认的bridge模式(使用-p映射端口)。

(2)查看容器

docker ps

0

(3)查看容器日志,确认是否启动成功

docker logs redis-7001

0

如果启动错误,停止并删除容器。

for port in `seq 7001 7006`; do \
  docker stop redis-${port};
  docker rm redis-${port};
done

(4)创建集群节点

进入容器redis-7001(建议第一个容器)

docker exec -it redis-7001 bash

创建集群节点

redis-cli -a xxxxredis密码在此xxxx --cluster create 10.211.242.73:7001 10.211.242.73:7002 10.211.242.73:7003 10.211.242.73:7004 10.211.242.73:7005 10.211.242.73:7006 --cluster-replicas 1

四、验证

在容器redis-7001中进入redis

redis-cli -c -a xxxxredis密码在此xxxx -h 10.211.242.73 -p 7001

查看集群节点信息

cluster nodes

0

设置值并获取值

set name flyzing

get name

0

要在Docker中集成Redis Cluster集群,可以按照以下步骤操作: 1. 创建一个Docker Compose文件,定义Redis Cluster集群的服务和配置。例如: ``` version: '3' services: redis-1: image: redis:latest command: redis-server /redis-conf/redis-1.conf ports: - 6381:6381 volumes: - ./conf/redis-1.conf:/redis-conf/redis-1.conf - ./data/redis-1:/data redis-2: image: redis:latest command: redis-server /redis-conf/redis-2.conf ports: - 6382:6382 volumes: - ./conf/redis-2.conf:/redis-conf/redis-2.conf - ./data/redis-2:/data redis-3: image: redis:latest command: redis-server /redis-conf/redis-3.conf ports: - 6383:6383 volumes: - ./conf/redis-3.conf:/redis-conf/redis-3.conf - ./data/redis-3:/data redis-4: image: redis:latest command: redis-server /redis-conf/redis-4.conf ports: - 6384:6384 volumes: - ./conf/redis-4.conf:/redis-conf/redis-4.conf - ./data/redis-4:/data redis-5: image: redis:latest command: redis-server /redis-conf/redis-5.conf ports: - 6385:6385 volumes: - ./conf/redis-5.conf:/redis-conf/redis-5.conf - ./data/redis-5:/data redis-6: image: redis:latest command: redis-server /redis-conf/redis-6.conf ports: - 6386:6386 volumes: - ./conf/redis-6.conf:/redis-conf/redis-6.conf - ./data/redis-6:/data networks: redis-cluster: driver: bridge ``` 2. 在同一目录下创建一个conf文件夹,用于存储每个Redis节点的配置文件。例如,创建一个redis-1.conf文件: ``` port 6381 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ``` 3. 启动Redis Cluster集群服务: ``` docker-compose up -d ``` 4. 将节点加入Redis Cluster集群。可以使用redis-cli命令行工具连接到每个节点,并使用CLUSTER MEET命令将节点加入集群。例如: ``` redis-cli -h 127.0.0.1 -p 6381 > CLUSTER MEET 127.0.0.1 6382 > CLUSTER MEET 127.0.0.1 6383 > CLUSTER MEET 127.0.0.1 6384 > CLUSTER MEET 127.0.0.1 6385 > CLUSTER MEET 127.0.0.1 6386 ``` 5. 创建一个Redis Cluster集群。可以使用redis-cli命令行工具连接到任何一个节点,并使用CLUSTER CREATE命令来创建集群。例如: ``` redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1 ``` 6. 现在,您已经成功地在Docker中集成了Redis Cluster集群。可以使用redis-cli命令行工具连接到任何一个节点,并开始使用集群
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值