前言

本篇文章介绍docker swarm搭建三主三从Redis哨兵(Sentinel)模式

环境

IP HOSTNAME label redis port sentinel port
172.16.0.106 cluster-0001 master 6379 26379
172.16.0.31 cluster-0002 slave1 6379 26379
172.16.0.146 cluster-0003 slave2 6379 26379

配置

master节点

创建文件夹
mkdir -pv /redis/{bin,conf,data,logs}
配置文件
cat /redis/bin/docker-compose.yml

version: '3.4'
services:master:image: rediscontainer_name: redis-masterrestart: alwayscommand: redis-server /etc/redis/redis.confvolumes:- /redis/data:/data- /redis/conf/redis-master.conf:/etc/redis/redis.conf:ro- /redis/logs:/var/log/redisports:- target: 6379published: 6379protocol: tcpmode: hostdeploy:placement:constraints: [node.labels.role==master]networks:- redis_clusterslave1:image: rediscontainer_name: redis-slave-1restart: alwayscommand: redis-server /etc/redis/redis.confvolumes:- /redis/data:/data- /redis/conf/redis-slave-1.conf:/etc/redis/redis.conf:ro- /redis/logs:/var/log/redisdepends_on:- masterports:- target: 6379published: 6379protocol: tcpmode: hostdeploy:placement:constraints: [node.labels.role==slave1]networks:- redis_clusterslave2:image: rediscontainer_name: redis-slave-2restart: alwayscommand: redis-server /etc/redis/redis.confvolumes:- /redis/data:/data- /redis/conf/redis-slave-2.conf:/etc/redis/redis.conf:ro- /redis/logs:/var/log/redisdepends_on:- masterports:- target: 6379published: 6379protocol: tcpmode: hostdeploy:placement:constraints: [node.labels.role==slave2]networks:- redis_clustersentinel1:image: rediscontainer_name: redis-sentinel-1command: redis-sentinel /usr/local/etc/redis/sentinel.confrestart: alwaysdepends_on:- master- slave1- slave2ports:- target: 26379published: 26379protocol: tcpmode: hostdeploy:placement:constraints: [node.labels.role==master]networks:- redis_clustervolumes:- /redis/conf/sentinel1.conf:/usr/local/etc/redis/sentinel.confsentinel2:image: rediscontainer_name: redis-sentinel-2command: redis-sentinel /usr/local/etc/redis/sentinel.confrestart: alwaysdepends_on:- master- slave1- slave2ports:- target: 26379published: 26379protocol: tcpmode: hostdeploy:placement:constraints: [node.labels.role==slave1]networks:- redis_cluster
#    network_mode: "host"volumes:- /redis/conf/sentinel2.conf:/usr/local/etc/redis/sentinel.confsentinel3:image: rediscontainer_name: redis-sentinel-3command: redis-sentinel /usr/local/etc/redis/sentinel.confrestart: alwaysdepends_on:- master- slave1- slave2#   network_mode: "host"ports:- target: 26379published: 26379protocol: tcpmode: hostdeploy:placement:constraints: [node.labels.role==slave2]networks:- redis_clustervolumes:- /redis/conf/sentinel3.conf:/usr/local/etc/redis/sentinel.confnetworks:redis_cluster:external:name: redis_cluster

cat /redis/bin/startup.sh

#!/bin/bashdocker stack deploy -c docker-compose.yml redis_cluster

cat /redis/bin/shutdown.sh

#!/bin/bashdocker stack rm redis_cluster

cat /redis/conf/redis-master.conf

port 6379
bind 0.0.0.0
logfile "redis-master.log"
dbfilename "dump-master.rdb"
appendfilename appendonly-master.aof
rdbcompression yes
appendonly yes
requirepass 1234
slave-announce-ip 172.16.0.106
slave-announce-port 6379
slave-read-only no

cat /redis/conf/sentinel1.conf

