Docker:docker搭建redis一主多从集群(配置哨兵模式)
角色 | 实例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/108335532,https://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_pic,https://www.cnblogs.com/daleyzou/p/docker-redis-sentinel.html
Docker:docker搭建redis一主多从集群(配置哨兵模式)的更多相关文章
- 搭建Redis三主三从集群
Redis三主三从集群规划 10.0.128.19 使用端口 7000 7001 10.0.128.22 使用端口 7002 7003 10.0.128.23 使用端口 7004 7 ...
- 在三台服务器,搭建redis三主三从集群
一.资源准备 1.准备三台服务器H1.H2.H3 172.26.237.83 H1 172.26.237.84 H2 172.26.237.85 H3 二.配置服务器 1.在H1服务器设置SSH免密登 ...
- (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...
- Redis 3主-3从集群的搭建(CentOS 7)
注意ip地址为: 虚拟机ip设置 TYPE="Ethernet"BOOTPROTO="static"NAME="enp0s3"DEVICE= ...
- redis集群sentinel哨兵模式的搭建与实际应用
参考资料:https://blog.csdn.net/men_wen/article/details/72724406 之前环境使用的keepalived+redis vip集群模式,现在我们服务切换 ...
- redis主从同步故障切换及集群配置
一.redis是一中高性能的缓存数据库, 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下 ...
- redis集群之哨兵模式【原】
redis集群之哨兵(sentinel)模式 哨兵模式理想状态 需要>=3个redis服务,>=3个redis哨兵,每个redis服务搭配一个哨兵. 本例以3个redis服务为例: 一开始 ...
- Docker Compose搭建Redis一主二从三哨兵高可用集群
一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...
- k8s 上部署 Redis 三主三从 集群
目录 介绍 为什么要使用Redis? 什么是Redis群集? 在Kubernetes中部署Redis集群 从 GitHub 上下载: 创建pv 创建statefulset 创建service 初始化 ...
随机推荐
- Synchronize 和 volatile 的区别
1. 在应用层面来讲 a. volatile是线程同步的轻量级实现,所以volatile的性能要比synchronize好: volatile只能用于修饰变量,synchronize可以用于修饰方法. ...
- Golang基础编程(一)-基本结构、数据类型、流程语句
一.Go语言简介 简洁,高效,并发 二.语言特性 ·简洁,只有25个关键字 ·函数多返回值 ·匿名函数和闭包 ·类型和接口 ·自动垃圾回收 ·编译迅速 ·并发编程 25个关键字: 三.Go程序基本结构 ...
- Archlinux+win10双系统扩容Boot/ESP分区
环境 系统:Archlinux + Windowns10 双系统 软件:MiniTool Partition Wizard 免费版 + Diskgenius 免费版 分区:原ESP分区100M 原恢复 ...
- NCF 如何通过WebApi实现前后端分离
简介 昨天参加了<Best Of Microsoft Build>上海专场 NCF 模块化 WebApi 系统开发 + 容器化部署实战 的小伙伴们,昨天有些没有记住的,今天我在这里给大家把 ...
- vue 打包优化
vue 打包优化 路由按需加载 通过vue写的单页应用时,可能会有很多的路由引入.当打包构建的时候,javascript包会变得非常大,影响加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后 ...
- Go string 详解
前言 字符串(string) 作为 go 语言的基本数据类型,在开发中必不可少,我们务必深入学习一下,做到一清二楚. 本文假设读者已经知道切片(slice)的使用,如不了解,可阅读 Go 切片 基本知 ...
- 旷视MegEngine网络搭建
旷视MegEngine网络搭建 在 基本概念 中,介绍了计算图.张量和算子,神经网络可以看成一个计算图.在 MegEngine 中,按照计算图的拓扑结构,将张量和算子连接起来,即可完成对网络的搭建.M ...
- Spring Cloud10:Zipkin 服务跟踪
一.概述 为什么要有服务跟踪,分布式系统中有很多个服务在相互调用,调用关系是错综复杂的,如果这时出现了问题,我们在进行问题排查的时候,或者在优化架构的时候,工作量就比较大,这时候就需要我们能够准确的跟 ...
- 狂神说redis笔记(二)
四.三种特殊数据类型 Geospatial(地理位置) 使用经纬度定位地理坐标并用一个有序集合zset保存,所以zset命令也可以使用 geoadd key longitud(经度) latitude ...
- Python集合:set
集合 集合的描述 set是一个无序不重复的序列,可以用{}或者 set() 函数创建集合,它存放不可变类型(如字符串.数字.元组)数据. 注意:创建一个空集合必须使用set()方法,因为{}是用来生成 ...