单机模拟集群(三主两从)

news2024/11/25 2:56:17

引言

操作系统环境:Ubuntu 20.04
Redis版本:6.2.8

准备工作

如果已经安装过了,找到自己的安装路径。如果没有安装过,去官网下载 当前最新版本是7.0,我这里用的是6.0,下载 redis-6.2.8.tar.gz,拷贝到自己的虚拟机或者云服务器。

tar -zxvf redis-6.2.8.tar.gz 解压
cd redis-6.2.8
make && make install (注意是root权限)

目标

在一台机器通过监听不同的port模拟集群(三台主服务器,每台主服务器有两个从服务器,总共9台服务器)
在这里插入图片描述

1、在redis的目录中创建redis_cluster文件夹

cd redis-6.2.8
mkdir redis_cluster

2、 在redis_cluster文件夹中分别创建端口号的文件夹(6390-6398)

mkdir 6390 6391 6392 6393 6394 6395 6396 6397 6398

3、以6390为例,在6390目录下创建文件redis.conf,并添加如下配置

注意:需要在步骤二创建的每个文件夹下创建配置文件,并做相应修改。

touch redis.conf

#端口号
port 6390
#默认ip为127.0.0.1,需要改为其他节点机器可以访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
bind 192.168.60.69
#redis后台运行
daemonize yes
#pidfile文件对应6390,6391,6392…
pidfile /var/run/redis_6390.pid
#开启集群
cluster-enabled yes
#集群的配置,配置文件首次启动自动生成6390,6391,6392…
cluster-config-file nodes_6390.conf
#请求超时,默认15秒,可自行设置
cluster-node-timeout 10100
#aof日志开启,有需要就开启,它会每次写操作都记录一条日志
appendonly yes

4、分别向分别向6381-6388目录copy一份配置文件

cp -r redis.conf ../6391
cp -r redis.conf ../6392
cp -r redis.conf ../6393
cp -r redis.conf ../6394
cp -r redis.conf ../6395
cp -r redis.conf ../6396 
cp -r redis.conf ../6397
cp -r redis.conf ../6398

需要修改的配置:

port 639x  (根据端口号修改)
bind 127.0.0.1  我这里是本机模拟,写的本地地址,根据实际ip地址填写
pidfile /var/run/redis_639x.pid(根据端口号修改)
cluster-config-file nodes_639x.conf(根据端口号修改)

5. 启动Redis各个节点服务(一定要在src目录下启动,在其他地方无法启动)

./redis-server …/redis_cluster/6390/redis.conf
./redis-server …/redis_cluster/6391/redis.conf
./redis-server …/redis_cluster/6392/redis.conf
./redis-server …/redis_cluster/6393/redis.conf
./redis-server …/redis_cluster/6394/redis.conf
./redis-server …/redis_cluster/6395/redis.conf
./redis-server …/redis_cluster/6396/redis.conf
./redis-server …/redis_cluster/6397/redis.conf
./redis-server …/redis_cluster/6398/redis.conf

也可以写个脚本启动,就不用一个一个启动了:
vi cluster.sh

#!bin/bash
redis-server 6390/redis.conf
redis-server 6391/redis.conf
redis-server 6392/redis.conf
redis-server 6393/redis.conf
redis-server 6394/redis.conf
redis-server 6395/redis.conf
redis-server 6396/redis.conf
redis-server 6397/redis.conf
redis-server 6398/redis.conf

给脚本赋予执行权限 : chmod +x cluster.sh
运行脚本:./cluster.sh

6. 创建redis集群

因为redis最终是以数据库的形式的存在,原理和mysql一样,集群创建成功只能说明安装redis成功了,但是最终>
!!!注意还需要在redis的src目录下运行
当第一次运行的时候,才需要创建数据库,以后的每一次运行都不再需要了,直接启动集群即可

–cluster-replicas 2表示每个主节点有2个从节点

redis-cli --cluster create 127.0.0.1:6390 127.0.0.1:6391 127.0.0.1:6392 127.0.0.1:6393 127.0.0.1:6394 127.0.0.1:6395 127.0.0.1:6396 127.0.0.1:6397 127.0.0.1:6398 --cluster-replicas 2

注意:这里需要自己手动输入yes,如果超时了还没有输入,则会自动退出,需要再次创建!

看到以下信息说明创建redis集群搭建成功,且16384个槽位分配成功,:
M: eabfa31d4e7cefa01a64ec5e67ddba219ad74035 127.0.0.1:6390
   slots:[0-5460] (5461 slots) master
M: 2ac5623a741d707d4e2319795386d7e13b2ef575 127.0.0.1:6391
   slots:[5461-10922] (5462 slots) master
M: 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b 127.0.0.1:6392
   slots:[10923-16383] (5461 slots) master
S: 41fdf2a9bec000cb282bd9bc75a1aa7f33417889 127.0.0.1:6393
   replicates 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b
