docker 配置redis集群

3主+3从,redis列表:

搭建集群至少需要3主3从6台服务器或进程

redisip+port
redis7910.XX.XX.14:6379
redis8010.XX.XX.14:6380
redis8110.XX.XX.14:6381
redis7910.XX.XX.15:6379
redis8010.XX.XX.15:6380
redis8110.XX.XX.15:6381

新建集群文件存放redis.conf

mkdir -p /home/docker/redis-cluster

在redis-cluster目录下创建redis79,redis80,redis81文件夹

mkdir /home/docker/redis-cluster/redis79 \    
 /home/docker/redis-cluster/redis80 \    
  /home/docker/redis-cluster/redis81 \

redis79,redis80,redis81 创建redis.conf 文件

# redis监听端口
port 6379 
# 开启集群
cluster-enabled yes
# 集群配置文件
cluster-config-file nodes.conf
# 集群节点多少时间未响应视为该节点丢失
cluster-node-timeout 5000
appendonly yes

以下为详细配置内容

bind:指定服务器监听的IP地址,默认为127.0.0.1(本地回环地址)。
port:指定服务器监听的端口,默认为6379。
cluster-enabled:指定是否开启集群模式,默认为no。
cluster-config-file:指定集群配置文件的路径,默认为nodes.conf。
cluster-node-timeout:指定集群节点之间通信的超时时间,默认为15000毫秒。
cluster-announce-ip:指定集群节点之间通信时使用的IP地址,默认为当前节点的IP地址。
cluster-announce-port:指定集群节点之间通信时使用的端口,默认为当前节点的端口。
cluster-announce-bus-port:指定集群节点之间通信时使用的总线端口,默认为0。
cluster-require-full-coverage:指定是否要求集群中的所有槽位都有节点,默认为yes。
cluster-migration-barrier:指定集群迁移时的最小延迟时间,默认为1毫秒。
cluster-slave-validity-factor:指定从节点失效的时间因子,默认为10。
cluster-allow-reads-when-down:指定当主节点不可用时是否允许从节点进行读操作,默认为yes。
cluster-announce-ttl:指定集群节点之间通信时的TTL(生存时间),默认为10。
cluster-node-timeout:指定集群节点之间通信的超时时间,默认为15000毫秒。
cluster-require-full-coverage:指定是否要求集群中的所有槽位都有节点,默认为yes。

docker-compose.yml 编写

version : '3.8'
services:
 redis79:
    container_name: redis79
    image: redis
    ports:
      - "10.XX.XX.14:6379:6379"
    network_mode: "host"
    volumes:
      - ./redis-cluster/redis79/redis.conf:/home/docker/redis-cluster/redis79/redis.conf
      - ./redis-cluster/redis79/data:/data
    command: redis-server /home/docker/redis-cluster/redis79/redis.conf
  redis80:
    container_name: redis80
    image: redis
    ports:
      - "XX.XX.14:6380:6380"
    network_mode: "host"
    volumes:
      - ./redis-cluster/redis80/redis.conf:/home/docker/redis-cluster/redis80/redis.conf
      - ./redis-cluster/redis80/data:/data
    command: redis-server /home/docker/redis-cluster/redis80/redis.conf
  redis81:
    container_name: redis81
    image: redis
    ports:
      - "10.xx.xx.15:6381:6381"
    network_mode: "host"
    volumes:
      - ./redis-cluster/redis81/redis.conf:/home/docker/redis-cluster/redis81/redis.conf
      - ./redis-cluster/redis81/data:/data
    command: redis-server /home/docker/redis-cluster/redis81/redis.conf


启动容器

docker-compose up -d  redis79 redis80 redis81
docker-compose ps  --查看容器是否启动

集群处理

进入容器

docker exec -it redis79 bash

进入容器输入开启集群命令

redis-cli --cluster create 10.xx.xx.14:6379 10.xx.xx.14:6380 10.xx.xx.14:6381 10.xx.xx.15:63![在这里插入图片描述](https://img-blog.csdnimg.cn/3192b52e54ce4650b77b6e5e75a8d507.png)
79 10.xx.xx.15:6380 10.xx.xx.15:6381 --cluster-replicas 1

注:每个Redis集群中的节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,比如6379,还有一个额外的端口(通过在这个端口号上加10000)作为数据端口,例如:redis的端口为6379,那么另外一个需要开通的端口是:6379 + 10000, 即需要开启 16379。16379端口用于集群总线,这是一个用二进制协议的点对点通信信道。这个集群总线(Cluster bus)用于节点的失败侦测、配置更新、故障转移授权,等等。

若无反应,或出现以下情况,则端口未开放
在这里插入图片描述
出现以下内容,则为成功
在这里插入图片描述

测试

连接节点

redis-cli -c -h 10.xx.xx.14 -p 6379

插入值

10.xx.xx.14:6379> set test "hello redis"
10.xx.xx.14:6380> get test 
"hello redis"
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值