环境:centos 7

一、编译及安装redis源码

源码地址:redis版本发布列表

cd redis-3.2.8
sudo make && make install

二、创建节点

创建Redis-Cluster 文件夹,并创建7000-7005共6个文件夹

复制源码中的redis.conf文件并修改以下内容后分别放入7000-7005文件夹

【7000】示例

bind 192.168.1.105
port 7000
cluster-enabled yes
cluster-config-file /home/jabben/Redis-Cluster/7000/nodes-7000.confpidfile /home/jabben/Redis-Cluster/7000/redis_7000.pid
cluster-node-timeout 5000
daemonize yes

分别启动6个Redis节点:

redis-server 7000/redis.conf
redis-server 7001/redis.conf
redis-server 7002/redis.conf
redis-server 7003/redis.conf
redis-server 7004/redis.conf
redis-server 7005/redis.conf

查看redis进程是否已经启动:

ps -ef | grep redis

三、创建集群

复制redis-trib.rb文件到bin目录下

cd /home/jabben/Redis-Cluster/Source/redis-3.2.8/src
sudo cp redis-trib.rb /usr/local/bin/

安装ruby环境

yum install ruby

安装rubygems组件

yum install rubygems

安装gem-redis

gem install redis

创建集群

redis-trib.rb create --replicas 1 192.168.1.105:7000 192.168.1.105:7001 192.168.1.105:7002 192.168.1.105:7003 192.168.1.105:7004 192.168.1.105:7005

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.105:7000
192.168.1.105:7001
192.168.1.105:7002
Adding replica 192.168.1.105:7003 to 192.168.1.105:7000
Adding replica 192.168.1.105:7004 to 192.168.1.105:7001
Adding replica 192.168.1.105:7005 to 192.168.1.105:7002
M: 339aafedd6bd7f6bd5cd98407f7ebe8cb0c4efbd 192.168.1.105:7000slots:0-5460 (5461 slots) master
M: 7bd0b20971d5fc929f8454c6ff388f780cc70e77 192.168.1.105:7001slots:5461-10922 (5462 slots) master
M: aaa4b5109c5bcf1aa868621f59b51fb4d6feef9c 192.168.1.105:7002slots:10923-16383 (5461 slots) master
S: e731c1918fad61f972fbca4ab6523da1d9f827af 192.168.1.105:7003replicates 339aafedd6bd7f6bd5cd98407f7ebe8cb0c4efbd
S: c16b520a5075b0fee0840cc26cf1f7f27bad8e45 192.168.1.105:7004replicates 7bd0b20971d5fc929f8454c6ff388f780cc70e77
S: 990a4e7a2831d8d9ba8f9835557be6a394d393a4 192.168.1.105:7005replicates aaa4b5109c5bcf1aa868621f59b51fb4d6feef9c
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.1.105:7000)
M: 339aafedd6bd7f6bd5cd98407f7ebe8cb0c4efbd 192.168.1.105:7000slots:0-5460 (5461 slots) master1 additional replica(s)
S: 990a4e7a2831d8d9ba8f9835557be6a394d393a4 192.168.1.105:7005slots: (0 slots) slavereplicates aaa4b5109c5bcf1aa868621f59b51fb4d6feef9c
S: e731c1918fad61f972fbca4ab6523da1d9f827af 192.168.1.105:7003slots: (0 slots) slavereplicates 339aafedd6bd7f6bd5cd98407f7ebe8cb0c4efbd
M: aaa4b5109c5bcf1aa868621f59b51fb4d6feef9c 192.168.1.105:7002slots:10923-16383 (5461 slots) master1 additional replica(s)
S: c16b520a5075b0fee0840cc26cf1f7f27bad8e45 192.168.1.105:7004slots: (0 slots) slavereplicates 7bd0b20971d5fc929f8454c6ff388f780cc70e77
M: 7bd0b20971d5fc929f8454c6ff388f780cc70e77 192.168.1.105:7001slots:5461-10922 (5462 slots) master1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

至此集群搭建完毕

四、测试

使用redis-cli客户端连接到刚创建的集群

redis-cli -c -h 192.168.1.105 -p 7000

查询集群相关信息

192.168.1.105:7000> CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_sent:2645
cluster_stats_messages_received:2645

【数据写入测试】

192.168.1.105:7000> set name zhangsan
-> Redirected to slot [5798] located at 192.168.1.105:7001
OK
192.168.1.105:7001> get name
"zhangsan"

【集群线性扩展】

 待完善

【失效转移】

 待完善

