如何搭建redis哨兵集群

news2024/9/22 9:56:39

1. 构建redis镜像

FROM redis:7.0.15-alpine3.20

# install tools
RUN apk add curl --no-cache &&\
    apk add bash --no-cache 

# COPY redis.conf /usr/local/etc/redis/redis.conf

CMD  [ "redis-server", "/usr/local/etc/redis/redis.conf"]
 docker build -t redis:v7.0.15-1.1 . -f Dockerfile

2. 配置redis1主3从

redis.conf配置模板

# Redis 配置文件示例

################################## INCLUDES ###################################

# 如果你的 Redis 实例使用 include 配置来引入其他文件,请确保这些文件存在
# include /path/to/local.conf
# include /path/to/other.conf

################################## MODULES ####################################

# 如果你在编译时加载了模块,请在这里引入它们

################################## NETWORK ####################################

# 绑定的 IP 地址
# bind 127.0.0.1
bind 0.0.0.0

# 端口号
port 6379

# TCP-backlog
tcp-backlog 511

# 网络超时时间(秒)
timeout 0

# 日志级别
loglevel notice

# 通信协议(tcp 或者 unix)
# 默认值为 tcp
# unixsocket /tmp/redis.sock
# unixsocketperm 700

################################# GENERAL #####################################

# 密码认证
# requirepass foobared

# 服务器标识(用于统计)
# servername redis_server_1

# 守护进程模式
daemonize no

# 数据目录
# dir /var/lib/redis
dir /data


# RDB 文件名
dbfilename dump.rdb

# 持久化策略
save 900 1
save 300 10
save 60 10000

# 是否开启 AOF
appendonly yes

# AOF 文件名
appendfilename "appendonly.aof"

# AOF 同步策略
appendfsync everysec

# AOF 自动重写缩减
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 是否开启集群模式
cluster-enabled no

# 慢查询日志阈值(单位微秒)
slowlog-log-slower-than 10000

# 客户端输出缓冲区长度
client-output-buffer-limit normal 0 0 0

# 设置最大客户端连接数
maxclients 10000

# 设置允许的最大内存使用量
maxmemory 4gb

# 设置内存使用达到最大时的处理策略
maxmemory-policy volatile-lru

# 设置是否开启了压缩
rdbcompression yes


# 启用 AOF 持久化
appendonly yes

# 配置 AOF 文件名(可选)
appendfilename "appendonly.aof"

# 设置 AOF 同步策略,确保数据安全
# always: 每次写操作都同步
# everysec: 每秒同步一次(推荐)
# no: 不进行同步
appendfsync everysec

# 启用 AOF 重写机制
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 启用混合持久化
aof-use-rdb-preamble yes

# RDB 持久化配置
# 定期保存数据到 RDB 文件中
# 格式:save <seconds> <changes>
# 示例:每 900 秒(15 分钟)至少有 1 次修改
#       每 300 秒(5 分钟)至少有 10 次修改
#       每 60 秒(1 分钟)至少有 10000 次修改
save 900 1
save 300 10
save 60 10000

# RDB 文件存储路径
dir ./

redis6379.conf

# 端口号
port 6379

# 其他配置都一样,拷贝即可

 redis6380.conf

# 端口号
port 6380

# 其他配置都一样,拷贝即可

 redis6381.conf

# 端口号
port 6381

# 其他配置都一样,拷贝即可

 redis6382.conf

# 端口号
port 6382

# 其他配置都一样,拷贝即可

3. 配置3节点redis哨兵

redissentinel.conf配置模板

# Redis 配置文件示例

################################## INCLUDES ###################################

# 如果你的 Redis 实例使用 include 配置来引入其他文件,请确保这些文件存在
# include /path/to/local.conf
# include /path/to/other.conf

################################## MODULES ####################################

# 如果你在编译时加载了模块,请在这里引入它们

################################## NETWORK ####################################

# 绑定的 IP 地址
# bind 127.0.0.1
bind 0.0.0.0

# 端口号
port 26379


# sentinel 哨兵配置

sentinel monitor mymaster 10.0.4.12 6379 2
sentinel down-after-milliseconds mymaster 30000


