Redis集群安装(三主三从一哨兵)

Redis集群安装(三主三从一哨兵)

一,搭建环境

​ 在三台服务器上分别搭建redis并测试是否能启动(搭建方法)

二,Redis cluster三主三从

配置环境变量

vim /etc/profile
#添加如下内容
export REDIS_HOME=/usr/local/redis/redis-6.0.5
export PATH=$PATH:$REDIS_HOME/bin

1.搭建节点

以一台为例子,其他可以节点一样,重复操作即可。建议在三台机器上搭建,一台机器一主一从

①创建文件夹
mkdir -p /usr/local/redis/redis_cluster/6380/conf/ mkdir -p /usr/local/redis/redis_cluster/6380/logs/ mkdir -p /usr/local/redis/redis_cluster/6380/data/mkdir -p /usr/local/redis/redis_cluster/6381/conf/mkdir -p /usr/local/redis/redis_cluster/6381/logs/ mkdir -p /usr/local/redis/redis_cluster/6381/data/
②创建配置文件

6380节点

vim /usr/local/redis/redis_cluster/6380/conf/redis.conf

文件内容:

# bind 127.0.0.1 这一行给注释掉,这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了。
#bind 127.0.0.1
# 设置端口,区分集群中Redis的实例
port 6380
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-6380.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/6380/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/6380/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_6380.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always#900 秒内至少有 1 个 key 被改变
save 900 1
#300 秒内至少有 300 个 key 被改变
save 300 10
#60 秒内至少有 10000 个 key 被改变
save 60 10000
#  后台存储错误停止写。
stop-writes-on-bgsave-error yes
#  存储至本地数据库时(持久化到 rdb 文件)是否压缩数据,默认为 yes
rdbcompression yes
# RDB 文件的是否直接偶像 chcksum
rdbchecksum yes
#  本地持久化数据库文件名,默认值为 dump.rdb
dbfilename dump.rdb
# 密码,注意集群各节点密码要保持一致
requirepass cquisse

6381节点

vim /usr/local/redis/redis_cluster/6381/conf/redis.conf

文件内容:

# bind 127.0.0.1 这一行给注释掉,这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了。
#bind 127.0.0.1
# 设置端口,区分集群中Redis的实例
port 6381
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-6381.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/6381/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/6381/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_6381.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always#900 秒内至少有 1 个 key 被改变
save 900 1
#300 秒内至少有 300 个 key 被改变
save 300 10
#60 秒内至少有 10000 个 key 被改变
save 60 10000
#  后台存储错误停止写。
stop-writes-on-bgsave-error yes
#  存储至本地数据库时(持久化到 rdb 文件)是否压缩数据,默认为 yes
rdbcompression yes
# RDB 文件的是否直接偶像 chcksum
rdbchecksum yes
#  本地持久化数据库文件名,默认值为 dump.rdb
dbfilename dump.rdb
# 密码,注意集群各节点密码要保持一致
requirepass cquisse

2.设置开机启动

vim /etc/rc.local
#添加如下内容
/usr/local/redis/redis-6.0.5/bin/redis-server /usr/local/redis/redis_cluster/6380/conf/redis.conf
/usr/local/redis/redis-6.0.5/bin/redis-server /usr/local/redis/redis_cluster/6381/conf/redis.conf

如果开机启动不生效,可以执行 chmod +x /etc/rc.d/rc.local

3.启动各个节点,创建集群,检查状态

redis-server /usr/local/redis/redis_cluster/6380/conf/redis.conf
redis-server /usr/local/redis/redis_cluster/6381/conf/redis.conf

查看启动情况

ps -ef|grep redis root 1535085 1 0 18:05 ? 00:00:32 redis-server [ip]6380 [cluster] root 1535625 1 2 18:08 ? 00:01:22 redis-server [ip]:6381 [cluster] root 1546480 19893 0 19:10 pts/0 00:00:00 grep --color=auto redis

