redis高可用-集群部署

一:背景

前面我们实现了redis的主从同步和哨兵模式,解决了单机redis的故障转移和流量分担,但是不管是主从或者哨兵模式都是一个主服务对应一个或者多个从服务,并且主服务和从服务的数据是一样的,这样就实现不了redis大数据量写的问题,不能分担写服务到多个redis服务,那么有没有一种模式能够实现redis内存的横向扩展,多主对应多从,并且实现故障转移自动修复。答案是一定的redis的设计者已经为我们提供了现成的设计方案,那就是使用Redis Cluster。下面我们来实操下利用Redis Cluster实现redis的集群部署。

二:实现方式

1:环境准备

我们为了部署方便使用单台主机部署3个主服务,3个从服务组成redis集群,对应的主机和端口如下:

主服务:

master1    192.168.56.101  6381

master2     192.168.56.101  6382

master3      192.168.56.101 6383

从服务:

slave1   192.168.56.101  6391

slave2   192.168.56.101  6392

slave3   192.168.56.101  6393

2: 创建配置文件

mkdir /usr/local/redis-cluster

cp /usr/local/bin/redis.conf redis_master_1.conf

修改redis_master_1.conf的配置如下:

# 守护进行模式启动
daemonize yes

# 绑定地址,需要修改

bind 0.0.0.0

# 绑定端口,需要修改
port 6381

# pid文件存储位置,文件名需要修改

pidfile "/var/run/redis_6381.pid"
 

# log文件存储位置,文件名需要修改

logfile "/var/run/redis_6381.log"

# RDB快照备份文件名,文件名需要修改
 

dbfilename "redis_6381.rdb"

# 本地数据库存储目录,需要修改

dir "/usr/local/redis/redis_6381"
 

# 集群相关配置
# 是否以集群模式启动
cluster-enabled yes

# 集群节点回应最长时间,超过该时间被认为下线
cluster-node-timeout 15000

# 生成的集群节点配置文件名,文件名需要修改

cluster-config-file nodes-6381.conf

# aof持久化
appendonly yes

#修改各自的aof文件名
appendfilename "appendonly6381.aof"

#设置密码
requirepass  123456
masterauth   123456

修改其他5份配置文件,改变对应的端口和文件路径

3:启动服务

/usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_1.conf 

/usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_2.conf 
  /usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_3.conf 
  /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_1.conf 
   /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_2.conf 
   /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_3.conf 


 

4:这时候这6个服务是没有任何关联的,我们需要将他们加入集群

进入任意一个redis服务

 /usr/local/bin/redis-cli -h 127.0.0.1 -p 6381

auth 123456

cluster meet 192.168.56.101 6382
cluster meet 192.168.56.101 6383
cluster meet 192.168.56.101 6391
cluster meet 192.168.56.101 6392
cluster meet 192.168.56.101 6393

然后查看所有节点:

cluster nodes

发现三个主服务和三个从服务,同时查看端口监听,可以发现10000+端口,说明集群的服务之间已经可以通信

5:配置主从服务

我们需要查看主服务的节点id,查看8381-6383的主服务node id

进入对应的从服务,配置主服务node id

进入6391从服务:

cluster replicate e9e7bcf9ff199e2a99d8dfb5342deebfe1462a8a

进入6392从服务:

cluster replicate f48f4528f051a1e585df05601217772a3ecbfb64

进入6393从服务:

cluster replicate 542bba27134e01c306c8c326b5deaac750234107

6:分配槽位

为了考虑今后的写入操作能分配均匀,槽位也要进行均匀分配。

仅在Master上进行分配,从库不进行分配,仅做主库的备份和读库使用。

节点    槽位数量
6381    0 - 5461
6382    5461 - 10922
6383    10922 - 16383

编写脚本:

#!/bin/bash

