Linux环境redis集群搭建「建议收藏」

(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005 1、安装redis上传服务器,解压,编译

大家好,又见面了,我是你们的朋友全栈君。

(要让集群正常工作至少需要3个主节点,在这里我们要创建6redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)

127.0.0.1:7000
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

 

1、安装redis

上传服务器,解压,编译

tar -zxvf redis-3.2.1.tar.gz

cd redis-3.2.1

make

编译后

cd src

复制

redis-server

redis-cli

两个文件

2、创建集群目录

建立集群对应文件夹redisCluster

在这个文件夹中建6个子文件夹分别为r7000r7001r7002r7003r7004r7005

将第一步复制的文件粘贴在上述6个子文件夹中,并授权

chmod 775 redis-cli

chmod 775 redis-server

再每个子文件夹中创建文件redis.conf

文件内容

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

daemonize yes

bind 192.168.*.*
protected-mode no

#这两个配置不加上,其他机器无法访问

每个文件的端口号都不一样,分别是700070017002700370047005

3、分别启动这六个redis实例

到对应文件夹中执行

./redis-server redis.conf

查询redis进程如下

[root@apec-001 redis]# ps -ef|grep redis

root     11092     1  0 14:35 ?        00:00:00 ./redis-server *:7000 [cluster]

root     11296     1  0 14:46 ?        00:00:00 ./redis-server *:7001 [cluster]

root     11403     1  0 14:53 ?        00:00:00 ./redis-server *:7002 [cluster]

root     11441     1  0 14:55 ?        00:00:00 ./redis-server *:7003 [cluster]

root     11486     1  0 14:57 ?        00:00:00 ./redis-server *:7004 [cluster]

root     11532     1  0 14:59 ?        00:00:00 ./redis-server *:7005 [cluster]

root     11545 11135  0 15:00 pts/2    00:00:00 grep –color=auto redis

 

4、创建redis集群

在安装路径的src文件夹下执行

./redis-trib.rb  create –replicas 1 127.0.0.1:7000 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

[root@apec-001 src]# ./redis-trib.rb create –replicas 1 127.0.0.1:7000 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

/usr/bin/env: ruby: No such file or directory

报错:/usr/bin/env: ruby: No such file or directory

因为是执行的ruby的脚本,需要ruby的环境

安装ruby环境

[root@apec-001 src]# yum install ruby

再次执行创建集群命令

[root@apec-001 src]# ./redis-trib.rb create –replicas 1 127.0.0.1:7000 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

/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require’: cannot load such file — redis (LoadError)

        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require’

        from ./redis-trib.rb:25:in `<main>’

报错cannot load such file — redis (LoadError)…

缺少rubygems组件,使用yum安装

[root@apec-001 src]# yum install rubygems

再次执行创建集群命令

 

[root@apec-001 src]# ./redis-trib.rb create –replicas 1 127.0.0.1:7000 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

/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require’: cannot load such file — redis (LoadError)

        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require’

        from ./redis-trib.rb:25:in `<main>’

缺少redisruby的接口,使用gem 安装

gem install redis

再次执行创建集群命令后,根据提示输入yes后集群创建成功

[root@apec-001 src]# ./redis-trib.rb create –replicas 1 192.168.8.21:7000 192.168.8.21:7001 192.168.8.21:7002 192.168.8.21:7003 192.168.8.21:7004 192.168.8.21:7005

>>> Creating cluster

>>> Performing hash slots allocation on 6 nodes…

Using 3 masters:

192.168.8.21:7000

192.168.8.21:7001

192.168.8.21:7002

Adding replica 192.168.8.21:7003 to 192.168.8.21:7000

Adding replica 192.168.8.21:7004 to 192.168.8.21:7001

Adding replica 192.168.8.21:7005 to 192.168.8.21:7002

M: ef86d6276bb1a8bbab07a1bd4ff8dc3f54ea73a1 192.168.8.21:7000

   slots:0-5460 (5461 slots) master

M: 087d6d2f129f00262444d5bfc012b51239ee1636 192.168.8.21:7001

   slots:5461-10922 (5462 slots) master

M: 67bc3416a311770682abaffde395fbfa34d7b5b0 192.168.8.21:7002

   slots:10923-16383 (5461 slots) master

S: 22dceae7e42ff41e098854c476ec0af27a2cbfbc 192.168.8.21:7003

   replicates ef86d6276bb1a8bbab07a1bd4ff8dc3f54ea73a1

S: 3231ff554f46b0310db5ece8a589be96b3098bed 192.168.8.21:7004

   replicates 087d6d2f129f00262444d5bfc012b51239ee1636

S: 167b9645c6f1f347363c4f397c84eca666bd0456 192.168.8.21:7005

   replicates 67bc3416a311770682abaffde395fbfa34d7b5b0

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 192.168.8.21:7000)

M: ef86d6276bb1a8bbab07a1bd4ff8dc3f54ea73a1 192.168.8.21:7000

   slots:0-5460 (5461 slots) master

M: 087d6d2f129f00262444d5bfc012b51239ee1636 192.168.8.21:7001

   slots:5461-10922 (5462 slots) master

M: 67bc3416a311770682abaffde395fbfa34d7b5b0 192.168.8.21:7002

   slots:10923-16383 (5461 slots) master

