docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker-compose安装redis过程-

docker-compose安装redis过程-主从+哨兵(3台虚拟机一主两从)

作者:佛说"獨"

文章介绍了使用Docker部署Redis主从架构及哨兵监控的全过程,包括部署架构、配置文件准备、Docker-Compose文件编写、部署步骤以及测试主从复制和故障转移功能

一、部署架构

主从结构

哨兵结构

ipredis节点名称sentinel节点名称
192.168.56.100redis-masterredis-sentinel
192.168.56.101redis-slave1redis-sentinel
192.168.56.103redis-slave2redis-sentinel

二、配置文件准备

创建conf目录保存redis.conf和sentinel.conf文件

创建data目录保存appendonly.aof、dump.rdbredis.log文件

1.主节点Redis配置(redis-master.conf)

# 任何都可以连接redis
bind 0.0.0.0
# 配置master密码
requirepass 123456
# 宕机后成为从要连接master的密码
masterauth 123456
# 开启持久化
appendonly yes

2.从节点Redis配置(redis-slave.conf)

# 指向主节点IP和端口
replicaof 192.168.56.100 6379
# 任何都可以连接redis
bind 0.0.0.0
# 从节点密码
requirepass 123456
# 主节点密码
masterauth 123456
# 开启持久化
appendonly yes
# 从节点具备写入权限
#slave-read-only no

‌3.哨兵配置(sentinel.conf)

port 26379
# 监控主节点,2为最小投票数
sentinel monitor mymaster 192.168.56.100 6379 2
# 主节点密码
sentinel auth-pass mymaster 123456
# 6秒无响应判定主节点下线              
sentinel down-after-milliseconds mymaster 6000
# 控制同时进行同步的从节点数量为 1  
sentinel parallel-syncs mymaster 1
# 故障转移超时时间              
sentinel failover-timeout mymaster 6000   

‌三、Docker-Compose文件编写

在三台服务器分别配置docker-compose

#version: '3'
services:   
  redis:
    image: redis:6.2.14 # redis镜像版本
    container_name: redis-master # 容器名称
    ports:
     # 指定宿主机端口与容器端口映射关系
      - 6379:6379
    volumes:
      # 映射配置文件目录
      - ./redis/conf/redis-master.conf:/usr/local/etc/redis/redis.conf
      # 映射数据目录
      - ./redis/data:/usr/local/etc/redis/data
    restart: always # 容器开机自启
    privileged: true # 获取宿主机root权限
    command: redis-server /usr/local/etc/redis/redis.conf # 指定配置文件启动redis-server进程
    networks:
      - my-network
  sentinel:
    image: redis:6.2.14
    container_name: redis-sentinel
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - "26379:26379"
    volumes:
      - ./redis/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf
    restart: always
    networks:
      - my-network
networks:
  my-network:
    #external: true
    name: my-network
    driver: bridge

*从节点需将redis-master.conf替换为redis-slave.conf,并调整container_name*sentinel内容不变

四、部署步骤

1.启动服务

docker-compose up -d  # 每台服务器执行

2.验证部署

docker exec -it redis-master redis-cli -a 123456 info replication

查看roleconnected_slaves字段

docker exec -it redis-sentinel redis-cli -p 26379 sentinel master mymaster

或者

进入哨兵容器:

docker exec -it redis-sentinel /bin/bash

连接哨兵:

redis-cli -p 26379
info

五、测试主从和故障转移

进入redis容器:

docker exec -it redis-master /bin/bash
redis-cli
auth 123456

1.测试主从复制

 

主从复制正常!!!

2. 测试故障转移

我们把master(192.168.56.100)停掉,查看一个哨兵的日志:

docker stop redis-master
docker logs -f redis-sentinel

故障转移成功!!!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文