首页 > 数据库 >macOS 通过 docker 安装 redis 集群

macOS 通过 docker 安装 redis 集群

时间:2023-11-13 10:00:53浏览次数:38  
标签:macOS -- redis 192.168 cluster announce docker

安装集群

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

安装步骤如下:

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

ifconfig

macOS 通过 docker 安装 redis 集群_redis

  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

测试命令:

macOS 通过 docker 安装 redis 集群_redis_02

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

macOS 通过 docker 安装 redis 集群_后端_03

网络相关

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和其他节点,进行通信。

macOS 通过 docker 安装 redis 集群_redis_04

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


标签:macOS,--,redis,192.168,cluster,announce,docker
From: https://blog.51cto.com/u_11720620/8337421

相关文章

  • 基于C# Socket实现的简单的Redis客户端
    前言    Redis是一款强大的高性能键值存储数据库,也是目前NOSQL中最流行比较流行的一款数据库,它在广泛的应用场景中扮演着至关重要的角色,包括但不限于缓存、消息队列、会话存储等。在本文中,我们将介绍如何基于C#Socket来实现一个简单的Redis客户端类RedisClient,来演示构建请......
  • 使用Dockerfile构建镜像
    一、前言场景需求:例如运行一个nginx容器,容器起来后,通常不会运行在默认配置下,那因此,我们通常需要去改一改它的配置文件或者定义模块化配置文件,然后启动服务。那为什么,nginx的默认配置不符合我们的需要呢?很显然,不同的生产场景所需要用到的配置参数各个相同,因此,对方只能用一个默认......
  • Redisson 介绍及使用
    目录一、介绍二、作用三、使用示例一、介绍Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-MemoryDataGrid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet,Set,Multimap,SortedSet,Map,List,Queue,BlockingQueue,D......
  • Redis持久化⽅式有哪些?有什么区别?
    Redis持久化⽅案分为RDB和AOF两种。RDBRDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。RDB⽂件是⼀个压缩的⼆进制⽂件,通过它可以还原某个时刻数据库的状态。由于RDB⽂件是保存在硬盘上的,所以即使Redis崩溃或者退出,只要RDB⽂件存在,......
  • 常见面试题-Redis底层的SDS、ZipList、ListPack
    Redis的SDS了解吗?答:Redis创建了SDS(simpledynamicstring)的抽象类型作为String的默认实现SDS的结构如下:structsdshdr{//字节数组,用于保存字符串charbuf[];//buf[]中已使用字节数量,称为SDS的长度intlen;//buf[]中尚未使用的字节数量intfree;}......
  • Redis哨兵
    1.描述  哨兵(sentinel)是redis主从结构中的一个重要组件,其也是一个redis服务,不过是一个特殊的redis服务,只用来监听redis示例,不负责数据的读写。2.作用监控:会不断监控主节点和从节点是否正常运行自动故障转移:当主节点挂掉后,会进行自动转移,将其中一个从节点变为主节点,主节点变......
  • redis 类型Set增删查改效率
    Redis的Set数据类型是一种无序集合,它可以包含多个不重复的元素。以下是关于RedisSet类型的增删查改操作的效率说明:1.增加元素:添加单个元素(SADD命令)的时间复杂度是O(1),可以在常数时间内完成。批量添加多个元素(SADD命令)的时间复杂度也是O(1),因为它们一次性完成。2.删除元素:删除......
  • redis 类型Set增删查改效率
    Redis的Set数据类型是一种无序集合,它可以包含多个不重复的元素。以下是关于RedisSet类型的增删查改操作的效率说明:1.增加元素:添加单个元素(SADD命令)的时间复杂度是O(1),可以在常数时间内完成。批量添加多个元素(SADD命令)的时间复杂度也是O(1),因为它们一次性完成。2.删除元素:删除......
  • x86机器上运行arm64 docker
    DockerHub上可以找到各种非x86_64平台的镜像,但是在x86上直接运行会报错:panic:standard_init_linux.go:175:execuserprocesscaused“execformaterror”[recovered]在x86_64平台上缺少运行arm32v7的Python解释器所需要的“环境依赖”,值得庆幸的是在Linux上我......
  • docker 部署 rabbitmq集群
    rabbitmq集群:pull:dockerpullrabbitmq普通模式(默认):what:集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点。对于消费者来说,若消息进入A节点的Queue中,当从B节点拉取时,RabbitMQ会将消......