首页 > 数据库 >Docker 搭建Redis集群(哨兵模式)

Docker 搭建Redis集群(哨兵模式)

时间:2022-11-28 20:12:28浏览次数:43  
标签:mymaster -- Redis redis 哨兵 16380 conf sentinel Docker

一、简介

Redis集群的哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 哨兵模式作用:

  • 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。

  • 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

除了监控Redis服务之外,哨兵之间也会互相监控。本文采用一主、双从、三哨兵方式

二、配置

部署方式为:docker compose:

第一步:创建redis docker-compose.yml配置文件

version: '3.4'
services:
  master:
    image: redis
    container_name: redis-master
    restart: always
    command: redis-server --port 16380 --requirepass 123456   # 16380 是定义的主库端口,默认:6379;  --requirepass 123456 是redis密码。
    ports:
      - 16380:16380   # 将容器的16380端口映射到宿主机的16380端口上,第一个16380为宿主机端口。

  slave1:
    image: redis
    container_name: redis-slave-1
    restart: always
    command: redis-server --slaveof 127.0.0.1 16380 --port 16381 --requirepass 123456 --masterauth 123456   # 127.0.0.1 16380 为主库ip和端口(此处我们使用宿主机的ip和主库映射出来的端口);16381 是定义的从库端口,默认:6379;  --requirepass 123456 是redis密码; --masterauth 123456 是主库的密码。
    ports:
      - 16381:16381


  slave2:
    image: redis
    container_name: redis-slave-2
    restart: always
    command: redis-server --slaveof 127.0.0.1 16380 --port 16382 --requirepass 123456 --masterauth 123456   # 127.0.0.1 16380 为主库ip和端口(此处我们使用宿主机的ip和主库映射出来的端口);16382 是定义的从库端口,默认:6379;  --requirepass 123456 是redis密码; --masterauth 123456 是主库的密码。
    ports:
      - 16382:16382

第二步:执行启动命令 在当前目录下执行启动命令

docker-compose -f docker-compose.yml up -d

第三步:创建sentinel docker-compose.yml  sentinel1.conf   sentinel2.conf  sentinel3.conf配置文件

docker-compose.yml

version: '3.4'
services:
  sentinel1:
    image: redis
    container_name: redis-sentinel-1
    command: redis-sentinel /home/ec2-user/dockerfile/sentinel/sentinel.conf # 自定义路径,可更改,但是需要和volumes中的路径相同。
    restart: always
    ports:
      - 26380:26380
    volumes:
      - ./sentinel1.conf:/home/ec2-user/dockerfile/sentinel/sentinel.conf # 自定义路径,可更改,但是需要和command中的路径相同。

  sentinel2:
    image: redis
    container_name: redis-sentinel-2
    command: redis-sentinel /home/ec2-user/dockerfile/sentinel/sentine2.conf
    restart: always
    ports:
      - 26381:26381
    volumes:
      - ./sentinel2.conf:/home/ec2-user/dockerfile/sentinel/sentine2.conf

  sentinel3:
    image: redis
    container_name: redis-sentinel-3
    command: redis-sentinel /home/ec2-user/dockerfile/sentinel/sentine3.conf
    restart: always
    ports:
      - 26382:26382
    volumes:
      - ./sentinel3.conf:/home/ec2-user/dockerfile/sentinel/sentine3.conf

sentinel1.conf

port 26380
daemonize no
pidfile /var/run/redis-sentinel.pid
dir /tmp
sentinel monitor mymaster 127.0.0.1 16380 2  # 主机 ip 与 端口;2表示当有两个sentinel认为主机失效时才会执行切换
sentinel auth-pass mymaster 123456 # 主机密码
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

sentinel2.conf

port 26381
daemonize no
pidfile /var/run/redis-sentinel.pid
dir /tmp
sentinel monitor mymaster 127.0.0.1 16380 2  # 主机 ip 与 端口;2表示当有两个sentinel认为主机失效时才会执行切换
sentinel auth-pass mymaster 123456 # 主机密码
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

sentinel3.conf

port 26382
daemonize no
pidfile /var/run/redis-sentinel.pid
dir /tmp
sentinel monitor mymaster 127.0.0.1 16380 2  # 主机 ip 与 端口;2表示当有两个sentinel认为主机失效时才会执行切换
sentinel auth-pass mymaster 123456 # 主机密码
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

第四步:执行启动命令 在当前目录下执行启动命令

docker-compose -f docker-compose.yml up -d

 

标签:mymaster,--,Redis,redis,哨兵,16380,conf,sentinel,Docker
From: https://www.cnblogs.com/mangoubiubiu/p/16933475.html

相关文章

  • 【2022-11-28】Docker部署搭建Yapi
    一、环境准备1.准备一台虚拟机\或者购买服务器2.虚拟机硬件要求2.1内存2-4G2.2CPU2核2G2.3硬盘至少20G3.系统镜像 centos7.9二、安装docker#......
  • Linux中Web环境memcached和redis安装(FOR PHP)
    目录​​目录​​​​前言​​​phpmemcached扩展安装​​​服务器端安装​​​​客户端安装​​​设置memcached开机自启脚本​​​创建脚本​​​​设置服务​​​​服务......
  • 轻松掌握Docker使用-进阶操作(二)
    前言在上一节《​​轻松掌握Docker使用-基础入门(一)​​》中我们了解到:Docker是什么?Docker的镜像管理&基础命令Docker容器的基本操作这一节,我们来学习:如何定制Docker镜......
  • Centos7.X下Docker环境安装并配置加速镜像
    1、安装yuminstall-ydocker2、开启Docker服务systemctlstartdocker.service3、查看安装版本dockerversion4、设置开机启动systemctlenabledocker.servi......
  • 【2022-11-28】Docker部署搭建Gitlab
    一、环境准备1.准备一台虚拟机\或者购买服务器2.虚拟机硬件要求2.1内存不得少于4G,否则启动会报502错误,可自行百度解决,将虚拟机的swap分区调整为2G大小即可2......
  • docker 搭建 Jenkins 容器 ,拉取git代码
    Docker搭建Jenkins容器,拉取git代码一、安装jenkins前提条件:宿主机安装docker1、拉取镜像dockerpulljenkins/jenkins2、查看镜像dockerimages【列表中有jenkin......
  • Spring中使用redis
    1.pom.xml<!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>......
  • docker Nginx 项目发布过程
    Docker镜像Nginx部署项目1、下载Dockeryuminstall-yyum-utilsdevice-mapper-persistent-datalvm22、安装Nginx2.1、使用Docker安装Nginx2.1.1查询可用的Ngin......
  • 图数据平台解决方案:Docker部署
    图数据平台解决方案:Docker部署​​图数据平台解决方案:Docker部署​​​​一、安装Docker​​​​二、使用Docker安装单节点​​​​三、使用Docker安装集群​​Here’sthe......
  • Docker 基础操作
    Docker基础操作目录Docker基础操作1docker操作镜像1.1docker基础操作镜像1.2从容器创建一个新的镜像1.3导出/入镜像1.4推送App镜像1.5本地仓库2docker操作容......