Windows11使用docker搭建redis集群

主要是参考这篇文章进行搭建的。

首先通过docker拉取最新版的redis镜像。

docker search redis

使用以下命令拉取

docker pull redis

每个目录下的redis.conf都要修改

cluster-announce-ip 192.168.6.97 这里要设置成你宿主机的IP,因为当你在宿主机通过某一个端口(6380)连接集群查询数据时数据可能并不在当前Redis实例上所以集群会返回一个地址加端口并去重新查询,但是集群部署在docker中返回的是docker内网的地址,在本机是无法访问docker内网地址的,所以需要Redis返回本机的IP地址再通过Docker暴露的端口进行重定向查询。

protected-mode no
#每个redis的端口号都要修改
port 6382

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize no

supervised no


loglevel verbose


logfile redis.log

databases 16

always-show-logo yes

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

replica-priority 100


lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

appendonly yes


appendfilename "appendonly.aof"


appendfsync everysec


no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

bind 0.0.0.0

lua-time-limit 5000


cluster-enabled yes

#改成本机IP地址
cluster-announce-ip XXX.XXX.XXX.XXX


cluster-config-file nodes.conf

cluster-node-timeout 5000

cluster-replica-validity-factor 0


slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512


zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100

activerehashing yes


client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60


hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes
#这个是每个redis的密码配置
masterauth 123456
requirepass 123456

 以下是docker-compose.yaml文件的配置

version: "3"
services:
  redis-master1:
    image: redis # 这里换成你使用的镜像名称
    container_name: redis-master1
    ports: # 映射端口,对外提供服务
      - 6380:6380 # redis的服务端口
      - 16380:16380 # redis集群监控端口
      - 2222:22 # SSH端口
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    privileged: true # 拥有容器内命令执行的权限
    networks: # 指定网关
      redis:
        ipv4_address: 172.19.0.11
    volumes:
      - ./redis-master1/conf/redis.conf:/etc/redis/redis.conf
      #- ./data/redis-master1/data:/data
      #- ./logs/redis-master1/logs:/logs
    #docker执行的启动命令
    command: redis-server /etc/redis/redis.conf

  redis-master2:
    image: redis
    container_name: redis-master2
    ports:
      - 6381:6381
      - 16381:16381
    stdin_open: true
    tty: true
    privileged: true
    networks:
      redis:
        ipv4_address: 172.19.0.12
    volumes:
      - ./redis-master2/conf/redis.conf:/etc/redis/redis.conf
      #- ./data/redis-master2/data:/data
      #- ./logs/redis-master2/logs:/logs
    #docker执行的启动命令
    command: redis-server /etc/redis/redis.conf

  redis-master3:
    image: redis
    container_name: redis-master3
    ports:
      - 6382:6382
      - 16382:16382
    stdin_open: true
    tty: true
    privileged: true
    networks:
      redis:
        ipv4_address: 172.19.0.13    
    volumes:
      - ./redis-master3/conf/redis.conf:/etc/redis/redis.conf
      #- ./data/redis-master3/data:/data
      #- ./logs/redis-master3/logs:/logs
    #docker执行的启动命令
    command: redis-server /etc/redis/redis.conf

  redis-slave1:
    image: redis
    container_name: redis-slave1
    ports:
      - 6383:6383
      - 16383:16383
    stdin_open: true
    tty: true
    privileged: true
    networks:
      redis:
        ipv4_address: 172.19.0.14    
    volumes:
      - ./redis-slave1/conf/redis.conf:/etc/redis/redis.conf
      #- ./data/redis-slave1/data:/data
      #- ./logs/redis-slave1/logs:/logs
    #docker执行的启动命令
    command: redis-server /etc/redis/redis.conf

  redis-slave2:
    image: redis
    container_name: redis-slave2
    ports:
      - 6384:6384
      - 16384:16384
    stdin_open: true
    tty: true
    privileged: true
    networks:
      redis:
        ipv4_address: 172.19.0.15    
    volumes:
      - ./redis-slave2/conf/redis.conf:/etc/redis/redis.conf
      #- ./data/redis-slave2/data:/data
      #- ./logs/redis-slave2/logs:/logs
    #docker执行的启动命令
    command: redis-server /etc/redis/redis.conf

  redis-slave3:
    image: redis
    container_name: redis-slave3
    ports:
      - 6385:6385
      - 16385:16385
    stdin_open: true
    tty: true
    privileged: true
    networks:
      redis:
        ipv4_address: 172.19.0.16    
    volumes:
      - ./redis-slave3/conf/redis.conf:/etc/redis/redis.conf
      #- ./data/redis-slave3/data:/data
      #- ./logs/redis-slave3/logs:/logs
    #docker执行的启动命令
    command: redis-server /etc/redis/redis.conf

# 自动创建网络,并手动指定IP网段
networks:
  redis:
    ipam:
      config:
        - subnet: 172.19.0.0/16

虚拟网段的设置不用管,这只是docker内部容器之间通信的IP地址,从宿主机访问各个redis还是通过  127.0.0.1:端口号  访问。

在存放docker-compose.yaml文件的目录下执行以下命令启动容器

docker-compose up

然后再进入redis-master1容器内执行

redis-cli -a 123456 --cluster create 172.19.0.11:6380 172.19.0.12:6381 172.19.0.13:6382 172.19.0.14:6383 172.19.0.15:6384 172.19.0.16:6385 --cluster-replicas 1 --cluster-yes

redis集群就搭建好了。

接下来使用Another Redis Desktop Manager客户端测试redis集群的连接。

连接成功

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
通过docker搭建Redis集群的步骤如下: 1. 创建容器使用docker命令创建多个Redis容器,每个容器代表一个节点。例如,可以使用以下命令创建一个名为redis-node-1的节点容器: ``` docker run --name redis-node-1 -p 6381:6379 -d redis ``` 2. 进入容器使用docker exec命令进入容器内部,例如,可以使用以下命令进入redis-node-1容器: ``` docker exec -it redis-node-1 /bin/bash ``` 3. 构建集群关系:在容器内部,使用Redis命令行工具,将新增的节点作为master节点加入原集群。例如,可以使用以下命令将节点redis-node-7加入集群: ``` redis-cli -p 6381 cluster add-node <new_node_ip:port> <existing_node_ip:port> ``` 4. 查看集群状态:使用Redis命令行工具查看集群的状态。例如,可以使用以下命令在节点redis-node-1上查看集群信息: ``` redis-cli -p 6381 cluster info ``` 通过以上步骤,你可以使用docker搭建Redis集群,并查看集群的状态。请根据实际情况进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [阿昌教你通过docker搭建Redis集群](https://blog.csdn.net/qq_43284469/article/details/122458602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值