角色 实例IP 实例端口 宿主机IP 宿主机端口
master 172.19.0.2 6382 192.168.1.200 6382
slave01 172.19.0.3 6383 192.168.1.200 6383
slave02 172.19.0.4 6384 192.168.1.200 6384

1. 创建文件夹

这里我习惯在home文件夹下创建文件夹

#创建文件夹,方便之后生成配置文件
cd /home mkdir redis

2. 编写自动生成配置文件脚本

首先编写配置文件 redis-cluster.tmpl

#进入redis文件夹内
cd redis #创建配置文件
vi redis-cluster.tmpl

内容如下

# redis端口
port ${PORT}
# 关闭保护模式
protected-mode no
# 配置远程访问
bind 0.0.0.0
# 开启集群(配置主从节点需要关闭集群模式)
cluster-enabled no
# 集群节点配置
cluster-config-file nodes.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP
cluster-announce-ip 172.19.0.1
# 集群节点端口 6379 - 6384
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
#配置主节点IP
slaveof 172.19.0.2 6382
# 开启 appendonly 备份模式
appendonly yes
# 每秒钟备份
appendfsync everysec
# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no
# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100
# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 64mb
# 配置数据库个数
databases 16

编写哨兵模式配置文件 sentinel.conf (在redis的bin 目录下有一个redis.sentinel文件,这个文件用于启动哨兵的配置文件,哨兵的配置文件需要我们自己去创建)

#创建哨兵模式配置文件
vi sentinel.conf

内容如下

# 添加守护进程模式
daemonize yes # 添加指明日志文件名
logfile "/usr/local/redis/sentinel_log.log" # 修改启动端口
port 26379 # 添加关闭保护模式
protected-mode no # 修改sentinel monitor为master的ip端口,最后的数字2表示: 有两个哨兵认证master挂掉,才会推选新的master
sentinel monitor mymaster 172.19.0.2 6382 2 sentinel auth-pass mymaster GaosiDev sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 10000 sentinel deny-scripts-reconfig yes

最后编写自动生成脚本 redis-cluster-config.sh

#创建自动生成脚本
vi redis-cluster-config.sh

内容如下

