Redis哨兵集群搭建-Docker-Compose
title: Redis哨兵集群搭建(Docker-Compose)
date: 2022-09-27 17:00:56
tags:
- Redis
代码地址:https://github.com/li-zheng-hao/redis-sentinel-docker-compose
部署方式
一主两从三哨兵:
- 1个主节点
- 2个从节点
- 3个哨兵节点
服务器配置
- 系统:CentOS 7.9
- IP:172.10.2.52
- 服务器数量:1台
这里只是用一台服务器部署进行演示,后面会在备注中指明如何在多个服务器上分开部署
部署脚本
主从脚本
version: '3'
services:
master:
image: redis
container_name: redis-master
command: redis-server --requirepass lzh123456 --masterauth lzh123456
network_mode: host
slave1:
image: redis
container_name: redis-slave-1
network_mode: host
command: redis-server --slaveof 172.10.2.52 6379 --masterauth lzh123456 --requirepass lzh123456 --port 6380
slave2:
image: redis
container_name: redis-slave-2
network_mode: host
command: redis-server --slaveof 172.10.2.52 6379 --masterauth lzh123456 --requirepass lzh123456 --port 6381
其中几个注意点:
network_mode使用的是host模式,所以不需要绑定端口- 由于这个脚本是两个slave节点都和master在一个节点,因此需要在运行时配置端口
如果是要部署在三个不同的服务器上,需要更换为下面两个脚本
# master脚本
version: '3'
services:
master:
image: redis
container_name: redis-master
command: redis-server --requirepass lzh123456 --masterauth lzh123456
network_mode: host
# slave脚本
version: '3'
services:
slave:
image: redis
container_name: redis-slave
network_mode: host
command: redis-server --slaveof 172.10.2.52 6379 --masterauth lzh123456 --requirepass lzh123456
上面master脚本部署master节点,只需要部署一次,slave脚本部署slave节点,需要部署几个就在几个服务器上运行,同一台服务器上如果需要运行多个slave,那么还是得像第一步一样配置端口。
运行的脚本为:
docker-compose -f xxxx.yml up -d
上面没有挂载配置文件和数据文件,如果有需要的可以使用如下方式挂载:
volumes:
- ./config.conf:/etc/redis/redis.conf
- ./data:/data
如果有以下需求,建议手动挂载:
- 设置最大内存限制
- 设置数据存储策略(AOF或RDB,定时存储的频率),默认的是RDB,没有开启AOF
- 挂载数据,保存到宿主机上防止容器被删数据丢失
哨兵脚本
下面是部署三个哨兵的脚本
version: '3'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /usr/local/etc/redis/sentinel1.conf --port 26379
network_mode: host
volumes:
- ./conf/sentinel1:/usr/local/etc/redis
sentinel2:
image: redis
container_name: redis-sentinel-2
network_mode: host
command: redis-sentinel /usr/local/etc/redis/sentinel2.conf --port 26380
volumes:
- ./conf/sentinel2:/usr/local/etc/redis
sentinel3:
image: redis
network_mode: host
container_name: redis-sentinel-3
command: redis-sentinel /usr/local/etc/redis/sentinel3.conf --port 26381
volumes:
- ./conf/sentinel3:/usr/local/etc/redis
哨兵的配置文件:
port 26379
dir /tmp
sentinel monitor mymaster 172.10.2.52 6379 2
sentinel auth-pass mymaster lzh123456
sentinel down-after-milliseconds mymaster 3000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 5000
sentinel deny-scripts-reconfig yes
注意点:
- 同样都是部署在同一台服务器,因此需要对三个哨兵分别配置端口
- 配置脚本需要复制三份,因为哨兵进程会对这个文件写入一些配置,因此不能用同一份共享
如果要分成多个服务器进行部署,需要改写成下面这样:
version: '3'
services:
sentinel:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /usr/local/etc/redis/sentinel1.conf --port 26379
network_mode: host
volumes:
- ./conf/sentinel1:/usr/local/etc/redis
需要在几台服务器上运行就部署几遍,部署命令与部署主从节点相同
客户端连接
客户端我使用的是AnotherRedisDesktopManager,配置连接方式如下:

可以用这个工具查看slave节点的信息:

之后可以手动测试下线master或者slave节点测试是否能够正常切换
在.Net Core中连接的方式根据使用的库决定,我用的是FreeRedis,配置方式如下:
RedisClient redisClient = new RedisClient(
GlobalConfig.Instance.Redis.RedisConn,
GlobalConfig.Instance.Redis.SentinelAdders.ToArray(),
true //是否读写分离
);
serviceCollection.AddSingleton<IRedisClient>(redisClient);
配置信息:
"Redis": {
"ServiceName": "mymaster",
"Password": "lzh123456",
"RedisConn": "mymaster,password=lzh123456",
"SentinelAdders": [
"172.10.2.52:26379",
"172.10.2.52:26380",
"172.10.2.52:26381"
],
"RedisCacheExpireSec": 300
},
如果是其它库,需要参考官方文档来配置
Redis哨兵集群搭建-Docker-Compose的更多相关文章
- redis哨兵集群搭建
下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下 解压 命令:tar -zxvf redis-4.0.11.tar.gz 解压后如图所示 在/usr/lo ...
- redis哨兵集群、docker入门
redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...
- Redis本地集群搭建(5版本以上)
Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 ...
- Linux - redis哨兵集群实例
目录 Linux - redis哨兵集群实例 命令整理 配置流程 Linux - redis哨兵集群实例 命令整理 官网地址:http://redisdoc.com/ redis-cli info # ...
- helm部署Redis哨兵集群
介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客户端通知. 如下图: Redis Sentinel 故障转移过程: 从这 ...
- 11.Redis 哨兵集群实现高可用
作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...
- python连接redis哨兵集群
一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...
- redis的集群搭建(很详细很详细)
说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...
- linux环境下redis安装(redis伪集群搭建)
redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...
- 单台服务器-利用docker搭建Redis哨兵集群模式
前言:只有一台华为云服务器,所以打算创建三个容器来模拟三个服务器了. 一:拉取redis镜像 二:拉取redis.conf文件 放在自定义的目录下:wget -c http://download.re ...
随机推荐
- JavaScript基本语法(JavaScript代码嵌入方式与声明和使用变量)
.JavaScript代码嵌入方式 #①HTML文档内 JavaScript代码要写在script标签内 script标签可以写在文档内的任意位置 为了能够方便查询或操作HTML标签(元素)scrip ...
- 4.MongoDB系列之索引(一)
1. 执行计划查看 db.getCollection('users').find({'username': 'shenjian'}).explain('executionStats') 结果查看,先大 ...
- C语言------选择结构
仅供借鉴.仅供借鉴.仅供借鉴(整理了一下大一C语言每个章节的练习题.没得题目.只有程序了) 文章目录 1 .实训名称 2 .实训目的及要求 3 .源代码及运行截图 4.小结 1 .实训名称 实训4:选 ...
- 第一种方式:使用form表单将前端数据提交到servelt(将前端数据提交到servlet)
第二种使用Ajax的形式将前台的数据传输到后台:https://blog.csdn.net/weixin_43304253/article/details/120335657 1.form表单 引入了 ...
- 在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur (OpenCore Legacy Patcher)
请访问原文链接:https://sysin.org/blog/install-macos-13-on-unsupported-mac/,查看最新版.原创作品,转载请保留出处. 作者主页:www.sys ...
- 前端html和css总结
1.html知识总结 1.1 表格的的相关属性 属性 表示 border-collapse 设置表格的边框是否被合并为一个单一的边框 cellpadding 单元格边距 cellspacing 单元格 ...
- ES6 学习笔记(十二)代理器Proxy的简单使用
1.前言 以前在学习react时做了个仿手机端的QQ音乐项目.当时的数据是通过proxy代理的QQ音乐数据接口,直接写在package.json里面.Proxy 对象(Proxy)是 ES6的特性,只 ...
- 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...
- 操作系统课程设计pintos project1实验摘记
第一部分 项目概述 一.Pintos简介 Pintos是一个基于80x86架构的简单操作系统框架,它支持内核级线程.能够加载和运行用户程序,也拥有文件系统,不过,这些功能均以一种简单的形式实现. 二. ...
- WSL下的Ubuntu 18.04LTS配置软件源和系统更新
WSL下的Ubuntu 18.04LTS配置软件源和系统更新 设置系统语言为中文 # 安装中文支持 sudo apt-get install -y language-pack-zh-hans # 设置 ...