port 26379
dir "/tmp"
sentinel myid fa6bbe8804377177a83cc290651b4e50edc0e58fsentinel deny-scripts-reconfig yes
sentinel monitor mymaster 172.16.0.106 6379 2
#sentinel monitor mymaster (cluster-0001外网IP) 6379 2 # 如果想外网连接redis,此处使用外网ip# Generated by CONFIG REWRITE
user default on nopass ~* +@all
sentinel auth-pass mymaster 1234
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-replica mymaster 172.16.0.146 6379
sentinel known-replica mymaster 172.16.0.31 6379sentinel known-sentinel mymaster 172.18.0.3 26379 9aeea65e6c8741bc8645dc27f596a9ec6e8e42ae
sentinel known-sentinel mymaster 172.18.0.3 26379 528ab0bbb719fe50309fac21019e0eed567b2bf4
sentinel current-epoch 0

slave1节点

创建文件夹
mkdir -pv /redis/{conf,data,logs}
配置文件
cat /redis/conf/redis-slave-1.conf

port 6379
bind 0.0.0.0
logfile "redis-master.log"
dbfilename "dump-master.rdb"
appendfilename appendonly-master.aof
rdbcompression yes
appendonly yes
requirepass 1234
slaveof 172.16.0.106 6379
masterauth 1234
slave-announce-ip 172.16.0.31
slave-announce-port 6379
slave-read-only no

cat /redis/conf/sentinel2.conf

port 26379
dir "/tmp"
sentinel myid 528ab0bbb719fe50309fac21019e0eed567b2bf4
sentinel deny-scripts-reconfig yes
# Generated by CONFIG REWRITE
user default on nopass ~* +@all
sentinel monitor mymaster 172.16.0.106 6379 2
#sentinel monitor mymaster (cluster-0001外网IP) 6379 2 # 如果想外网连接redis,此处使用外网ipsentinel auth-pass mymaster 1234
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-replica mymaster 172.16.0.31 6379
sentinel known-replica mymaster 172.16.0.146 6379
sentinel known-sentinel mymaster 172.18.0.4 26379 fa6bbe8804377177a83cc290651b4e50edc0e58f
sentinel known-sentinel mymaster 172.18.0.3 26379 9aeea65e6c8741bc8645dc27f596a9ec6e8e42ae
sentinel known-sentinel mymaster 172.18.0.3 26379 528ab0bbb719fe50309fac21019e0eed567b2bf4
sentinel current-epoch 0

slave2节点

创建文件夹
mkdir -pv /redis/{conf,data,logs}
配置文件
cat /redis/conf/redis-slave-2.conf

port 6379
bind 0.0.0.0
logfile "redis-master.log"
dbfilename "dump-master.rdb"
appendfilename appendonly-master.aof
rdbcompression yes
appendonly yes
requirepass 1234
slaveof 172.16.0.106 6379
masterauth 1234
slave-announce-ip 172.16.0.146
slave-announce-port 6379
slave-read-only no

cat /redis/conf/sentinel3.conf

port 26379
dir "/tmp"
sentinel myid 9aeea65e6c8741bc8645dc27f596a9ec6e8e42aesentinel deny-scripts-reconfig yes
sentinel monitor mymaster 172.16.0.106 6379 2
#sentinel monitor mymaster (cluster-0001外网IP) 6379 2 # 如果想外网连接redis,此处使用外网ip# Generated by CONFIG REWRITE
user default on nopass ~* +@all
sentinel auth-pass mymaster 1234
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-replica mymaster 172.16.0.146 6379
sentinel known-replica mymaster 172.16.0.31 6379
sentinel known-sentinel mymaster 172.18.0.4 26379 fa6bbe8804377177a83cc290651b4e50edc0e58f
sentinel known-sentinel mymaster 172.18.0.3 26379 9aeea65e6c8741bc8645dc27f596a9ec6e8e42ae
sentinel known-sentinel mymaster 172.18.0.3 26379 528ab0bbb719fe50309fac21019e0eed567b2bf4
sentinel current-epoch 0

启动

master节点

赋予权限