创建集群,这里的IP是外网IP,-a后面是密码,2>/dev/null 是将标准错误忽略。要确保加入的节点是empty。如果不为空,连接节点执行flushall \ flushdb\ cluster reset

在Redis集群中,连接节点执行flushall / flushdb命令或者cluster reset命令都会对数据进行清除或者重置,但是它们的作用不一样。 flushall 命令会清空当前Redis 实例中的所有数据库,包括主库和从库中的所有数据,是一个危险的命令,会导致所有数据的丢失. flushdb命令会清空当前Redis实例中指定的数据库,如果没有指定参数,则默认清空的是所有数据库中的数据。 cluster reset命令会使Redis集群回到初始状态,重置集群中所有的节点,包括主节点、从节点和插槽分配情况等,此命令也是一个危险命令,会导致所有数据的丢失。 这些命令通常在进行Redis.集群的测试、部署、维护等工作时使用,但一定要在谨慎的情况下使用,以免造成数据的意外丢失。

redis-cli --cluster create [IP1]:6380 [IP1]:6381 [IP2]:6380 [IP2]:6381 [IP3]:6380 [IP3]:6381 --cluster-replicas 1 -a cquisse  2>/dev/null

检查状态

redis-cli --cluster check [IP1]:6380 -a cquisse 2>/dev/null

xxx.xxx.xxx.xxx:6379 (3a81002e…) -> 0 keys | 5461 slots | 1 slaves. xxx.xxx.xxx.xxx:6380 (dfe7994a…) -> 0 keys | 5461 slots | 1 slaves. xxx.xxx.xxx.xxx:6380 (c4e9009c…) -> 0 keys | 5462 slots | 1 slaves. [OK] 0 keys in 3 masters. 0.00 keys per slot on average.

Performing Cluster Check (using node xxx.xxx.xxx.xxx:6379) M: 3a81002e6a20133d44895f3f0e72e0ee16028ccf xxx.xxx.xxx.xxx:6380 slots:[0-5460] (5461 slots) master 1 additional replica(s) S: 57bfa604ff4c27de83a5c37540078d4262b293fc xxx.xxx.xxx.xxx:6381 slots: (0 slots) slave replicates 3a81002e6a20133d44895f3f0e72e0ee16028ccf S: baabb58a937192d87dbc83518da94f990c9533a6 xxx.xxx.xxx.xxx:6381 slots: (0 slots) slave replicates c4e9009cbe6ea4c2a439777d16021fecd754a2ba M: dfe7994a2457a87fec7409064358d750d48e8e39 xxx.xxx.xxx.xxx:6380 slots:[10923-16383] (5461 slots) master 1 additional replica(s) M: c4e9009cbe6ea4c2a439777d16021fecd754a2ba xxx.xxx.xxx.xxx:6380 slots:[5461-10922] (5462 slots) master 1 additional replica(s) S: 7ba2ab130e5c6917635888ee8577fa5cf3ea2838 xxx.xxx.xxx.xxx:6381 slots: (0 slots) slave replicates dfe7994a2457a87fec7409064358d750d48e8e39 [OK] All nodes agree about slots configuration. Check for open slots… Check slots coverage… [OK] All 16384 slots covered.

至此,集群搭建完成

三,哨兵

1.创建sentinel相关的文件夹
mkdir -p /usr/local/redis/redis_cluster/27001/conf/
mkdir -p /usr/local/redis/redis_cluster/27001/logs/
mkdir -p /usr/local/redis/redis_cluster/27001/data/
2.创建配置文件
cd /usr/local/redis/redis_cluster/27001/conf/
vim sentinel.conf

根据集群状态中的主节点来配置,即 M:开头的

