基于CentOS 7 搭建Redis 7集群
我们的目标是使用2台(多台服务器类似)服务器搭建一个3主3从的redis集群。
我们为什么要使用redis 7呢?因为6、7的版本都做了大量优化,比如6引入了多线程(一些JAVA八股文面试还喜欢问redis为什么是单线程),7的aof文件可以写入多文件,这些都带来了性能及稳定性的提升。
当然,新版本的Redis对于搭建集群的友好程度也进一步提升了。
获取安装包
通过以下地址获取redis 7压缩包:
https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.8
-
在自己习惯的位置创建redis目录,有朋友喜欢在/opt/目录下,有朋友喜欢在/usr/local/目录下;
-
进入创建好的目录,获取压缩包:
sudo wget https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.8
-
解压压缩包: tar -xf redis-7.0.8.tar.gz -C clucter
-
创建几个备用目录: mkdir 16789 16790 16791
编译Redis包
这里需要注意一下,如果这是一台新的centos 7 主机,直接make是会失败的,redis自6以后,需要C11特性支持(这里也不需要去安装ruby了,在较早的版本环境准备确实更麻烦一些)。
安装依赖包
yum -y install gcc gcc-c++ make tcl ++++yum -y install centos-release-scl ++++yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash
编辑安装
进入解压的redis根目录,执行以下命令
sudo make install
修改配置文件
vim redis.conf
这里列出几个重要的要修改的内容项:
port 16789;bind 10.11.12.13 # redis的内网IP,用于监听该IP,多组IP时用空格分隔,不建议直接配置0.0.0.0protected-mode yes # 不想要密码可以此处为nomasterauth myredisPwd  requirepass myredisPwdcluster-config-file nodes-16789.confappendfilename "appendonly16379.aof"dir ./16379dbfilename dump16379.rdblogfile "/usr/local/redis7/logs/16379.log"pidfile /var/run/redis\_16379.piddaemonize yesmaxmemory 1gb #根据自己的需求配置大小,不设置该值,有可能因占用系统内存过多而被系统杀死maxmemory-policy allkeys-lfu #根据自己业务实际情况选择数据清理策略cluster-enabled yes # 一般的redis节点并不能作为cluster,需要手工开启。
整个配置文件有很多配置项,在实际生产中,根据自己情况会有不同情况的调整。
多复制几份吧
既然我们打算3主3从,只有一份是不够的,因此我们需要将编译安装好的redis文件夹多复制几份
cp /redis-7.0.8 ../16789 -Rcp /redis-7.0.8 ../16790 -Rcp /redis-7.0.8 ../16791 -R
批量替换关键字
配置文件中有很多与端口有关的信息,每一份都需要不同。
sed -i 's/16789/16790/g' 16790/redis-7.0.8/redis.conf
在另一台服务器上复制3份
目前我们已经在一台服务器上完成了3个节点的准备,但是我们还需要有一台服务器准备,因此在另一台服务器上将 16789 16790 16791 复制过去
修改监听IP
用上面的替换命令,将IP11.12.13.14 替换为 11.12.13.15
启动服务
./redis-7.0.8/src/redis-server ./redis-7.0.8/redis.conf
分别将2台服务器上的6个节点都启动后,该步骤便告一段落。
组成集群
到了激动人心的最后一步,一步一步走下来其实有点累了,但是这一步还是轻松愉快的,与过去组件集群不同,这里只需要一个简单命令即可。
./16789/redis-7.0.8/src/redis-cli --cluster create 10.11.12.13:16789 10.11.12.13:16790 10.11.12.13:16791 10.11.12.14:16789 10.11.12.14:16790 10.11.12.14:16791 --cluster-replicas 1 -a myredisPwd
以上命令以任何一个节点的客户端执行一次即可,不用执行多次。
验证集群
杀死其中一个节点,通过以下命令查看集群状态
./16789/redis-7.0.8/src/redis-cli --cluster check 10.11.12.13:16789
会发现目前集群只有5个节点了,但是集群状态依然是正常的。
重新启动刚才被杀死的节点
重新启动节点后,会发现集群恢复了6个节点。
加入自启动
这里预留一小块,一个redis被杀死了,或者服务器重启了,节点需要立即恢复。
当然这里会想,磁盘数据持久化后,在K8s中搭建Redis集群是否更好呢?其对节点生命周期的管理,或许能提供更好的redis集群稳定性,这里有兴趣或有经验的小伙伴可以在留言中分享交流。
相关文章:
基于CentOS 7 搭建Redis 7集群
我们的目标是使用2台(多台服务器类似)服务器搭建一个3主3从的redis集群。 我们为什么要使用redis 7呢?因为6、7的版本都做了大量优化,比如6引入了多线程(一些JAVA八股文面试还喜欢问redis为什么是单线程)&…...
Lesson5.3---Python 之 NumPy 统计函数、数据类型和文件操作
一、统计函数 NumPy 能方便地求出统计学常见的描述性统计量。最开始呢,我们还是先导入 numpy。 import numpy as np1. 求平均值 mean() mean() 是默认求出数组内所有元素的平均值。我们使用 np.arange(20).reshape((4,5)) 生成一个初始值默认为 0,终止…...
Puppeteer 爬虫学习
puppeteer简介: Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议 控制 Chromium 或 Chrome。Puppeteer 默认以 headless 模式运行, 但是可以通过修改配置文件运行“有头”模式。能作什么?: 生成…...
如何在Power Virtual Agents中实现身份验证
今天我们介绍一下如何通过身份验证的方式来使用Power Virtual Agents。首先进入“Microsoft 365-管理-Azure Active Directory管理中心”。 进入“Azure Active Directory管理中心”后选择“Azure Active Directory”中的“应用注册”-“新注册”。 输入新创建的应用程序名称后…...
金三银四必备软件测试必问面试题
初级软件测试必问面试题1、你的测试职业发展是什么?测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前 3 年积累测试经验,按如何做好测试工程…...
Java反序列化漏洞——CommonsCollections6链分析
一、前因因为在jdk8u71之后的版本中,sun.reflect.annotation.AnnotationInvocationHandler#readObject的逻辑发生了变化,导致CC1中的两个链条都不能使用,所有我们需要找一个在高版本中也可用的链条。/* Gadget chain: java.io.ObjectInputStr…...
Selenium浏览器自动化测试框架
Selenium浏览器自动化测试框架 目录:导读 1、selenium简介 介绍 功能 优势 2、基本使用 3、获取单节点 4、获取多节点 5、节点交互 6、动作链 7、执行JavaScript代码 8、获取节点信息 9、切换frame 10、延时等待 11、前进和后退 12、cookies 13、选…...
Hashmap链表长度大于8真的会变成红黑树吗?
1、本人博客《HashMap、HashSet底层原理分析》 2、本人博客《若debug时显示的Hashmap没有table、size等元素时,查看第19条》 结论 1、链表长度大于8时(插入第9条时),会触发树化(treeifyBin)方法,但是不一定会树化,若数组大小小于…...
关于接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮地
除了正确进行接地设计、安装,还要正确进行各种不同信号的接地处理。控制系统中,大致有以下几种地线: (1)数字地:也叫逻辑地,是各种开关量(数字量)信号的零电位。 (2&am…...
排序
一、数据流中的中位数题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。…...
Android DataStore Proto存储接入流程详解与使用
一、介绍 通过前面的文字,我们已掌握了DataStore 的存储,但是留下一个尾巴,那就是Proto的接入。 Proto是什么? Protobuf,类似于json和xml,是一种序列化结构数据机制,可以用于数据通讯等场景&a…...
HiEV洞察 | 卖一台亏半台,激光雷达第一股禾赛隐忧仍在
作者 | 感知君Alex 编辑 | 王博2月9日晚,禾赛在万众瞩目下登陆纳斯达克,发行价19美元每股,首日涨超11%,市值超过Luminar,登顶全球市值最高的激光雷达公司。 随后两个交易日,其股价均有不同程度的涨幅&#…...
面试题61. 扑克牌中的顺子
题目 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视…...
有特别有创意的网站设计案例
有人说 UI 设计师集艺术性与科学性于一身,不仅需要对工具的使用熟练,更需要对美术艺术有一定的基础了解。如果想要成为优秀的 UI 设计师是一个需要磨砺的过程,需要不断的学习和积累,多看多练多感受,其中对于优质的设计…...
Python基础-数据类型之列表
一、列表的定义 name ["小明", "小红", "笑笑"] 二、列表的使用 除了序列中的操作,列表还有一些其他的操作。 (1)不使用列表方法对列表进行修改 1:通过索引修改列表中的值 name ["Kit…...
Linux系统基本设置:网络设置(三种界面网络地址配置)
网络地址配置:图形界面配置、命令行界面配置、文本图形界面配置 命令行界面配置 查看网络命令: 想要知道你有多少网卡,都可以通过这两个命令来查看 手动设置网络参数,我们可以使用nmcli这个命令来设置,我们需要知道…...
MySQL(二):查询性能分析
文章目录一、使用explain进行分析二、如何优化数据的访问三、如何重构大查询一、使用explain进行分析 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。 比较重要的字段有: select_type : 查询类型,有…...
Java基础-类加载器
写在前面的话: 基础加强包含了: 反射,动态代理,类加载器,xml,注解,日志,单元测试等知识点 其中最难的是反射和动态代理,其他知识点都非常简单 由于B站P数限制,…...
Python 使用pandas处理Excel —— 快递订单处理 数据匹配 邮费计算
问题背景 有表A,其数据如下 关键信息是邮寄地址和单号。 表B: 关键信息是运单号和重量 我们需要做的是,对于表A中的每一条数据,根据其单号,在表B中查找到对应的重量。 在表A中新增一列重量,将刚才查到的…...
【黑马SpringCloud(7)】分布式事务
分布式事务事务的ACID原则分布式事务理论基础CAP定理BASE理论Seataseata的部署seata的集成事务模式XA模式Seata的XA模型优缺点实现XA模式AT模式案例:AT模式更新数据脏写问题优缺点实现AT模式TCC模式流程分析Seata的TCC模型事务悬挂和空回滚实现TCC模式优缺点SAGA模式…...
百度地图API添加自定义标记解决单html文件跨域
百度地图API添加自定义标记解决单html文件跨域 因为要往百度地图上添加一些标注点,而且这些标注点要用自定义的图片,而且只能使用单html文件,不能使用服务器(也别问为什么,就是这么个需求),做起…...
如何停止/重启/启动Redis服务
一、命令行直接启动/停止/重启redis 可以直接通过下面的命令启动/停止/重启redis /etc/init.d/redis-server start 启动redis服务 /etc/init.d/redis-server stop 停止redis服务 /etc/init.d/redis-server restart 重启redis服务1、启动redis服务…...
python 的selenium自动操控浏览器教程(2)
人生苦短,我用py 文章目录人生苦短,我用py关于部分网页无法找到元素的问题1方案1方案2关于部分网页无法找到元素的问题2解决方案被网站检查出来我们使用了selenium了怎么办?如何实现前进后退当使用py删除文件时报禁止访问怎么办怎么使用py实现…...
【Deformable Convolution】可变形卷积记录
every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 可变形卷积记录 1. 正文 预印版: Deformable Convolutional Networks v1 Deformable ConvNets v2: More Deformable, Better Results 发表版…...
Oracle-Mysql 函数转换
Oracle-Mysql 函数转换limit <> ROWNUMcast <> TO_NUMBERcast as signedcast as unsignedregexp a_\\d <> REGEXP_LIKEschema() <> SELECT USER FROM DUALinformation_schema.COLUMNS表 <> ALL_TAB_COLUMNS表unix_timestampfrom_unixtime <&g…...
【Kafka】一.认识Kafka
kafka是一个分布式消息队列。由 Scala 开发的高性能跨语言分布式消息队列,单机吞吐量可以到达 10w 级,消息延迟在 ms 级。具有高性能、持久化、多副本备份、横向扩展能力。 生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。 一般在…...
Linux软件管理YUM
目录 yum配置文件 创建仓库 yum查询功能 yum安装与升级功能 yum删除功能 yum仓库产生的问题和解决之道 yum与dnf 网络源 YUM就是通过分析RPM的标头数据后,根据各软件的相关性制作出属性依赖时的解决方案,然后可以自动处理软件的依赖属性问题&…...
【自学MYSQL】MySQL Windows安装
MySQL Windows安装 MySQL Windows下载 首先,我们打开 MySQL 的官网,网址如下: https://dev.mysql.com/downloads/mysql/在官网的主页,我们首先根据我们的操作系统,选择对应的系统,这里我们选择 Windows&…...
Linux c编程之常用技巧
一、说明 在Linux C的实际编程应用中,有很多有用的实践技巧,编程中掌握这些知识,会对编程有事半功倍的效果。 二、常用技巧 2.1 if 变量条件的写法 main.c: #include <stdio.h>int main(int argc, char *argv[]) {int a =...
21- 朴素贝叶斯 (NLP自然语言算法) (算法)
朴素贝叶斯要点 概率图模型算法往往应用于NLP自然语言处理领域。根据文本内容判定 分类 。 概率密度公式: 高斯朴素贝叶斯算法: from sklearn.naive_bayes import GaussianNB model GaussianNB() model.fit(X_train,y_train) 伯努利分布朴素贝叶斯算法 fro…...
收藏网站的链接怎么做的/欧美网站建设
(1)九度上一个关于二叉树遍历的问题。通过给定的前序遍历与中序遍历就可以确定二叉树的结构。 题目描述: 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树…...
企业网站建设市场报价/怎么进行seo
很好(供应商msgSupplier):使用此方法来记录FINE消息,仅当记录级别足以实际记录该消息时才构造。这意味着,如果为FINE消息级别启用了记录器,则通过调用提供的供应商功能来构造消息,并将其转发给所有已注册的输出Handler…...
百花广场做网站的公司/优化网站标题是什么意思
本文转载自:Sunddenly(⊙_⊙) 一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;■ 伪集群模式:就是在一台…...
平台网站怎么推广/windows优化大师好吗
解决XP系统访问Win10打印机被拒绝的问题参考文章: (1)解决XP系统访问Win10打印机被拒绝的问题 (2)https://www.cnblogs.com/plain-heart/p/10756979.html 备忘一下。...
湖北省住房和城乡建设厅网站的公示公告/360开户推广
尤拉公式----关于凸多面体之间顶点数/面数/边数之间的关系 若G为一连通之平面图,则V F E 2其中V代表G中点的个数, F代表G中面的个数, 而E是G的边数. 应用:在一个圆上给你n个点,求n个点可以把圆分为几个区域 分析:根据欧拉定理可知…...
团队协同网站开发/专业搜索引擎seo服务
看了几本书,发觉自己好久没有看书了。 这几个月逛了几次书店,就今天的这次属于是有点进书店的感觉。《Professional C# 2008》真的很大一本,拿在手里看挺辛苦的。蹲着看了几章,还是中文比较好看懂,之前看2005的英文版。…...