M: 22dceae7e42ff41e098854c476ec0af27a2cbfbc 192.168.8.21:7003

   slots: (0 slots) master

   replicates ef86d6276bb1a8bbab07a1bd4ff8dc3f54ea73a1

M: 3231ff554f46b0310db5ece8a589be96b3098bed 192.168.8.21:7004

   slots: (0 slots) master

   replicates 087d6d2f129f00262444d5bfc012b51239ee1636

M: 167b9645c6f1f347363c4f397c84eca666bd0456 192.168.8.21:7005

   slots: (0 slots) master

   replicates 67bc3416a311770682abaffde395fbfa34d7b5b0

[OK] All nodes agree about slots configuration.

>>> Check for open slots…

>>> Check slots coverage…

[OK] All 16384 slots covered.

5、测试

使用redis-cli命令进入集群环境

./redis-cli -c -p 7000

 

 nodes.conf文件内容

5e21c3a40f5b875d1f46724febc91059ccf3f36c 127.0.0.1:7004 slave 00158021c8af59f49ce83605601d79ef69dfb515 0 1476083335844 5 connected

bebc7ad0769b63d5dad22f59cf7e11e8eff8142e 127.0.0.1:7003 slave 2102328b7c064ece181bf431ae983f936770aef6 0 1476083334841 4 connected

d264a13fb4968cd93c3b700050e38c16000ee0ed 127.0.0.1:7005 slave 086e344b0e6fdee5e0e896c040aadd2cef32f6d9 0 1476083333841 6 connected

086e344b0e6fdee5e0e896c040aadd2cef32f6d9 127.0.0.1:7002 master – 0 1476083335744 3 connected 10923-16383

2102328b7c064ece181bf431ae983f936770aef6 127.0.0.1:7000 myself,master – 0 0 1 connected 0-5460

00158021c8af59f49ce83605601d79ef69dfb515 127.0.0.1:7001 master – 0 1476083334341 2 connected 5461-10922

vars currentEpoch 6 lastVoteEpoch 0

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127481.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月16日 下午9:40
下一篇 2022年4月16日 下午10:00


相关推荐

  • Java实例变量和类变量

    Java实例变量和类变量Java 程序的变量大体可分为成员变量和局部变量 其中局部变量可分为如下 3 类 形参 在方法签名中定义的局部变量 由方法调用者负责为其赋值 随方法的结束而消亡 方法内的局部变量 在方法内定义的局部变量 必须在方法内对其进行显示初始化 这种类型的局部变量从初始化完成后开始生效 随方法的结束而消亡 代码块的局部变量 在代码块内定义的局部变量 必须在代码块内对其进行显式初始化 这种类型的局部变量从初始化

    2026年3月26日
    2
  • 阵列信号基础之1:MUSIC 算法

    阵列信号基础之1:MUSIC 算法无线信道参数估计算法对通信系统分析之前 首先需要建立一个能够完整反映该系统的传输信道的模型 其模型中的参数包括接收端接收信号的时延 发射端和接收端的联合方向分布等 获取这些参数的过程就是无线信道参数估计的过程 方法可以大致分为三类 谱估计算法 多重信号分类法 参数子空间估计算法 旋转不变技术估计信号参数算法 确定性参数估计算法 期望最大算法以及演进的空间交替

    2026年3月19日
    2
  • [NLP自然语言处理]谷歌BERT模型深度解析

    [NLP自然语言处理]谷歌BERT模型深度解析我的机器学习教程 美团 算法工程师带你入门机器学习已经开始更新了 欢迎大家订阅 任何关于算法 编程 AI 行业知识或博客内容的问题 可以随时扫码关注公众号 图灵的猫 加入 学习小组 沙雕博主在线答疑 此外 公众号内还有更多 AI 算法 编程和大数据知识分享 以及免费的 SSR 节点和学习资料 其他平台 知乎 B 站 也是同名 图灵的猫 不要迷路哦 BERT 模型代码已经发布

    2026年3月26日
    2
  • 用C++程序理解汉字的机内码表示

    用C++程序理解汉字的机内码表示汉字的编码是很多初学者不容易搞不明白的事情 最早的汉字字符集是 GB2312 80 收入汉字 6763 个 符号 715 个 总计 7478 个字符 大陆普遍使用的简体字字符集 本文借助于一个能输出这些字符的简单的 C 程序 体验汉字字符的编码 先简介一下 GB2312 80 的概况 1 区位码 每个汉字及符号都有一个区位码 即每个汉字有一个区号 两位十进制 和一个位号 两位十进制 一共分了 94 个区 每

    2025年8月24日
    97
  • this关键字、this关键字应用

    this关键字、this关键字应用一 this 关键字 1 需求 使用 java 类描述一个动物 1 问题分析 存在同名的成员变量与局部变量时 在方法的内部访问的是局部变量 java 采取的是就近原则的机制访问的 2 内存分析 2 this 关键字代表了所属函数的调用者对象 解释 哪个对象调用这个函数 this 就代表哪个对象 3 this 关键字作用 1 如果存在同名成员变量与局部变量时 在方法内部默认是访问

    2026年3月16日
    2
  • Object转Map和Map转Object(对象转map,map转对象)

    Object转Map和Map转Object(对象转map,map转对象)第一种方法:fastJosnimportcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;Object转MapFindArchiveDtofindArchiveDto=newFindArchiveDto();findArchiveDto.setContractStatus(“降龙”);…

    2022年4月28日
    439

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号