n=0
for ((i=n;i<=5461;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6381 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done
 

#!/bin/bash

n=5462
for ((i=n;i<=10922;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6382 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done

#!/bin/bash

n=10923
for ((i=n;i<=16383;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6383 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done
 

执行完查看状态:

CLUSTER info

状态已经显示成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零入手人工智能(4)—— 逻辑回归

1.小故事 一家金融科技公司&#xff0c;公司的首席执行官找到团队提出了一个紧迫的问题&#xff1a;“我们如何提前知道哪些客户可能会违约贷款&#xff1f;” 这让团队陷入了沉思&#xff0c;经过激烈讨论团队中的数据分析师提议&#xff1a;“我们可以尝试使用逻辑回归来预测…

node版本过高出现ERR_OSSL_EVP_UNSUPPORTED错误

错误原因&#xff1a; 新版本的nodejs使用的openssl和旧版本不同&#xff0c;导致出错 解决方法&#xff1a; 1.将node版本重新换回16.x 2 windows 下 在package.json文件下添加set NODE_OPTIONS--openssl-legacy-provider && "scripts": {"dev"…

配置 python 脚本操作Excel 环境

在已装python的前提下 一、安装依赖库 pip install pandas pip install openpyxl安装完后&#xff0c;可以在 Python 中运行以下命令来查看 pandas 或 openpyxl 的安装路径&#xff1a; import pandas as pd print(pd.__path__)import openpyxl print(openpyxl.__path__)二、测…

​Claude 3.5 最新体验:助力硕博生与科研人员高效完成论文,超越ChatGPT4o !

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 要不说AI领域的进展真的是日新月异&#xff0c;发展速度已经大大超过预期进度。娜姐本来在准备AI降重工具的测评文章&#xff08;最近好多小伙伴需要&#xff09;。 昨天晚上…

机器学习算法的电影推荐系统以及票房预测系统

一、实验概述 1. 实验目标 本项目希望基于电影数据集&#xff0c;依据电影的简介、关键词、预算、票房、用户评分等特征来对电影进行分析&#xff0c;并完成以下任务&#xff1a; 对电影特征的可视化分析对电影票房的预测多功能个性化的电影推荐算法 2. 数据集 针对票房预…

leetcode144. 二叉树的前序遍历

一、题目描述&#xff1a; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 二、输入输出实例&#xff1a; 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]…

经纬恒润EAS.HSM:驱动硬件信息安全

概述 HSM&#xff08;Hardware Security Module&#xff09;硬件安全模块&#xff0c;是一种用于保护和管理强认证系统所使用的密钥&#xff0c;并同时提供相关密码学操作的计算机硬件设备。 HSM 在汽车信息安全中扮演着至关重要的角色。随着汽车智能化和网联化的快速发展&am…

微型操作系统内核源码详解系列五(3):cm3下调度的开启

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…

Pyqt QCustomPlot 简介、安装与实用代码示例(一)

目录 简介安装实用代码示例带有填充的简单衰减正弦函数及其红色的指数包络线具有数据点的 sinc 函数、相应的误差条和 2--sigma 置信带几种散点样式的演示展示 QCustomPlot 在设计绘图方面的多功能性 结语 所有文章除特别声明外&#xff0c;均采用 CC BY-NC-SA 4.0 许可协议。转…

wordpress站群搭建3api代码生成和swagger使用

海鸥技术下午茶-wordpress站群搭建3api代码生成和swagger使用 目标:实现api编写和swagger使用 0.本次需要使用到的脚手架命令 生成 http server 代码 goctl api go -api all.api -dir ..生成swagger文档 goctl api plugin -plugin goctl-swagger"swagger -filename st…

vmware workstation下centos7屏幕切换及大小调整

虚拟机版本&#xff1a;vmware workstation15.5.2 操作系统版本&#xff1a;centos 7.9.2009 一 图形界面和命令行界面切换方法 在CentOS 7中&#xff0c;可以使用以下方法切换界面&#xff1a; 1 使用快捷键切换&#xff1a;按下Ctrl Alt F2&#xff08;或F3&#xff0…

Vue70-路由的几个注意点

一、路由组件和一般组件 1-1、一般组件 1-2、路由组件 不用写组件标签。靠路由规则匹配出来&#xff0c;由路由器渲染出来的组件。 1-3、注意点1 一般组件和路由组件&#xff0c;一般放在不同的文件夹&#xff0c;便于管理。 一般组件放在components文件夹下。 1-4、注意点…

【SpringBoot】SpringBoot:打造现代化微服务架构

文章目录 引言微服务架构概述什么是微服务架构微服务的优势 使用SpringBoot构建微服务创建SpringBoot微服务项目示例&#xff1a;创建订单服务 配置数据库创建实体类和Repository创建服务层和控制器 微服务间通信使用RestTemplate进行同步通信示例&#xff1a;调用用户服务 使用…

用智能插件(Fitten Code: Faster and Better AI Assistant)再次修改vue3 <script setup>留言板

<template><div><button class"openForm" click"openForm" v-if"!formVisible">编辑</button><button click"closeForm" v-if"formVisible">取消编辑</button><hr /><formv-i…

手把手教你java CPU飙升300%如何优化

背景 今天有个项目运行一段时间后&#xff0c;cpu老是不堪负载。 排查 top 命令 TOP 命令 top t 按cpu 排序 top m 按内存使用率排序 从上面看很快看出是 pid 4338 这个进程资源消耗很高。 top -Hp pid top -Hp 4338 找到对应线程消耗的资源shftp cpu占用进行排序&#xf…

优维“态势感知监控”产品:像“上帝”一样掌控应用系统

什么是态势感知&#xff1f; 态势感知是一种基于环境的、动态、整体地洞悉全网安全风险的能力。它以安全大数据为基础&#xff0c;从全局视角对全网安全威胁进行发现识别、理解分析展示和响应处置&#xff0c;并预测发展趋势&#xff0c;为后续网络安全的相关决策与行动提供数据…

Redis 7.x 系列【4】命令手册

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 说明2. 命令手册2.1 Generic2.2 数据类型2.2.1 String2.2.2 Hash2.2.3 List2.2.4 S…

JavaScript--函数的参数列表以及arguments的用法

函数声明时&#xff0c;参数的问题 即使函数在定义时没有显示声明任何参数&#xff0c;你仍然可以在调用该函数时传递参数。 这是因为 JavaScript 函数内部有一个隐含的 arguments 对象&#xff0c;它包含了所有传递给函数的参数。 示例 我们来通过一些示例代码来更清楚地说…

拒绝零散碎片, 一文理清MySQL的各种锁

系列文章目录 学习MySQL先有全局观&#xff0c;细说其发展历程及特点 Mysql常用操作&#xff0c;谈谈排序与分页 拒绝零散碎片&#xff0c; 一文理清MySQL的各种锁&#xff08;收藏向&#xff09; 系列文章目录一、MySQL的锁指什么二、排他与共享三、全局锁&#xff08;Global…

PhotoShop批量生成存储jpg

1、说明 根据之前自动批量生成psd格式的文件。打印一般都是jpg格式的&#xff0c;那如果将这些psd的文件&#xff0c;生成jpg&#xff0c;本文采用ps的动作 2、生成动作 点击窗口-动作 录屏存储jpg动作 3、根据动作生成 选择相应动作之后选择需要处理的文件夹