# TCP-backlog
tcp-backlog 511

# 网络超时时间(秒)
timeout 0

# 日志级别
loglevel notice

# 通信协议(tcp 或者 unix)
# 默认值为 tcp
# unixsocket /tmp/redis.sock
# unixsocketperm 700

################################# GENERAL #####################################

# 密码认证
# requirepass foobared

# 服务器标识(用于统计)
# servername redis_server_1

# 守护进程模式
daemonize no

# 数据目录
# dir /var/lib/redis
dir /data


# RDB 文件名
dbfilename dump.rdb

# 持久化策略
save 900 1
save 300 10
save 60 10000

# 是否开启 AOF
appendonly yes

# AOF 文件名
appendfilename "appendonly.aof"

# AOF 同步策略
appendfsync everysec

# AOF 自动重写缩减
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 是否开启集群模式
cluster-enabled no

# 慢查询日志阈值(单位微秒)
slowlog-log-slower-than 10000

# 客户端输出缓冲区长度
client-output-buffer-limit normal 0 0 0

# 设置最大客户端连接数
maxclients 10000

# 设置允许的最大内存使用量
maxmemory 4gb

# 设置内存使用达到最大时的处理策略
maxmemory-policy volatile-lru

# 设置是否开启了压缩
rdbcompression yes


# 启用 AOF 持久化
appendonly yes

# 配置 AOF 文件名(可选)
appendfilename "appendonly.aof"

# 设置 AOF 同步策略,确保数据安全
# always: 每次写操作都同步
# everysec: 每秒同步一次(推荐)
# no: 不进行同步
appendfsync everysec

# 启用 AOF 重写机制
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 启用混合持久化
aof-use-rdb-preamble yes

# RDB 持久化配置
# 定期保存数据到 RDB 文件中
# 格式:save <seconds> <changes>
# 示例:每 900 秒(15 分钟)至少有 1 次修改
#       每 300 秒(5 分钟)至少有 10 次修改
#       每 60 秒(1 分钟)至少有 10000 次修改
save 900 1
save 300 10
save 60 10000

# RDB 文件存储路径
dir ./

redis26379.conf

# 端口号
port 26379


# sentinel 
sentinel monitor mymaster 10.0.4.12 6379 2
sentinel down-after-milliseconds mymaster 30000

# 其他配置不需修改

 redis26380.conf

# 端口号
port 26380


# sentinel 
sentinel monitor mymaster 10.0.4.12 6379 2
sentinel down-after-milliseconds mymaster 30000

# 其他配置不需修改

 redis26381.conf

# 端口号
port 26381


# sentinel 
sentinel monitor mymaster 10.0.4.12 6379 2
sentinel down-after-milliseconds mymaster 30000

# 其他配置不需修改

4. 启动集群

# 删除已有镜像
docker rm -f ` docker ps -a|grep redis |awk '{print $1}'`

docker run --name redis6379 -p 6379:6379 -v /root/lyl/redis/redis-operator/redis6379.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-server /usr/local/etc/redis/redis.conf

# sleep
sleep 10

docker run --name redis6380 -p 6380:6380 -v /root/lyl/redis/redis-operator/redis6380.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-server /usr/local/etc/redis/redis.conf



docker run --name redis6381 -p 6381:6381 -v /root/lyl/redis/redis-operator/redis6381.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-server /usr/local/etc/redis/redis.conf



docker run --name redis6382 -p 6382:6382 -v /root/lyl/redis/redis-operator/redis6382.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-server /usr/local/etc/redis/redis.conf




docker run --name redis26379 -p 26379:26379 -v /root/lyl/redis/redis-operator/redis26379.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-sentinel /usr/local/etc/redis/redis.conf

docker run --name redis26380 -p 26380:26380 -v /root/lyl/redis/redis-operator/redis26380.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-sentinel /usr/local/etc/redis/redis.conf

docker run --name redis26381 -p 26381:26381 -v /root/lyl/redis/redis-operator/redis26381.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-sentinel /usr/local/etc/redis/redis.conf

5. 连接哨兵节点,配置到主节点的连接

# 进入6380容器,配置主节点
redis-cli -p 6380