五、集群相关常用命令

链接:https://redis.io/commands

CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
//节点
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点。
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
//键
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。
//新增
CLUSTER SLAVES node-id 返回一个master节点的slaves 列表

转载于:https://www.cnblogs.com/Jabben_Yi/p/6696837.html

Linux环境下Redis集群实践相关推荐

  1. Linux环境下Spark集群搭建

    Spark是通用的基于内存计算的大数据框架,可以和hadoop生态系统很好的兼容,以下来部署Spark集群 集群环境:3节点 Master:bigdata1 Slaves:bigdata2,bigda ...

  2. Centos7环境下etcd集群的搭建

    Centos7环境下etcd集群的搭建一.简介"A highly-available key value store for shared configuration and service ...

  3. Linux中的redis集群搭建

    看在多的书,若果不实践一次,我觉得效果并不好,只有自己完完整整的做一次! 所以今天打算搭建一个redis集群来练练手~! 1.Linux CentOS  , redis-3.2.4 版本 2.配置环境 ...

  4. win10下Redis集群搭建的详细步骤

    win10下安装Redis集群,目前已经安装成功,记录下安装过程. 1)准备安装所需要的4个组件: Redis.Ruby语言运行环境.Redis的Ruby驱动redis-3.2.2.gem.创建Red ...

  5. docker redis 删除集群_基于Docker的Redis集群实践

    单机版的Redis相信大家都比较熟悉了,这里介绍几种Redis的集群模式,并结合Docker来进行实践操作 abstract.png 准备工作 通过Docker下载最新的Redis镜像 # 获取red ...

  6. Windows下Redis集群搭建

    上一篇文章中介绍了Windows下使用cygwin搭建redis单节点,这一篇文件将在上一篇文章的基础上搭建redis集群. 1. 在安装redis的目录的同级目录下新建6个文件夹,7000,7000 ...

  7. Linux中搭建Redis集群及redis集群配置常见问题总结

    Redis集群搭建请仔细阅读文档,100%成功率. 环境说明:本案例采用centos7+Redis6.2.5版本 1.Redis概述-什么是redis? Redis 是完全开源免费的,遵守BSD协议, ...

  8. redis 集群环境搭建-redis集群管理

    集群架构 (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redi ...

  9. 阿里云下Redis集群报Waiting for the cluster to join...和CLUSTERDOWN Hash slot not served的坑(网上搜了好多没看到什么能基本解决的)

    1 修改etc下面的redis.conf 改成bind 0.0.0.0 如果改成阿里云下的Ip redis服务将开启不了 2.在阿里云下配置12个redis集群端口安全组 3.输入redis-cli ...

最新文章

  1. 微信小程序框架封装登录,网络请求等公共模块及调用示例
  2. Android 系统搜索框(有浏览记录)
  3. 顺序栈实现表达式求值(C语言实现)【栈】
  4. vim技巧之删除引号之间的的快捷键
  5. C指针原理(9)-C内嵌汇编
  6. curl -s http://192.168.232.191/openapi/v2 | jq 不显示JSON格式的文档说明
  7. 火狐浏览器jtopo节点切换tab后消失报错NS_ERROR_FAILURE的解决
  8. 人类历史上有哪些逆天的文物?
  9. 四元数左乘右乘_复数/四元数和转动/转动群
  10. python字符串转化为数字信号_用python实现简单的数字信号软件滤波处理
  11. 面试官:谈谈你对IO流和NIO的理解
  12. Python实现页面置换算法
  13. linux ubuntu extmail,利用Ubuntu ExtMail 30分钟配置好一个功能强大的邮件
  14. 迁移oracle数据库,简简单单的Oracle数据库迁移方法
  15. 期刊论文发表有哪些方法
  16. 当编程语言都变成女孩子
  17. MYSQL设置初始密码
  18. C++编译器如何实现异常处理
  19. 电路抗干扰设计——非常详细
  20. 2021年黄石二中高考成绩查询,黄石二中2019高考喜报成绩、一本二本上线人数情况...

热门文章

  1. 来源oa_骨性关节炎(OA)的初期管理——早点行动起来
  2. Struts2-result类型
  3. 算法竞赛入门经典读书笔记(二)7.1简单枚举
  4. UML几个关系图表示
  5. JUC并发编程八 并发架构--park,unpark
  6. rabbitmq一:基本概念
  7. mybaits二十五:mybatis整合ehcache
  8. 运算方法和运算部件三
  9. java操作ad域 免证书
  10. 团队作业——随堂小测(同学录)