小白到运维工程师自学之路 第四十五集 (生产级Redis Cluster部署)

news2024/11/25 12:59:08

一、概述

        Redis Cluster是Redis数据库的一种分布式解决方案,用于在多个节点上分布和

管理数据。它通过将数据分片存储在不同的节点上,实现数据的分布式存储和处理。

Redis Cluster采用主从复制的方式来保证数据的高可用性和容错性,每个主节点都会

有若干个从节点进行数据备份和故障转移。Redis Cluster还提供了自动数据迁移和故

障恢复的功能,当节点发生故障或新增节点时,集群会自动进行数据迁移和重新分配,

以保证数据的可用性和负载均衡。通过Redis Cluster,可以实现高性能、高可用性和

可扩展性的分布式数据存储和处理。

二、工作原理

1. 节点分布:Redis Cluster将数据分布在多个节点上,每个节点负责存储部分数据。数据的分布是

通过哈希槽(hash slot)来实现的,Redis Cluster将数据分为16384个哈希槽,每个节点负责一部

分哈希槽。

2. 节点通信:Redis Cluster中的节点通过互相通信来进行数据同步和协调工作。节点之间使用

Gossip协议进行通信,通过交换节点信息来了解集群的状态和拓扑结构。

3. 主从复制:每个节点都可以有多个从节点,主节点负责处理客户端的读写请求,从节点负责复制

主节点的数据。主从复制可以提高数据的可用性和读取性能。

4. 故障检测和故障转移:Redis Cluster通过心跳机制来检测节点的故障。当主节点故障时,Redis

Cluster会自动进行故障转移,将一个从节点提升为新的主节点,保证数据的可用性。

5. 客户端路由:客户端与Redis Cluster进行交互时,需要根据数据的哈希槽来确定数据所在的节

点。客户端通过计算数据的哈希槽来选择合适的节点进行读写操作。

6. 数据迁移和负载均衡:当集群的拓扑结构发生变化时,Redis Cluster会自动进行数据迁移和负载

均衡,将哈希槽重新分配给不同的节点,保持数据的均衡分布。

三、准备工作

1、关闭防火墙

2、两台服务器互相通联

3、安装wget gcc gcc-c++ make tar openssl openssl-devel cmake依赖包为编译环境作准备

四、部署

1、主从共同操作

tar xf  redis-4.0.10.tar.gz -C /sur/src
cd /usr/src/redis-4.0.10/
 make
 make MALLOC=jemalloc                   避免碎片和可伸缩的并发支持

