Redis(八):哨兵(Sentinel)部署

    xiaoxiao2023-11-15  158

    本文基于 Docker Engine 和 Docker Compose 环境,单机部署 Redis Sentinel

    1、部署环境

    Docker version 18.09.6, build 481bc77156 Linux 5.1.3-1.el7.elrepo.x86_64 docker-compose version 1.24.0, build 0aa59064

    2、部署架构

    本文部署架构为一主多从三哨兵,因服务器条件有限,该架构在一台服务器中进行部署,仅供参考

    3、部署步骤

    3.1、安装Docker

    Docker 安装参见:https://docs.docker.com/install/linux/docker-ce/centos/

    3.2、安装Docker Compose

    1、执行以下命令安装当前稳定版本的Docker Compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    2、赋予可执行权限

    sudo chmod +x /usr/local/bin/docker-compose

    如遇其他问题可前往查看官方文档:https://docs.docker.com/compose/install/

    3.3、创建Docker Compose Redis 模板

    docker-redis-compose.txt

    version: '2' services: master: image: redis container_name: redis-master command: redis-server --requirepass 123456 ports: - "6379:6379" networks: - sentinel-master slave1: image: redis container_name: redis-slave-1 ports: - "6380:6379" command: redis-server --slaveof redis-master 6379 --requirepass 123456 --masterauth 123456 depends_on: - master networks: - sentinel-master slave2: image: redis container_name: redis-slave-2 ports: - "6381:6379" command: redis-server --slaveof redis-master 6379 --requirepass 123456 --masterauth 123456 depends_on: - master networks: - sentinel-master networks: sentinel-master:

    3.4、创建Docker Compose Redis Sentinel 模板

    docker-redis-sentinel-compose.txt

    version: '2' services: sentinel_01: image: redis container_name: redis-sentinel-01 command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - "/data/redis/conf:/usr/local/etc/redis" sentinel_02: image: redis container_name: redis-sentinel-02 ports: - "26380:26379" command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - "/data/redis/conf:/usr/local/etc/redis" sentinel_03: image: redis container_name: redis-sentinel-03 ports: - "26381:26379" command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - /data/redis/conf:/usr/local/etc/redis networks: default: external: name: redis_sentinel_master

    哨兵的配置文件如下:

    port 26379 dir "/tmp" sentinel monitor redis-master 【服务器IP】 6379 2 sentinel failover-timeout redis-master 10000 sentinel auth-pass redis-master 123456 port:sentinel节点的端口 dir:监控日志 sentinel monitor redis-master:当前监控主节点 2:代表判断主节点失败至少需要2个Sentinel节点同意 redis-master:是主节点的别名 sentinel failover-timeout:故障转移超时时间为10000毫秒

    4、启动集群

    4.1、启动Redis主从复制集群

    docker-compose -f docker-redis-compose.txt up -d

    4.2、启动Redis Sentinel 集群

    docker-compose -f docker-redis-sentinel-compose.txt up -d

    5、查看集群运行情况

    [root@xry compose]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 30da5d04a142 redis "docker-entrypoint.s…" 5 seconds ago Up 3 seconds 6379/tcp redis-sentinel-01 5d8971c6585e redis "docker-entrypoint.s…" 5 seconds ago Up 3 seconds 6379/tcp, 0.0.0.0:26381->26379/tcp redis-sentinel-03 475063baae05 redis "docker-entrypoint.s…" 5 seconds ago Up 3 seconds 6379/tcp, 0.0.0.0:26380->26379/tcp redis-sentinel-02 48f7e2d54787 redis "docker-entrypoint.s…" 17 seconds ago Up 16 seconds 0.0.0.0:6380->6379/tcp redis-slave-1 2c570706b6d8 redis "docker-entrypoint.s…" 17 seconds ago Up 16 seconds 0.0.0.0:6381->6379/tcp redis-slave-2 96732d1ae66c redis "docker-entrypoint.s…" 17 seconds ago Up 16 seconds 0.0.0.0:6379->6379/tcp redis-master
    最新回复(0)