slaveof masterip masterport

6381,6382,6383节点配置方式同。

6. 查看集群状态

进到master(6380)容器,连接redis,使用info replication命令查看集群状态

进入哨兵节点,查看集群信息:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2054423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一起学习LeetCode热题100道(45/100)

45.二叉树的右视图(学习) 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 …

【微信小程序】自定义组件 - 数据、方法和属性

1. data 数据 2. methods 方法 在小程序组件中&#xff0c;事件处理函数和自定义方法需要定义到 methods 节点中&#xff0c;示例代码如下&#xff1a; 3. properties 属性 在小程序组件中&#xff0c;properties 是组件的对外属性&#xff0c;用来接收外界传递到组件中的数…

如何使用docker打包后端项目并部署到阿里云k8s集群上

如何使用docker打包后端项目并部署到阿里云k8s集群上 1. 引言 在现代软件开发中,容器化技术已经成为主流,而Kubernetes (K8s) 是管理容器的首选平台之一。本文将详细介绍如何将一个后端项目使用Docker打包,并将其部署到阿里云的Kubernetes集群上。 2. 前置条件 阿里云账号…

sentinel集成springcloud实现限流熔断

Sentinel 是由阿里巴巴开源的一款流量控制和熔断降级组件,旨在通过灵活的流量控制和熔断降级机制,帮助开发者保护微服务架构中的应用和服务。 官网&#xff1a;home | Sentinel (sentinelguard.io) 一、安装sentinel 1.方式一&#xff1a;用docker-compose 安装 docker-com…

回归预测|基于粒子群优化深度神经网络DNN的数据回归预测Python程序PSO-DNN 多特征输入单输出

回归预测|基于粒子群优化深度神经网络DNN的数据回归预测Python程序PSO-DNN 多特征输入单输出 文章目录 前言回归预测|基于粒子群优化深度神经网络DNN的数据回归预测Python程序PSO-DNN 多特征输入单输出 一、PSO-DNN模型1. 粒子群优化&#xff08;PSO&#xff09;简介2. 深度神经…

java版知识付费saas租户平台的核心功能设计:打造高效、个性化的学习体验

随着互联网技术的飞速发展&#xff0c;我国在线教育行业迎来了新的变革&#xff0c;知识付费平台应运而生。这种新兴的在线教育模式&#xff0c;以用户需求为导向&#xff0c;以优质内容为核心&#xff0c;通过互联网技术手段&#xff0c;为用户提供便捷、高效的学习渠道。知识…

基于PyTorch的MNIST手写数字GAN生成器

文章目录 前言小笔记关键特性技术栈使用场景贡献者&#xff1a; 完整代码代码解析1. 导入必要的库2. 设备配置3. 超参数设置4. 创建样本目录5. 图像处理6. 加载MNIST数据集7. 创建数据加载器8. 定义判别器&#xff08;Discriminator&#xff09;D9. 定义生成器&#xff08;Gene…

C语言(15)——顺序表的应用

目录 1.基于动态顺序表实现通讯录项⽬ 1.1功能要求 1.2代码实现 2. 顺序表经典算法 1.基于动态顺序表实现通讯录项⽬ 1.1功能要求 1&#xff09;⾄少能够存储100个⼈的通讯信息 2&#xff09;能够保存⽤⼾信息&#xff1a;名字、性别、年龄、电话、地址等 3&#xff09;…

生活垃圾填埋场污染监测:新标准下的技术革新与环境保护

随着城市化进程的加速&#xff0c;生活垃圾产生量急剧增加&#xff0c;如何有效处理并控制其带来的环境污染成为亟待解决的问题。近日&#xff0c;生态环境部发布了新修订的《生活垃圾填埋场污染控制标准》&#xff08;GB 16889-2024&#xff09;&#xff0c;将自2024年9月1日起…

【Redis】哈希类型详解及缓存方式对比:从命令操作到实际应用场景

目录 Hash 哈希命令命令⼩结内部编码使⽤场景缓存方式对比 Hash 哈希 ⼏乎所有的主流编程语⾔都提供了哈希&#xff08;hash&#xff09;类型&#xff0c;它们的叫法可能是哈希、字典、关联数组、映射。在 Redis 中&#xff0c;哈希类型是指值本身又是⼀个键值对结构&#xff…

