搭建的记录

  1. Redis的容器部署后,redis-server的默认安装目录为 /usr/local/bin。
  2. docker volumes 映射的文件与本地的文件共享,修改本地文件后,需要重启docker容器。
  3. redis集群内部需要网络互通,可以使用host网络,也可以使用容器名称+端口来代替ip+端口等。
  4. 容器启动时,使用redis配置文件启动,使用command,redis-server /usr/local/redis/conf/redis.conf(存储卷映射的地址文件)。
  5. 在redis的配置文件中配置外网可以访问,redis主从,都需要对外提高服务,客户端可以读取所有的主从服务器,客户端的写入,只能写入Master,由Master同步到所有的Slave。
  6. 使用redis.conf文件启动redis,由于docker-compose是单机部署多个Redis的实例,在服务器上搭建集群都是分为多个服务器,每个服务器上部署不同的实例,启动redis使用配置文件的方式,可以适用于直接在linux上搭建,改动比较小。

Redis配置文件

protected-mode设置为No,bind 0.0.0.0,外网才能访问,masterauth 密码,redis主从切换时密码认证


bind 0.0.0.0
protected-mode no
port 6380
timeout 30
daemonize no
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename "dump.rdb"
dir "/data"
appendonly yes
appendfsync everysec
requirepass 123456li
masterauth "123456li"

Redis哨兵配置文件

任何一个想成为 Leader 的哨兵,要满足两个条件:第一,拿到半数以上的赞成票;第二,拿到的票数同时还需要大于等于哨兵配置文件中的 quorum 值

sentinel monitor 名称 ip 端口 quorum 值,sentinel auth-pass redis Master的密码


port 26380
dir "/data"
sentinel myid 60535b6a4eaaec3ee4c555c659eb4f2934e4c5dc
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 172.26.0.4 6381 2
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster 123456li
sentinel config-epoch mymaster 8

docker-compose.yml

搭建redis一主二从三哨兵的docker-compose.yml文件


version: '3'
services:
master:
image: redis
container_name: redis-master
ports:
- 6380:6380
volumes:
- /root/redis/masterslave/master/data:/data
- /root/redis/masterslave/master/conf:/usr/local/redis/conf
command:
- /bin/bash
- -c
- |
cd /usr/local/bin
redis-server /usr/local/redis/conf/redis.conf
slave1:
image: redis
container_name: redis-slave-1
ports:
- 6381:6381
volumes:
- /root/redis/masterslave/slave1/data:/data
- /root/redis/masterslave/slave1/conf:/usr/local/redis/conf
command:
- /bin/bash
- -c
- |
cd /usr/local/bin
redis-server /usr/local/redis/conf/redis.conf
slave2:
image: redis
container_name: redis-slave-2
ports:
- 6382:6382
volumes:
- /root/redis/masterslave/slave2/data:/data
- /root/redis/masterslave/slave2/conf:/usr/local/redis/conf
command:
- /bin/bash
- -c
- |
cd /usr/local/bin
redis-server /usr/local/redis/conf/redis.conf
sentinel1:
image: redis
container_name: redis-sentinel-1
ports:
- "26380:26380"
volumes:
- /root/redis/masterslave/master/sentinelconf:/usr/local/redis/sentinelconf
command: redis-sentinel /usr/local/redis/sentinelconf/sentinel.conf
sentinel2:
image: redis
container_name: redis-sentinel-2
ports:
- "26381:26381"
volumes:
- /root/redis/masterslave/slave1/sentinelconf:/usr/local/redis/sentinelconf
command: redis-sentinel /usr/local/redis/sentinelconf/sentinel.conf
sentinel3:
image: redis
container_name: redis-sentinel-3
ports:
- "26382:26382"
volumes:
- /root/redis/masterslave/slave2/sentinelconf:/usr/local/redis/sentinelconf
command: redis-sentinel /usr/local/redis/sentinelconf/sentinel.conf