mkdir -p /usr/local/redis/conf               创建redis配置文件目录
cp sentinel.conf /usr/local/redis/conf/      redis哨兵配置文件
cp src/redis-trib.rb /usr/local/redis/bin/   优化命令
ln -s /usr/local/redis/bin/* /usr/local/bin/ 创建软连接
配置文件精简
cp redis.conf /usr/local/redis/conf/	将配置文件复制到我创建的配置文件目录中
cd /usr/local/redis/	                进入配置文件目录
cp conf/redis.conf{,.bak}               创建备份
egrep -v "^$|^#" conf/redis.conf.bak > conf/redis.conf  删除配置文件中的#行和空行

优化系统配置
优化透明大页面压缩
echo never > /sys/kernel/mm/transparent_hugepage/enabled    临时
echo never > /sys/kernel/mm/transparent_hugepage/defrag     临时
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local   永久
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local    永久

echo "* - nofile 10240" >> /etc/security/limits.conf       文件并发数
echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf      监听队列
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf        0内存不够,就会拒绝申请
1物理内存都允许分配给你,只要有内存就给你用,这样可以避免申请内存失败的问题。
sysctl -p

从只需要把后面的端口号更改就可以了
mkdir -p /data/redis-cluster
cd /data/redis-cluster
mkdir 7000 7001 7002
cp /usr/local/redis/conf/redis.conf /data/redis-cluster/7000/
cp /usr/local/redis/conf/redis.conf /data/redis-cluster/7001/
cp /usr/local/redis/conf/redis.conf /data/redis-cluster/7002/

修改配置文件
daemonize yes
cluster-enabled yes
port 7000
pidfile /data/redis-cluster/7000/redis.pid
logfile "/data/redis-cluster/7000/redis.log"
dir /data/redis-cluster/7000/
tcp-backlog 1024

剩下的配置文件修改项和上面一样,只需要把端口号修改为7001、7002以此类推
启动主的服务
redis-server /data/redis-cluster/7001/redis.conf
redis-server /data/redis-cluster/7002/redis.conf 
redis-server /data/redis-cluster/7000/redis.conf 

 查看端口(17000、17001、17002这是redis哨兵的端口号)

 五、架构redis集群

安装redis集群工具ruby
编译安装高ruby版本,Ruby版本需要大于等于2.2.2(yum安装的不符合)
tar xf ruby-2.5.1.tar.gz -C /usr/src/
cd /usr/src/ruby-2.5.1/
./configure && make && make install
ruby --version
 ruby --version ruby 2.5.1p57 '(2018-03-29 revision 63029) [x86_64-linux]'
安装ruby的拓展
 /usr/local/bin/gem install redis
启动集群
redis-trib.rb create 192.168.77.111:7000 192.168.77.111:7001 192.168.77.111:7002

redis-cli -h 192.168.77.111 -c -p 7000 set name crushlinux   测试节点状态

开启从服务
redis-server /data/redis-cluster/8000/redis.conf
redis-server /data/redis-cluster/8001/redis.conf 
redis-server /data/redis-cluster/8002/redis.conf

添加从服务
 redis-trib.rb add-node --slave 192.168.77.112:8000 192.168.77.111:7000

查看集群状态

 redis-cli -p 7000 cluster nodes

六、测试

读写测试

 redis-cli -h 192.168.77.112 -c -p 8000

插入一条数据
set address henan

 切换其他服务器查看

可以看到每个节点都可以查询到写入的数据

 查看主从cluster集群key的分布情况

redis-cli -h 192.168.77.112 -c -p 8000 info Keyspace
redis-cli -h 192.168.77.112 -c -p 8001 info Keyspace
redis-cli -h 192.168.77.112 -c -p 8002 info Keyspace
redis-cli -h 192.168.77.111 -c -p 7000 info Keyspace
redis-cli -h 192.168.77.111 -c -p 7001 info Keyspace
redis-cli -h 192.168.77.111 -c -p 7002 info Keyspace

 主从切换

redis-cli -h 192.168.77.111 -p 7000 shutdown
redis-cli -h 192.168.77.112 -p 8000 cluster nodes

 可以看到8000端口的已经变为了主服务器

重新启动7000端口的服务

可以看到7000端口的服务变成8000端口的从服务器

 以上就是redis生产集群的部署

如有错误欢迎各位大佬批评指正,我们共同进步

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

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

相关文章

ai绘画二次元软件免费的哪个好?这些二次元ai绘画软件比较好

小伙伴好呀,今天我要和你们分享一个超酷的话题——ai绘画二次元作品!是不是感觉很时髦?没错,现在我们不再局限于传统的绘画方式,而是可以通过ai技术来创造出令人赞叹的二次元世界。你不需要成为一名艺术大师&#xff0…

从文档智能开始洞察一切

文档智能 Document Intelligence 即使在当今数字至上的时代,许多交易仍依赖于发票、合同、法律文件、员工记录、财务报表等纸质文件。当企业希望对纸质记录进行数字化处理,以便搜索、保存和提取有价值的数据以用于决策和市场开拓,AI支持的文…

【教学类-36-05】动物头饰制作2.0(midjounery动物简笔画四图)一页两种动物

作品展示 背景需求: 头饰1.0的教学实践发现,完全可以利用裁剪的边缘纸条作为头饰的套环。因此重新设计word模板,合理布局图案位置,设计了一页2份的头饰。 原来样式:一页一份动物(4个) 现在样式…

16-Linux背景知识

目录 1.Linux是什么? 2.Unix & Linux 发展历程图 3.Linux 发行版 PS:CentOS 和 RedHat 的关系 4.关于 Linux 学习什么? 4.1.基础命令(重点) PS:使用命令相比于使用图形界面的主要好处 4.2.系统编程 &…

IP地址定位在电商行业中的应用

最新数据显示,随着电商行业的快速发展越来越多的企业开始将IP地址定位技术应用于其业务中。IP地址定位是一种利用互联网上的IP地址来确定用户地理位置的技术它通过识别用户的IP地址,从而可以实时追踪和定位他们的位置。 在电商行业中,IP地址定…

Docker 搭建sonarqube,并集成阿里P3C规则

简介 本文安装的sonarqube是7.6-community版本,未安装最新版是因为7.9之后不再支持mysql。如果你安装的是其他版本的sonarqube,那么不要使用插件包中的插件,会有版本兼容性问题。 插件 插件包 插件包中包含java语音插件,汉化插…

linux下postgresql的安装和部署

1.官网下载安装包 PostgreSQL: File Browser 2. 下载成功后上传到Linux服务器 3.解压文件 tar -zxvf postgresql-14.5.tar.gz 4.编译(后边的地址指定的就是安装数据库目录) ./configure --prefix/usr/local/postgresql 出现异常:configure: error: readline lib…

Static Timing Analysis for Nanometer Designs A Practical Approach

分享电子书籍:静态时序分析圣经 Static Timing Analysis for Nanometer Designs A Practical Approach 1 setup time Setup time (建立时间)是数据信号(D)在时钟事件(这里以时钟上升沿为例)发生之前保持稳定的最小时间。以便时钟可靠地对数据进行采样。适用于同步电路,如触…

如何制作3D虚拟人物?这篇文章告诉你

3D虚拟人物制作是一种利用计算机技术来创建并模拟逼真的虚拟角色的过程。随着科技的不断发展和创新,3D虚拟人物制作在影视特效、游戏开发、虚拟主播、辅助医疗等领域得到了广泛应用和重视。 3D虚拟人物制作是一项复杂而精细的工作。它需要具备扎实的绘画基础和美学…

如何组织一次有价值的业务巡检

1.背景 随着业务的快速迭代,开发自测需求与QA测试的需求比例相当,对于开发自测的需求,需求质量我们无法把控,并且随着自测需求的增多,QA对业务的熟悉程度也会出现断层; 部分业务整体已趋于稳定&#xff0c…

如何在Microsoft Excel中使用RANK函数快速计算排名

Excel 中的 RANK 函数是一个内置的统计函数,它返回给定数字数组中数值的秩。根据特定数据点相对于列表中其他值的大小,将等级分配给该数据点。 RANK 的公式是:=RANK(number,ref,[order]),该函数接受两个强制参数 number 和 ref,第三个参数 order 是可选的,其中: number…

JMeter定时器使用小结

目录 前言: 一、定时器的作用域 二、定时器的作用 1、BeanShell定时器(BeanShell Timer) 2、固定吞吐量定时器(Constant Throughput Timer) 3、JSR223定时器(JSR223 Timer) 4、泊松随机定…

python接口自动化(十五)--参数关联接口(详解)

简介 我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的Jenkins-Crumb,获取到这个Jenkins-Crumb,就可以通过传这个任务Jenkins-Crumb继续操作这个新建的任务。 …

Vue3 动态组件

父组件 <template><div><h1>动态组件</h1><ul class"ul"><li :class"{ actived: index isactive }" click"changeCur(index)" v-for"(item, index) in list" :key"item.name">{{item…

Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch

文章目录 1 前言2 Elasticsearch 安装3 数据格式4 倒排索引5 常用HTTP请求操作Elasticsearch5.1 创建索引5.2 查询索引信息5.3 删除索引5.4 创建/修改文档5.5查找文档5.6局部修改文档5.7删除文档5.8分页查询 1 前言 Elastic Stack 核心产品包括 Elasticsearch【存储数据】、Ki…

行云管家堡垒机和传统堡垒机的区别简单讲解

据统计&#xff0c;70%以上的IT故障其实都是内部人为引起的&#xff0c;例如账号密码管理不规范、资产授权不清晰、违规执行高危敏感命令等&#xff0c;这意味着信息化安全管理首先要解决的是加强内部信息安全管控。而加强内部信息安全管控就需要用到运维审计产品&#xff0c;也…

Bito - 超越Copilot的一款神级插件

文章目录 01 引言02 Bito的安装与使用2.1 安装Bito2.2 注册并创建工作空间2.3 使用方式 03 其它3.1 插件支持的平台3.2 文档 04 文末 01 引言 Bito IDEA插件地址&#xff1a;https://plugins.jetbrains.com/plugin/18289-bito–gpt-4–chatgpt-to-write-code-explain-code-crea…

合作、参与、让开源更易用 | 亚马逊的开源文化

JAX 是一种越来越流行的库&#xff0c;它支持原生 Python 或 NumPy 函数的可组合函数转换&#xff0c;可用于高性能数值计算和机器学习研究。JAX 提供了编写 NumPy 程序的能力&#xff0c;这些程序可以使用 GPU/TPU 自动差分和加速&#xff0c;从而形成了更灵活的框架来支持现代…

举例说明什么是前馈神经网络

前馈神经网络&#xff08;Feedforward Neural Network&#xff09;是一种最基本的人工神经网络结构&#xff0c;它由多个层次的神经元组成&#xff0c;这些神经元间具有相互连接的权重。数据从输入层进入&#xff0c;然后逐层传播&#xff0c;最后到达输出层。在这个过程中&…

基于ava+Swing+Mysql图书信息管理系统

基于JavaSwingMysql图书信息管理系统 一、系统介绍二、功能展示1.主页2.新增图书信息3.删除图书信息 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看图书列表、新增图书信息、删除图书信息 运行环境&#xff1a;eclipse、idea、jdk1.8 二、功能展示…