#! /bin/bash
# 6382 6384是准备创建的三个redis的端口区间
for port in `seq 6382 6384`; do \
mkdir -p ./redis-cluster/${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./redis-cluster/${port}/conf/redis.conf \
&& cp ./sentinel.conf ./redis-cluster/${port}/conf/sentinel.conf
&& mkdir -p ./redis-cluster/${port}/data; \
done

3. 运行脚本自动生成配置文件

#运行脚本
bash redis-cluster-config.sh

之后就会生成redis-cluster文件夹

4. 创建docker容器

首先创建网段

#创建网段
docker network create --driver bridge --subnet 172.19.0.1/24 redis_net

开始创建redis容器

docker run -d --network redis_net --ip 172.19.0.2 -p 6382:6382 -v /home/redis/redis-cluster/6382/conf/:/usr/local/etc/redis/ --name=redis1 redis:6.0.8 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -d --network redis_net --ip 172.19.0.3 -p 6383:6383 -v /home/redis/redis-cluster/6383/conf/:/usr/local/etc/redis/ --name=redis2 redis:6.0.8 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -d --network redis_net --ip 172.19.0.4 -p 6384:6384 -v /home/redis/redis-cluster/6384/conf/:/usr/local/etc/redis/ --name=redis3 redis:6.0.8 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

5. 启动哨兵模式

#进入redis2容器
docker exec -it redis2 bash #启动哨兵模式
redis-server /usr/local/etc/redis/sentinel.conf --sentinel
#进入redis3容器
docker exec -it redis3 bash #启动哨兵模式
redis-server /usr/local/etc/redis/sentinel.conf --sentinel

至此搭建(一主多从(哨兵模式))redis完成。

测试时,可进入容器查看当前redis的master是否变化,

#登录redis
redis-cli -h 172.19.0.3 -p 6383 -c #查看主从关系
info replication

文章整合至:https://blog.csdn.net/qq_38900565/article/details/108335532https://blog.csdn.net/macro_g/article/details/82593996?utm_medium=distribute.wap_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.wap_blog_relevant_pic&dist_request_id=1332024.8086.16189865735716115&depth_1-utm_source=distribute.wap_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.wap_blog_relevant_pichttps://www.cnblogs.com/daleyzou/p/docker-redis-sentinel.html

Docker:docker搭建redis一主多从集群(配置哨兵模式)的更多相关文章

  1. 搭建Redis三主三从集群

    Redis三主三从集群规划 10.0.128.19   使用端口 7000  7001 10.0.128.22   使用端口 7002  7003 10.0.128.23   使用端口 7004  7 ...

  2. 在三台服务器,搭建redis三主三从集群

    一.资源准备 1.准备三台服务器H1.H2.H3 172.26.237.83 H1 172.26.237.84 H2 172.26.237.85 H3 二.配置服务器 1.在H1服务器设置SSH免密登 ...

  3. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  4. Redis 3主-3从集群的搭建(CentOS 7)

    注意ip地址为: 虚拟机ip设置 TYPE="Ethernet"BOOTPROTO="static"NAME="enp0s3"DEVICE= ...

  5. redis集群sentinel哨兵模式的搭建与实际应用

    参考资料:https://blog.csdn.net/men_wen/article/details/72724406 之前环境使用的keepalived+redis vip集群模式,现在我们服务切换 ...

  6. redis主从同步故障切换及集群配置

    一.redis是一中高性能的缓存数据库, 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下 ...

  7. redis集群之哨兵模式【原】

    redis集群之哨兵(sentinel)模式 哨兵模式理想状态 需要>=3个redis服务,>=3个redis哨兵,每个redis服务搭配一个哨兵. 本例以3个redis服务为例: 一开始 ...

  8. Docker Compose搭建Redis一主二从三哨兵高可用集群

    一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...

  9. k8s 上部署 Redis 三主三从 集群

    目录 介绍 为什么要使用Redis? 什么是Redis群集? 在Kubernetes中部署Redis集群 从 GitHub 上下载: 创建pv 创建statefulset 创建service 初始化 ...

随机推荐

  1. 3.1 cat:合并文件或查看文件内容

    cat 命令 可以理解为英文单词concatenate的缩写,其功能是连接多个文件并且打印到屏幕输出,或者重定向到指定的文件中.此命令常用来显示单个文件内容,或者将几个文件内容连接起来一起显示,还可以 ...

  2. 大师画PCB板子

    1.低频电路对于模拟地和数字地要分开布线,不能混用 2.如果有多个A/D转换电路,几个ADC尽量放在一起,只在尽量靠近该器件处单点接地,AGND和DGND都要接到模拟地,电源端子都要接到模拟电源端子: ...

  3. CSS(2)盒子模型、定位浮动

    盒子模型 盒子模型:一个盒子中主要的属性就5个.width与height.padding.border.margin.盒子模型标准有两种为标准盒模型和IE盒模型.学习上以标准盒子模型为主 width和 ...

  4. jenkins配置基于角色的项目权限管理设置步骤

    jenkins配置基于角色的项目权限管理设置步骤 本文链接:https://blog.csdn.net/russ44/article/details/52276222 由于jenkins默认的权限管理 ...

  5. SQL Server 将两行或者多行拼接成一行数据

    一个朋友,碰到一个问题. 就是查询出来的结果集,需要每隔三行.就将这三行数据以此拼接为一行显示.起初我想着用ROW_NUMBER加CASE WHEN去做,发现结果并非我预期那样. 结果如下: 由于别人 ...

  6. CUDA C++编程接口:编译

    CUDA C++编程接口:编译 一.概述 CUDA C++为熟悉C++编程语言的用户提供了一个简单的路径,以方便地编写程序以执行该设备. 它由一组最小的扩展到C++语言和运行库. 在编程模型中引入了核 ...

  7. 转置卷积Transposed Convolution

    转置卷积Transposed Convolution 我们为卷积神经网络引入的层,包括卷积层和池层,通常会减小输入的宽度和高度,或者保持不变.然而,语义分割和生成对抗网络等应用程序需要预测每个像素的值 ...

  8. [NOIP1998 提高组] 拼数

    题目描述 设有 n 个正整数​ a1-an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数. 输入格式 第一行有一个整数,表示数字个数 n. 第二行有 n 个整数,表示给出的 n 个整数 a_ ...

  9. Charles下载及安装破解-自己编辑

    Charles下载地址 地址:https://www.charlesproxy.com/latest-release/download.do 2. Charles破解 破解地址:https://www ...

  10. python_request的安装及模拟json的post请求及带参数的get请求

    一.Requests模块安装 安装方式一:执行 pip install -U requests 联网安装requests 安装方式二:进入https://pypi.org/project/reques ...