S: 15403c0a88c4ccf9ad2b67364588819621774085 127.0.0.1:6394
   replicates eabfa31d4e7cefa01a64ec5e67ddba219ad74035
S: 38ccc4d1ff1d7a3a31ed5ee805e5c479a6114588 127.0.0.1:6395
   replicates 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b
S: 6f9550397b996b1d53eaeb98d344cef3945ac482 127.0.0.1:6396
   replicates 2ac5623a741d707d4e2319795386d7e13b2ef575
S: 78be26f6bdaa88e96e61ba145ba4236f59e9c5bc 127.0.0.1:6397
   replicates 2ac5623a741d707d4e2319795386d7e13b2ef575
S: b6429d56397229322f3144b59b3c7e79904fa349 127.0.0.1:6398
   replicates eabfa31d4e7cefa01a64ec5e67ddba219ad74035
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
......
>>> Performing Cluster Check (using node 127.0.0.1:6390)
M: eabfa31d4e7cefa01a64ec5e67ddba219ad74035 127.0.0.1:6390
   slots:[0-5460] (5461 slots) master
   2 additional replica(s)
S: 78be26f6bdaa88e96e61ba145ba4236f59e9c5bc 127.0.0.1:6397
   slots: (0 slots) slave
   replicates 2ac5623a741d707d4e2319795386d7e13b2ef575
M: 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b 127.0.0.1:6392
   slots:[10923-16383] (5461 slots) master
   2 additional replica(s)
S: 6f9550397b996b1d53eaeb98d344cef3945ac482 127.0.0.1:6396
   slots: (0 slots) slave
   replicates 2ac5623a741d707d4e2319795386d7e13b2ef575
S: 15403c0a88c4ccf9ad2b67364588819621774085 127.0.0.1:6394
   slots: (0 slots) slave
   replicates eabfa31d4e7cefa01a64ec5e67ddba219ad74035
S: 38ccc4d1ff1d7a3a31ed5ee805e5c479a6114588 127.0.0.1:6395
   slots: (0 slots) slave
   replicates 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b
M: 2ac5623a741d707d4e2319795386d7e13b2ef575 127.0.0.1:6391
   slots:[5461-10922] (5462 slots) master
   2 additional replica(s)
S: b6429d56397229322f3144b59b3c7e79904fa349 127.0.0.1:6398
   slots: (0 slots) slave
   replicates eabfa31d4e7cefa01a64ec5e67ddba219ad74035
S: 41fdf2a9bec000cb282bd9bc75a1aa7f33417889 127.0.0.1:6393
   slots: (0 slots) slave
   replicates 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

可以看到:

  1. 127.0.0.1:6390 127.0.0.1:6391 127.0.0.1:6392 是三个主服务器
  2. 6394 和 6398 是6390的从服务器
  3. 6396 和 6397 是6391的从服务器
  4. 6393 和 6395 是6392的从服务器

7. 检查redis集群是否启动成功

ps -ef | grep redis

看到如下信息就说明集群启动成功了。

root 2418510 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6390 [cluster]
root 2418609 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6391 [cluster]
root 2418712 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6392 [cluster]
root 2418815 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6393 [cluster]
root 2419062 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6394 [cluster]
root 2419278 1 0 11:33 ? 00:00:00 ./redis-server 127.0.0.1:6395 [cluster]
root 2419440 1 0 11:33 ? 00:00:00 ./redis-server 127.0.0.1:6396 [cluster]
root 2419575 1 0 11:33 ? 00:00:00 ./redis-server 127.0.0.1:6397 [cluster]
root 2419749 1 0 11:33 ? 00:00:00 ./redis-server 127.0.0.1:6398 [cluster]

8. 集群状态查看及数据测试

进入redis的服务器客户端,也必须要在src目录下进行。其中,-c 表示以集群的方式启动节点,-p 是节点的端口

./redis-cli -c -p 6390

输入cluster info 查看集群状态
在这里插入图片描述
输入cluster nodes 查看集群各个节点主从关系
在这里插入图片描述
在这里插入图片描述

9. 退出

quit

10、注意

集群是去中心化的,从任意一个从节点,都可以访问到主节点。
集群的读写都走主节点

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

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

相关文章

CAPL学习之路-测试功能集函数(测试报告部分)

测试功能集函数用于测试用例的实现,主要使用场景在test module和test unit模块的capl中 。所以千万不要在网络节点的CAPL脚本中使用,不然会报错。比如TestWaitForTimeout()函数,等待指定的时间 在网络节点的capl脚本中使用时会报错: 在test module节点的capl脚本中使用时正…

SpreadJS集算表联动数据透视表,高效实现前端数据多维分析

在做一些财务、供应链、资产管理等系统时,由于业务人员线下都是采用Excel来完成的,因此就需要将Excel中业务人员使用的功能都能在Web端系统实现,整体上的实现方案有三种: 完全自研一套具备Excel功能的组件;使用成品软…