bind 0.0.0.0
port 27001
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile  /usr/local/redis/redis_cluster/27001/logs/redis-sentinel.log
dir /usr/local/redis/redis_cluster/27001/datasentinel monitor mymaster1 xxx.xxx.xxx.xxx 6380 2
sentinel monitor mymaster2 xxx.xxx.xxx.xxx 6380 2
sentinel monitor mymaster3 xxx.xxx.xxx.xxx 6380 2sentinel down-after-milliseconds mymaster1 10000
sentinel down-after-milliseconds mymaster2 10000
sentinel down-after-milliseconds mymaster3 10000sentinel parallel-syncs mymaster1 1
sentinel parallel-syncs mymaster2 1
sentinel parallel-syncs mymaster3 1sentinel failover-timeout mymaster1 15000
sentinel failover-timeout mymaster2 15000
sentinel failover-timeout mymaster3 15000

启动哨兵

redis-sentinel /usr/local/redis/redis_cluster/27001/conf/sentinel.conf

查看redis-sentinel进程

ps -ef|grep sentinel

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

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

相关文章

AI 开发平台(Coze)搭建《AI女友(多功能版本)》

前言 本文讲解如何从零开始,使用扣子平台去搭建《AI女友(多功能版本)》 bot直达:AI女友(多功能版) - 扣子 AI Bot (coze.cn) 欢迎大家前去体验!!! 正文 功能介绍 …

系统架构师考点--系统配置与性能评价

大家好。今天我们来总结一下系统配置与性能评价的考点内容,这一部分一般是出在上午场的选择题中,占1-2分左右。 一、性能指标 计算机 对计算机评价的主要性能指标有:时钟频率(主频);运算速度;运算精度内存的存储容量…

ManageEngine连续荣登Gartner 2024年安全信息和事件管理魔力象限

我们很高兴地宣布,ManageEngine再次在Gartner的安全信息和事件管理(SIEM)魔力象限中榜上有名,这是我们连续第七年获得这一认可。 Gartner ManageEngine Log360是一款全面的SIEM解决方案,旨在帮助组织有效处理日志数据…

计算机共形几何简介

计算机共形几何(Computational Conformal Geometry)是一门研究计算机图形学和几何学结合的领域,主要研究曲面的表示、形变和分析等问题。共形几何是研究保持角度度量不变的几何变换,而计算机共形几何则是将共形几何的概念和方法应…

cuda 学习笔记4

一 基本函数 在GPU上开辟空间,无论定义的数据是float还是int ,还是****gpu_int,分配空间的函数都是下面固定的形式 (void**)& 1.函数定义,global void 是配套使用的,是在GPU上定义,也就是GPU上执行,CPU上调用的函数…

python pyautogui.position实时输出坐标

import pyautogui import timewhile True:# 获取鼠标当前坐标x, y pyautogui.position()# 打印坐标print(f"当前坐标:({x}, {y})")# 暂停1秒time.sleep(1) 输出实时鼠标位置坐标

Java高手的30k之路|面试宝典|精通MySQL(二)

分区表 分区类型 MySQL 支持以下几种表分区类型,这些分区类型有助于优化大型表的管理和查询性能: Range Partitioning(范围分区): 范围分区是基于列的值范围来分配数据的。你可以定义一个或多个列的值区间&#xff0…

62.指针和二维数组(2)

一.指针和二维数组 1.如a是一个二维数组,则数组中的第i行可以看作是一个一维数组,这个一维数组的数组名是a[i]。 2.a[i]代表二维数组中第i行的首个元素的地址,即a[i][0]的地址。 二.进一步思考 二维数组可以看作是数组的数组,本…

springboot+vue+mybatis母婴二手销售系统+PPT+论文+讲解+售后

目前由于我国二手销售的规模较小,同发达国家相比,二手销售比重始终偏低,消费总额增长缓慢,进一步抑制了市场消费的提升,随着市场竞争的日益激烈,虽然许多商家主动选用二手销售模式,但却缺乏对其充分的重视与销售风险的良性控制,一些商家没有建立独立的信用实践管理部门,无法在交…

linux使用docker部署kafka集群