学习使用docker-compose搭建Redis哨兵集群的更多相关文章

  1. Docker Compose 搭建 Redis Cluster 集群环境

    在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...

  2. 单台服务器-利用docker搭建Redis哨兵集群模式

    前言:只有一台华为云服务器,所以打算创建三个容器来模拟三个服务器了. 一:拉取redis镜像 二:拉取redis.conf文件 放在自定义的目录下:wget -c http://download.re ...

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

    头脑风暴 出于学习目的,您可以很轻松地在docker环境下运行redis的单个实例,但是如果您需要在生产环境中运行它,那么必须将Redis部署为HA(High Avaliable)模式. Redis ...

  4. docker搭建redis主从集群和sentinel哨兵集群,springboot客户端连接

    花了两天搭建redis主从集群和sentinel哨兵集群,讲一下springboot客户端连接测试情况 redis主从集群 从网上查看说是有两种方式:一种是指定配置文件,一种是不指定配置文件 引用地址 ...

  5. Docker 搭建 Redis Cluster 集群环境

    使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...

  6. Redis哨兵集群搭建-Docker-Compose

    title: Redis哨兵集群搭建(Docker-Compose) date: 2022-09-27 17:00:56 tags: - Redis 代码地址:https://github.com/l ...

  7. redis哨兵集群搭建

    下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下 解压 命令:tar -zxvf redis-4.0.11.tar.gz 解压后如图所示 在/usr/lo ...

  8. 超详细,多图文介绍redis集群方式并搭建redis伪集群

    超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好.敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲.且看且珍 ...

  9. 一、全新安装搭建redis主从集群

    前言· 这里分为三篇文章来写我是如何重新搭建redis主从集群和哨兵集群的及原本服务器上有单redis如何通过升级脚本来实现redis集群.(redis结构:主-从(备)-从(备)) 至于为什么要搭建 ...

  10. 【精】搭建redis cluster集群,JedisCluster带密码访问【解决当中各种坑】!

    转: [精]搭建redis cluster集群,JedisCluster带密码访问[解决当中各种坑]! 2017年05月09日 00:13:18 冉椿林博客 阅读数:18208  版权声明:本文为博主 ...

随机推荐

  1. 2020年你不可不知的自动化框架,可替代Selenuim的测试框架Top10

    Selenium是一种开源自动测试工具.它可以跨不同的浏览器和平台在Web应用程序上执行功能,回归,负载测试.Slenium是最好的工具之一,但确实有一些缺点. 业界有一些强大的工具可以替代Selen ...

  2. Ajax分析与爬取实战

    Ajax 分析与爬取实战 准备工作 安装好 Python3 了解 Python HTTP 请求库 requests 的基本用法 了解 Ajax 基础知识和分析 Ajax 的基本方法 爬取目标 以一个示 ...

  3. C++类与对象详解

    什么是类和对象 类和对象的概念 类是对象的抽象,对象是对客观事物的抽象. 用通俗的话来说: 类是类别的意思,是数据类型. 对象是类别下的具体事物. 也就是说: 类是数据类型,对象是变量. 比如: 水果 ...

  4. 学习嵌入式为什么要学习uboot

    ref:http://www.elecfans.com/d/617674.html 为什么要有BootLoader 背景 很多人学习嵌入式一开始就搞Linux,这样子容易对底层缺少了解. 基础介绍 计 ...

  5. 【WPF】根据选项值显示不同的编辑控件(使用DataTemplateSelector)

    接了一个小杂毛项目,大概情形是这样的:ZWT先生开的店是卖拆片机的,Z先生不仅卖机器,还贴心地提供一项服务:可以根据顾客需要修改两个电机的转向和转速(机器厂家有给SDK的,但Z自己不会写程序).厂家有 ...

  6. 三屏异显案例分享,基于全国产RK3568J工业平台!

    在工业领域中,能否更灵活.更高效地在主屏幕进行主要任务,并在其他副屏幕上进行其他次要任务(例如查看参考资料.监控其他应用程序),一直都是许多工业领域客户面临的刚需,而"多屏异显"功 ...

  7. java --面试题大全

            J2EE面试题   文档版本号:V2.0                   2016年11月 目 录 1. Java基础部分 8 1.1. 一个".java"源文 ...

  8. javaApi,mapreduce,awk,scala四种方式实现词频统计

    awk方式实现词频统计: 方式一: vi wordcount.awk { for (i = 1; i <=NF;i++) //NF 表示的是浏览记录的域的个数 freq[$i]++ } END{ ...

  9. 手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程

    手把手教你解决spring boot导入swagger2版本冲突问题 本文仅为个人理解,欢迎大家批评指错 首先Spring Boot 3 和 Swagger 2 不兼容.在 Spring Boot 3 ...

  10. c语言之位段

    百度百科链接 示例: 1 struct CHAR 2 { 3 unsigned int ch : 8; //8位 4 unsigned int font : 6; //6位 5 unsigned in ...