sudo chmod 777 /redis/bin/*.sh

启动

/redis/bin/startup.sh

停止

/redis/bin/shutdown.sh

查看redis集群启动结果

docker stack ps redis_cluster --no-trunc


至此,redis哨兵模式搭建完成!
手打不易,有用请点赞!

docker swarm搭建Redis哨兵(Sentinel)模式相关推荐

  1. 解锁新技能《docker如何搭建Redis哨兵模式》

    在我们搭建Redis哨兵架构时我们先了解一些Redis及其相关的一些知识: 问题:Redis是什么? Redis是C语言开发的一个开源的,遵从BSD协议的高性能键值对(key-value)内存数据库, ...

  2. Docker中搭建redis分片集群,搭建redis哨兵结构,实现springboot中对redis分片集群、哨兵结构的访问,Redis缓存雪崩、缓存击穿处理(非关系型数据库技术课程 第十二周)

    文章目录 一.要求: 二.知识总结 缓存雪崩 解决方案 docker中redis分片集群搭建 配置好配置文件 redis-6380.conf redis-6381.conf redis-6382.co ...

  3. docker、docker-compose搭建redis哨兵,集群。

    目录 注意坑: Redisson整合哨兵模式的坑: 1. 安装docker和docker-compose 2. docker-compose搭建redis哨兵模式(一主二从二哨兵) 2.1启动redi ...

  4. Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式

    推荐观看: 十年架构师实战Redis-用Redis实现:秒杀/抢购/排行榜/推荐系统/抽奖系统!从Redis到分布式架构,通过Redis学AKF划分原则.CAP定理!​www.bilibili.com ...

  5. Docker Compose——搭建Redis集群

    环境配置 Docker 18.x Docker-Compose 3.7 Redis 6.2.5 主从(Master-Slave)模式 主从复制模式中包含一个主数据库实例(master)与一个或多个从数 ...

  6. Redis哨兵(sentinel)

    Redis哨兵(sentinel) [目标] 掌握解决主从复制故障的解决方案 掌握哨兵监控的搭建 掌握哨兵监控机制及故障的自动转移 [理论知识] 哨兵监控架构设计 主观和客观下线 Leader选举流程 ...

  7. linux下搭建redis哨兵

    1. 准备三台Linux服务器 准备以下三台服务器 192.168.227.97 192.168.227.98 192.168.227.99 然后分别在三台服务器上执行ping,看看它们之间能否相互平 ...

  8. 使用Docker Swarm搭建分布式爬虫集群

    转载自  使用Docker Swarm搭建分布式爬虫集群 在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况.此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运 ...

  9. 基于docker搭建redis哨兵模式

    github学习笔记 Redis 哨兵架构 1. redis 哨兵模式介绍 1) 哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点.2) ...

最新文章

  1. 远程办公让企业生产力大打折扣?那是你的打开方式错了
  2. 踩内存是什么意思啊_Win10任务管理器中的quot;共享GPU内存quot;是什么意思?
  3. C和C++数据结构算法
  4. c语言兔子繁殖问题分析和递归方程,经典的兔子生兔子问题(C#递归解法)
  5. surefire 拉起testng单元测试类的源码流程阅读(二)
  6. cryptojs支持rsa加密_新特性解读 | 从 wireshark 看 MySQL 8.0 加密连接
  7. gdb tui的使用
  8. 使用vue-cli3创建项目的时候出错,ERROR command failed: npm install --loglevel error --registry
  9. Altium Designer的元件库
  10. linux下面如何看抓包文件,linux抓包
  11. 《暗时间》读书笔记与读后感
  12. java打印两个小人_Swing多线程实现奔跑的小人动画代码实现 | 彬菌
  13. 学期学会的一些代码23333原创
  14. 程序员的日常工作是怎样的?
  15. U盘突然提示格式化怎么办?里面的数据怎么办?
  16. Django框架中No installed app with label问题
  17. WIN7wifi显示无法承载
  18. 猫眼电影MySQL数据库怎么写_Python3爬取猫眼电影榜并将数据存入MySql
  19. 上海计算机知识点,上海市考点
  20. 撸一撸Spring Framework-IoC-概述

热门文章

  1. ubuntu VScode 无法输入中文
  2. UI设计师如何自学?
  3. 计算机三级 上机,计算机三级上机试题总结
  4. 角蜂鸟AI视觉套件:(四)ROS下订阅并处理图像
  5. 脑洞大开:从零维到十维空间解释
  6. Netty面试经典问题
  7. android 收费吗,安卓系统会收费吗 安卓系统什么时候开始收费
  8. FPGA双模式交通灯的设计
  9. 【天光学术】会计学论文:“营改增”对航空运输业企业财务的影响研究(节选)
  10. openresty+lua在反向代理服务中的玩法 | WooYun知识库