1、拉取kafka docker pull wurstmeister/kafka docker pull wurstmeister/zookeeper 2、创建网络 docker network create app-kafka 3、启动zookeeper docker run -d \--name zookeeper \-p 2181:2181 \--network app-kafka \--restart always \wurstmeister/zookeeper …

【ISAC】通感一体化讲座(刘凡)

高斯信道下通信感知一体化的性能极限(刘凡) 文章目录 背景背景 通信和感知在硬件结构上相似,高效地利用资源,实现相互的增益; 感知是基于不同的任务,比如目标检测(检测概率,虚警概率),估计任务(从收到的信号中去估计有用的参数,均方误差,CRB),识别(知道目标的…

Str.format()方法

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 在Python2.6之后,提供了字符串的format()方法对字符串进行格式化操作。format()功能非常强大,格式也比较复杂&…

基于ADRC自抗扰算法的UAV飞行姿态控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 控制系统概述 4.2 ADRC基本框架 4.3 控制律设计 5.完整工程文件 1.课题概述 基于ADRC自抗扰算法的UAV飞行姿态控制系统simulink建模与仿真,分别对YAW,PITCH,ROL…

K-Means 算法详解

K-Means 是一种常用的无监督学习算法,广泛应用于数据聚类分析。本文将详细讲解 K-Means 算法的原理、步骤、公式以及 Python 实现,帮助你深入理解这一经典算法。 什么是 K-Means 算法? K-Means 算法是一种基于原型的聚类算法,其…

Linux分区以及磁盘管理

目录 一、磁盘 1.磁盘结构 1.1物理结构 1.2数据结构 2.1磁盘容量 2.2磁盘接口类型 2.磁盘分区的表示 3.MBR与磁盘分区表示 4.磁盘分区结构 二、文件系统 1、类型 三、命令 1.检测并确认新硬盘 2.创建系统文件(格式化) 2.1mkfs命令 2.2SWAP 3.挂载、卸载文件系统…

Simulink中三相PMSM配置及使用

1. 模块介绍 Simulink提供了专门用于电力系统仿真,包括电机的动态建模和控制的电机模型,其中,永磁同步电机模块 Permanent Magnet Synchronous Machine 支持实现三相或五相永磁同步电机模拟,电机绕组采用星型连接,在这…

【图像分类】Yolov8 完整教程 |分类 |计算机视觉

目标:用YOLOV8进行图像分类。 图像分类器。 学习资源:https://www.youtube.com/watch?vZ-65nqxUdl4 努力的小巴掌 记录计算机视觉学习道路上的所思所得。 1、文件结构化 划分数据集:train,val,test 知道怎么划分数据集很重要。 文件夹…

应用图扑 HT for Web 搭建拓扑关系图

拓扑结构在计算机网络设计和通信领域中非常重要,因为它描述了网络中的设备(即“点”)如何相互连接(即通过“线”)。这种结构不仅涉及物理布局,即物理拓扑,还可以涉及逻辑或虚拟的连接方式&#…

【系统架构设计师】计算机组成与体系结构 ③ ( 层次化存储结构 | 寄存器 | 高速缓存 | 内存 | 外存 )

文章目录 一、层次化存储结构1、层次化存储结构2、层次化存储结构 - 示例说明3、程序员可操作的部分 计算机 采用 分级存储结构 , 主要目的是 为了 解决 容量 / 价格 / 速度 之间的矛盾 ; 一、层次化存储结构 1、层次化存储结构 计算机 存储器 按照存储速度 由快到慢 进行排序 …

吐血推荐!3款视频生成工具,全部国产,都免费

AI视频大模型的爆发,让创作爆款视频不再是专业人士的能力。 今天二师兄给大家推荐3款免费的视频生成工具。 01 可灵 推荐指数 : 五颗星 先看效果 可灵大模型测试 可灵大模型是快手AI团队自主研发的视频生成大模型,具备强大的视频创作能力&a…