美文网首页Redis
docker-compose搭建redis-cluster集群

docker-compose搭建redis-cluster集群

作者: MyPbj | 来源:发表于2021-11-10 15:07 被阅读0次

Redis高可用集群模式

clipboard .png

redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵·也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到上万个节点(官方推荐不超过1000个节点)。redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单

文件组织格式
redis-cluster
├── redis-config
│   ├──6379
│   │  └── redis.conf
│   ├──6380
│   │  └── redis.conf
│   ├──6381
│   │  └── redis.conf
│   ├──6382
│   │  └── redis.conf
│   ├──6383
│   │  └── redis.conf
│   ├──6384
│   │  └── redis.conf
└── └── docker-compose.yml

修改redis.conf配置文件

(1)daemonize no  #当redis.conf配置文件中daemonize参数设置的yes,这使得redis是以后台启动的方式运行的,由于docker容器在启动时,需要任务在前台运行,否则会启动后立即退出,因此导致redis容器启动后立即退出问题。所以redis.conf中daemonize必须是no
(2)port 6379#分别对应每个机器的端口号进行设置6379 6380 6381 6382 .......
(3)pidfile /var/run/redis.pid /#把pid进程号写入pidfile配置的文件
(4)dir "/data"
(5)cluster‐enabled yes#启动集群模式
(6)cluster‐config‐file nodes.conf/*集群节点信息文件*/
(7)cluster‐node‐timeout 10000
(8)#bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通 过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
(9)protected‐mode no #关闭保护模式
(10)appendonly yes #开启aof
#如果要设置密码需要增加如下配置: 
(11)requirepass 123321 #设置redis访问密码 
(12)masterauth 123321 #设置集群节点间访问密码,跟上面一致

编写docker-compose.yml文件搭建redis-cluster集群

version: '3'
services:
  # redis1配置
  redis1:
    image: redis:5.0
    container_name: redis-1
    environment: # 环境变量
      - PORT=6379 # 会使用config/nodes-${PORT}.conf这个配置文件
      - TZ=Asia/Shanghai
    ports:
      - 6379:6379
      - 16379:16379
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    privileged: true # 拥有容器内命令执行的权限
    volumes:
      - /data/redis/redis-cluster/redis-config/6379/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis/redis-data/6379:/data
    command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
  # redis2配置
  redis2:
    image: redis:5.0
    container_name: redis-2
    environment: # 环境变量
      - PORT=6380 # 会使用config/nodes-${PORT}.conf这个配置文件
      - TZ=Asia/Shanghai
    ports:
      - 6380:6380
      - 16380:16380
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    privileged: true # 拥有容器内命令执行的权限
    volumes:
      - /data/redis/redis-cluster/redis-config/6380/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis/redis-data/6380:/data
    command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
  # redis3配置
  redis3:
    image: redis:5.0
    container_name: redis-3
    environment: # 环境变量
      - PORT=6381 # 会使用config/nodes-${PORT}.conf这个配置文件
      - TZ=Asia/Shanghai
    ports:
      - 6381:6381
      - 16381:16381
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    volumes:
      - /data/redis/redis-cluster/redis-config/6381/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis/redis-data/6381:/data
    command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
  # redis4配置
  redis4:
    image: redis:5.0
    container_name: redis-4
    environment: # 环境变量
      - PORT=6382 # 会使用config/nodes-${PORT}.conf这个配置文件
      - TZ=Asia/Shanghai
    ports:
      - 6382:6382
      - 16382:16382
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    volumes:
      - /data/redis/redis-cluster/redis-config/6382/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis/redis-data/6382:/data
    command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
  # redis5配置
  redis5:
    image: redis:5.0
    container_name: redis-5
    environment: # 环境变量
      - PORT=6383 # 会使用config/nodes-${PORT}.conf这个配置文件
      - TZ=Asia/Shanghai
    ports:
      - 6383:6383
      - 16383:16383    
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    volumes:
      - /data/redis/redis-cluster/redis-config/6383/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis/redis-data/6383:/data
    command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
  # redis6配置
  redis6:
    image: redis:5.0
    container_name: redis-6
    environment: # 环境变量
      - PORT=6384 # 会使用config/nodes-${PORT}.conf这个配置文件
      - TZ=Asia/Shanghai
    ports:
      - 6384:6384
      - 16384:16384    
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    volumes:
      - /data/redis/redis-cluster/redis-config/6384/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis/redis-data/6384:/data
    command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
  • 生成启动Redis集群容器
docker-compose up -d
  • 进入其中一个节点中
docker exec -it 容器Id bash
#进入容器后运行:
redis-cli
#如果设置了验证密码: (本人上面redis.conf中设置的验证密码是123456)
123321
#创建集群   命令里的1代表为每个创建的主服务器节点创建一个从服务器节点
redis‐cli ‐a 123321 ‐‐cluster create ‐‐cluster‐replicas 1 192.168.1.201:6379 192.168.1.201:6380 192.168.1.201:6382 192.168.1.201:6383192.168.1.201:6384 192.168.1.201:6385
  • 验证集群
(1)redis‐cli ‐a 123321‐c ‐h 192.168.1.201 ‐p 63**
(2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
(3)进行数据操作验证

相关文章

网友评论

    本文标题:docker-compose搭建redis-cluster集群

    本文链接:https://www.haomeiwen.com/subject/inwwzltx.html