linux搭建redis集群
创始人
2025-05-29 22:00:36
0

使用阿里云主机搭建,一台阿里云模拟6个节点,3主3从。
下面开始搭建,不用动脑子,跟着复制粘贴即可

cd /opt
//创建集群目录
mkdir redis_cluster
//进入redis_cluster目录
cd redis_cluster
//下载redis安装包
wget http://download.redis.io/releases/redis-5.0.9.tar.gz
//解压redis安装包
tar -zxvf redis-5.0.9.tar.gz
cd redis-5.0.9
//编译redis
make && make install
//编译完成,修改目录名称
mv redis-5.0.9 7001
//清空redis.conf配置文件
cd 7001
cat /dev/null > redis.conf//编辑redis.conf文件,添加以下配置# 端口7001,7002,7003,7004,7005,7006 
port  7001
# 默认ip为127.0.0.1,如果用多台机器搭建集群,这个地方需要改成实际的ip
bind 127.0.0.1
# redis后台运行
daemonize yes
# pidfile文件对应7001,7002,7003,7004,7005,7006
pidfile /var/run/redis_7001.pid
# 开启集群  把注释#去掉
cluster-enabled  yes
# 集群的配置  配置文件首次启动自动生成7001,7002,7003,7004,7005,7006
cluster-config-file  nodes_7001.conf
# 请求超时  默认15秒,可自行设置
cluster-node-timeout  15000
# aof日志开启  有需要就开启,它会每次写操作都记录一条日志
appendonly  yes
# 错误日志,7001,7002,7003,7004,7005,7006。记得改
logfile /opt/redis_cluster/7001/redis_log.log

将7001,在当前目录复制5份,分别命名为7002,7003,7004,7005,7006
分别启动6台redis节点

//替换7001为7002,7003,7004,7005,7005
/opt/redis_cluster/7001/src/redis-server /opt/redis_cluster/7001/redis.conf

查看是否启动成功

ps -ef|grep redis

看到以下输出,说明6个节点全部启动成功

root      7796     1  0 22:15 ?        00:00:01 /opt/redis_cluster/7002/src/redis-server 127.0.0.1:7002 [cluster]
root      7825     1  0 22:15 ?        00:00:01 /opt/redis_cluster/7003/src/redis-server 127.0.0.1:7003 [cluster]
root      7854     1  0 22:16 ?        00:00:01 /opt/redis_cluster/7004/src/redis-server 127.0.0.1:7004 [cluster]
root      7883     1  0 22:16 ?        00:00:01 /opt/redis_cluster/7005/src/redis-server 127.0.0.1:7005 [cluster]
root      7912     1  0 22:16 ?        00:00:01 /opt/redis_cluster/7006/src/redis-server 127.0.0.1:7006 [cluster]
root      7996     1  0 22:16 ?        00:00:01 /opt/redis_cluster/7001/src/redis-server 127.0.0.1:7001 [cluster]

使用redis-cli命令创建集群

redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1

可能会报错,如下:

在这里插入代码片

该报错说明缺少ruby环境,redis集群的安装需要依赖ruby环境
redis脚本执行需要依赖ruby环境

yum -y install ruby ruby-devel rubygems rpm-build

看到如下日志输出,即为安装ruby成功

//省略大部分日志,只保留末尾的日志..
Installed:rpm-build.x86_64 0:4.11.3-48.el7_9   ruby.x86_64 0:2.0.0.648-39.el7_9   ruby-devel.x86_64 0:2.0.0.648-39.el7_9   rubygems.noarch 0:2.0.14.1-39.el7_9  Dependency Installed:bzip2.x86_64 0:1.0.6-13.el7                    elfutils.x86_64 0:0.176-5.el7                       gdb.x86_64 0:7.6.1-120.el7                         libyaml.x86_64 0:0.1.4-11.el7_0                perl-Thread-Queue.noarch 0:3.02-2.el7               ruby-irb.noarch 0:2.0.0.648-39.el7_9               ruby-libs.x86_64 0:2.0.0.648-39.el7_9          rubygem-bigdecimal.x86_64 0:1.2.0-39.el7_9          rubygem-io-console.x86_64 0:0.4.2-39.el7_9         rubygem-json.x86_64 0:1.7.7-39.el7_9           rubygem-psych.x86_64 0:2.0.0-39.el7_9               rubygem-rdoc.noarch 0:4.0.0-39.el7_9               unzip.x86_64 0:6.0-24.el7_9                   Complete!

继续执行redis-cli命令创建集群

redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1

看到以下输出,即为redis集群开始搭建

>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 28d9b2f458df1ab8e96ad5129b84069ea7481e45 127.0.0.1:7001slots:[0-5460] (5461 slots) master
M: 94dbde626faadff257bacdb83f2e12178bfba4f2 127.0.0.1:7002slots:[5461-10922] (5462 slots) master
M: 3d30f0bc0c1111b27ac417b76fbbe8a13aac67b8 127.0.0.1:7003slots:[10923-16383] (5461 slots) master
S: 1166dfccde9774bfd7d3ecfe027a192e33ffd22a 127.0.0.1:7004replicates 94dbde626faadff257bacdb83f2e12178bfba4f2
S: 11541027a13b57be07e34bcbb1261d29a70bec59 127.0.0.1:7005replicates 3d30f0bc0c1111b27ac417b76fbbe8a13aac67b8
S: c8fe97a667e8d999cb0976b8fc8608edf215f0fc 127.0.0.1:7006replicates 28d9b2f458df1ab8e96ad5129b84069ea7481e45
Can I set the above configuration? (type 'yes' to accept): yes

输入yes,开始创建集群
看到如下日志,说明redis集群搭建成功

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

连接redis集群看看效果,登录7001节点

//-c : 连接redis集群
redis-cli -h 127.0.0.1 -c -p 7001

设置一个String键值对

127.0.0.1:7001> set testKey testValue
-> Redirected to slot [11136] located at 127.0.0.1:7003
OK
127.0.0.1:7003> 

可以看到我们从7001节点上执行的set命令,redis集群给我们重定向到了7003节点上。这个原因是:redis集群是用哈希槽存储数据的,一共16384个哈希槽,分布在6个节点上。每次set数据,redis会使用crc16算法计算key应该被分配到哪个哈希槽上,然后会直接重定向到哈希槽对应的节点上

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...