万维网与HTTP协议:基础知识简明指南

引言 在当今的数字时代&#xff0c;了解万维网&#xff08;World Wide Web, WWW&#xff09;和HTTP协议&#xff08;Hyper Text Transfer Protocol&#xff09;是至关重要的。本文将为基础小白们简明扼要地介绍万维网及其核心协议HTTP&#xff0c;并通过简单的例子和清晰的段落…

三级_网络技术_34_网络管理技术

1.在某主机上用浏览器无法访问到域名为www.tipu.edu.cn的网站&#xff0c;并且在该主机上执行tracert命令时有如下信息 分析以上信息&#xff0c;会造成这种现象的原因是 相关路由器上进行了访问控制 服务器 wwww.tjipu.edu.cn工作不正常 该计算机设置的DNS服务器工作不正常…

知行科技半年报显示商业化进展提速,下一个亮点在出海?

中国智驾落地竞速比拼愈演愈烈&#xff0c;让智驾公司陷入颇为紧张的竞争氛围。然而烈火出真金&#xff0c;这场角逐也成为领先企业脱颖而出的机会。 8月16日晚&#xff0c;智驾解决方案提供商知行科技(HK:01274)发布2024年上半年财报。数据显示&#xff0c;知行科技维持了营收…

SPI驱动学习一(协议原理)

目录 一、SPI协议介绍1. SPI 协议概述2. SPI 总线的主要组成部分3. SPI 协议的工作原理3. SPI 通信模式 二、SPI 协议的优点与缺点三、应用实例与常见问题1. 常用外设设备2. 常见问题3. 同时上电问题详细分析可能的原因解决方案 一、SPI协议介绍 1. SPI 协议概述 SPI&#xff…

【DP动态规划】学习笔记大全

-------------------------------------------------------本篇文章尚未完结&#xff0c;大家可以先看已有部分------------------------------------------------------- 【DP动态规划】学习笔记大全 Part 1 背包DP1.1 01背包1.1.1 题意解释1.1.2 为什么不使用贪心1.1.3 该如何…

【机器学习西瓜书学习笔记——规则学习】

机器学习西瓜书学习笔记【第十五章】 第十五章 规则学习15.1 基本概念15.2 序贯覆盖最简单的做法两种产生规则的策略 15.3 剪枝优化预剪枝后剪枝 15.4 一阶规则学习**FOIL算法** 15.5 归纳逻辑程序设计( I L P ILP ILP)最小一般泛化逆归结 第十五章 规则学习 15.1 基本概念 规…

干货|嵌入式分析产品选型指南

在当今数据驱动的商业环境中&#xff0c;业务系统的嵌入式分析能力正成为企业决策的关键能力。将数据分析能力嵌入到企业的核心业务流程中&#xff0c;能够帮助企业快速洞察业务趋势&#xff0c;做出更加明智的业务决策。随着市场对数据分析工具的需求日益增长&#xff0c;选择…

本地生活服务平台源码在哪里?2大获取渠道源码质量解析!

当前&#xff0c;本地生活赛道的发展潜力和收益前景已经日渐显化&#xff0c;本地生活服务商的数量也随之不断增长。不过&#xff0c;由于官方平台对于其本地生活服务商的申请条件并未放宽&#xff0c;因此&#xff0c;新增本地生活服务商中的绝大多数都会选择部署本地生活服务…

letcode 分类练习 654. 最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

letcode 分类练习 654. 最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树 654. 最大二叉树617.合并二叉树700.二叉搜索树中的搜索98.验证二叉搜索树 654. 最大二叉树 class Solution { public:TreeNode* build(vector<int>& nums, int left, int…

Spring MVC中获取请求参数的方式

在Spring MVC中获取请求方式参数的主要方式有RequestParam&#xff0c;PathVariable&#xff0c;RequestBody&#xff0c;HttpServletRequest&#xff0c;RequestHeader等方式&#xff0c;接下来我们分别对其请求获取参数的方式进行相关介绍和使用。 RequestParam 用于获取请…