Linux-tar打包与解压命令

tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。 常用参数: -c&a…

布隆过滤器【美与不美之谈】

什么是布隆过滤器 布隆过滤器其实本质上来讲就是一种巧妙的数据结构,特点就是高效的插入和查询。 它能告诉我们:什么一定不存在,或者什么可能会存在 总结:布隆过滤器是概率性的。它只能告诉我们什么一定不存在,或者…

科技向“实”万物生长,2023年云计算五大技术趋势展望

科技云报道原创。 近日,全球最大的专业技术组织IEEE(电气电子工程师学会)发布了《IEEE全球调研:科技在2023年及未来的影响》。根据相关调研显示,云计算(40%)、5G(38%)、元宇宙(37%)将成为影响2023年最重要的技术,其中云计算位居首…

算法---模拟(2)

目录 一、模拟算法题目 (1)神奇的幻方 (2)Proceting the Flower (3)排座椅 (4)国王的游戏 (5)字典序最大的子序列 一、模拟算法题目 (1&…

Spring源码下载

一、Spring | Home 二、Projects->Spring Framework 三、点击小猫图片进入Spring Framework的代码仓 四、选择感兴趣的分支

如何实现高性能点赞(二)

1.3 Redis 的数据结构类型 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset&…

Mac M2芯 超详细k8s集群实战 - kubeadm

概述 我们准备搭建kubeadm的masterworker集群,实现k8s集群,master、worker在虚拟机上来执行,中间遇到了超级多的坑,都搞定了之后,在这里系统的总结一下,这也是一篇学习笔记。 这篇比较难搞,如…

【网络安全】Fastjson的反序列化漏洞复现

1.漏洞概述 Fastjson提供了autotype功能,允许用户在反序列化数据中通过“type”指定反序列化的类型,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时&…

qt简单UI使用

geometry设置窗口大小 font字体大小 text改文件名

本地使用隧道或代理访问云服务器数据库

本地使用代理访问云服务器数据库 场景: 项目的测试环境是部署至云服务器上的,有时候云服务器的项目测试出现了一些问题,为了方便复现就在本地直连云服务器的数据库(mysql服务器)。但是云服务器是有三台机子&#xff0…

性能测试工程师技术履历表

技术履历表 基本情况 姓名 XXX 年龄 26 性别 男 工作年限 3-4 岗位 性能测试工程师 毕业院校和专业 武汉软件工程职业学院 学历 大专 技能评价 1、熟悉基于Http,TCP等协议的脚本开发。 2、 熟练掌握:Loadrunner等压测工具。 3、 掌握Linu…

Echosync 一款优秀的文件夹同步和备份软件

Echosync 一款优秀的文件夹同步和备份软件 通过执行差异数据备份、文件同步,这样可以避免传递自上次备份以来所做的更改,Echosync能够检测到移动或重命名自上次备份的文件。 下载 Echosync 软件介绍 VHD中备份文件 你的文件可以保存到单个 VHD 文件…

RK3568 ov5695摄像头

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、什么是mipi接口?二、摄像头是如何把数据给到RK3568,又是如何处理硬件连接关系图:图像数据的来龙去脉代码路径三、如何移植修改设备树…

高通开发系列 - 数字和模拟codec驱动

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 MSM89XX音频硬件框架Linux kernel驱动LPASS的地址空间PM和PMI的区别PM8953简介Slave ID从设备idPM89xx中的模拟codec驱动准备codec的驱…

进程退出与等待

1️⃣ 进程退出 正常终止 main函数的返回调用exit_exit 异常终止 Ctrl c (信号终止) 1.main函数的返回就是return 0;程序退出这个在高级语言里面就学过了不多说。 2.exit(x)的使用如下 第一次测试:错误码与main函数里面打印的值。 第二次测试&#xf…

[oeasy]python0033_任务管理_jobs_切换任务_进程树结构_fg

查看进程 回忆上次内容 上次先进程查询 ps -elf 查看所有进程信息ps -lf 查看本终端相关进程信息 杀死进程 kill -9 PID 给进程发送死亡信号 运行多个 python3 show_time.py 的话 各个进程独立python3 show_time.py 大概 8M各占内存这些进程之间是什么关系呢?&…

秦海璐、宋轶现身,岳云鹏孙越成谜,央视春晚第一次彩排姗姗来迟

最近一段时间,全国各地的朋友都在积极行动,都想推迟成为小阳人的时间,却险些忘了一件大事。伴随着春节的临近,每年的央视春晚都倍受期待,今年当然也不例外,可是却一直没有央视春晚的消息。 就在大家都认为&…

利用adb查找手机定位,并且打开地图定位

可以使用 Android Debug Bridge (ADB) 工具来查找手机的位置信息。 首先,您需要确保手机已连接到电脑(内网穿透或者搭建虚拟局域网),并且已在手机上启用 USB 调试。然后,您可以在电脑的命令提示符下使用 ADB 命令来查询…