docker搭建一主两从、哨兵模式redis集群

redis集群部署

服务应用

本次搭建redis服务给联通服务

redis集群架构

redis采用docker搭建的一主两从、哨兵模式。架构如下图所示:
docker搭建一主两从、哨兵模式redis集群_第1张图片

master ip:192.168.132.2 port: 6379
slave1 ip:192.168.132.3 port: 6379
slave2 ip:192.168.132.4 port: 6379
sentinel1 ip:192.168.132.2 port: 26379
sentinel2 ip:192.168.132.3 port: 26379
sentinel3 ip:192.168.132.4 port: 26379

哨兵模式介绍:

  • 监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正常。
  • 提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover):当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器;
  • 配置提供者: Sentinel充当客户端服务发现的授权来源:客户端连接到Sentinels,以询问负责给定服务的当前Redis主服务器的地址。 如果发生故障转移,Sentinels将报告新地址。(这也是客户端接入入口)

搭建步骤

本次服务采用docker-compose启动,故先定义相关yml文件。
部署文件都在三台虚拟机的/home/work/online/redis下

  • 定义redis.conf

    # redis.conf可以通过命令直接下载下来
    wget -c http://download.redis.io/redis-stable/redis.conf
    # 注意需要修改配置中bind的配置为:
    bind 0.0.0.0  # 否则可能会导致master宕机时,sentinel无法进行选举。
    logfile /var/log/redis.log. # 定义日志文件位置
    
  • 定义三台主机上的sentinel.conf配置文件

    # sentinel端口
    port 26379 
    # 日志文件
    logfile "sentinel_26379.log" 
    # 备份或日志文件存放位置
    dir "/data"
    # 定义master 不可达持续多少毫秒后开始定义为节点下线,默认30s
    sentinel down-after-milliseconds mymaster 30000 
    # 在故障转移期间同时与新的master同步的slave数量
    sentinel parallel-syncs mymaster 1 
    # 定义进行故障转移的超时时间,默认3分钟
    sentinel failover-timeout mymaster 180000 
    # 定义监控的master节点
    sentinel monitor mymaster 10.16.3.2 6379 2 
    
  • 定义三台主机的docker-compose.yml启动文件,以下配置为master(192.168.132.2)下的配置,另外两台除了container_name需要修改,其他配置不变

      version: '3.7'
      services:
        master:
          image: redis
          container_name: redis-master
          restart: always
          command: redis-server
          ports:
            - "6379:6379"
          volumes:
            - "/tmp/data:/data"
            - "/tmp/log:/var/log"
            - "/home/work/online/redis/redis.conf:/usr/local/etc/redis/redis.conf"
        sentinel1:
          image: redis
          container_name: redis-sentinel-1
          ports:
            - "26379:26379"
          command: redis-sentinel /usr/local/etc/redis/sentinel.conf
          volumes:
            - "./sentinel1.conf:/usr/local/etc/redis/sentinel.conf"
            - "/home/work/online/redis/redis.conf:/usr/local/etc/redis/redis.conf"
    

配置完成后,分别在三台主机的/home/work/online/redis下直接执行docker-compose up -d启动即可。

你可能感兴趣的:(docker,redis,运维)