角色 实例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

最新文章

  1. MWeb
  2. sphinx
  3. maven与git
  4. POJ 2112 - Optimal Milking
  5. iOS开发——网络编程OC篇&amp;(一)XMPP简单介绍与准备
  6. Araxis Merge Professional v2014.4565 特别版 | 文件比较合并
  7. IOS性能调优系列:Analyze静态分析
  8. BZOJ 1033 杀蚂蚁
  9. 锁机制与原子操作 &lt;第四篇&gt;
  10. hadoop(六) - ZooKeeper安装与配置
  11. 【Zookeeper】源码分析之持久化--FileTxnLog
  12. ROC曲线的计算
  13. 路由刷rom手册
  14. js如何发送wss协议的请求,以及接受服务器返回的数据
  15. C#设计模式(3)——工厂方法模式(Factory Method)
  16. VirtualBox 在Win10上的蓝屏问题
  17. Java 通过get post 请求url
  18. HI3518EV200 mpp分析
  19. word中公式居中编号在最右端
  20. Spring @Lazy

热门文章

  1. 用PHP爬取知乎的100万用户
  2. 安装tomcat8 env
  3. Spring 版MediatR--中介者模式实现库
  4. 【补档STM32】STM32F103俄罗斯方块游戏实现
  5. mysql数据库-运维合集
  6. AI推理单元
  7. NVIDIA数据中心深度学习产品性能
  8. 工作流引擎Activiti使用进阶!详细解析工作流框架中高级功能的使用示例
  9. 『动善时』JMeter基础 — 43、JMeter对数据库的查询操作
  10. Java8 中使用Stream 让List 转 Map使用总结