环境: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.conf
pidfile /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./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  192.168.1.105: 192.168.1.105: 192.168.1.105: 192.168.1.105: 192.168.1.105: 192.168.1.105:
>>> Creating cluster
>>> Performing hash slots allocation on nodes...
Using masters:
192.168.1.105:
192.168.1.105:
192.168.1.105:
Adding replica 192.168.1.105: to 192.168.1.105:
Adding replica 192.168.1.105: to 192.168.1.105:
Adding replica 192.168.1.105: to 192.168.1.105:
M: 339aafedd6bd7f6bd5cd98407f7ebe8cb0c4efbd 192.168.1.105:
slots:- ( slots) master
M: 7bd0b20971d5fc929f8454c6ff388f780cc70e77 192.168.1.105:
slots:- ( slots) master
M: aaa4b5109c5bcf1aa868621f59b51fb4d6feef9c 192.168.1.105:
slots:- ( slots) master
S: e731c1918fad61f972fbca4ab6523da1d9f827af 192.168.1.105:
replicates 339aafedd6bd7f6bd5cd98407f7ebe8cb0c4efbd
S: c16b520a5075b0fee0840cc26cf1f7f27bad8e45 192.168.1.105:
replicates 7bd0b20971d5fc929f8454c6ff388f780cc70e77
S: 990a4e7a2831d8d9ba8f9835557be6a394d393a4 192.168.1.105:
replicates 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:)
M: 339aafedd6bd7f6bd5cd98407f7ebe8cb0c4efbd 192.168.1.105:
slots:- ( slots) master
additional replica(s)
S: 990a4e7a2831d8d9ba8f9835557be6a394d393a4 192.168.1.105:
slots: ( slots) slave
replicates aaa4b5109c5bcf1aa868621f59b51fb4d6feef9c
S: e731c1918fad61f972fbca4ab6523da1d9f827af 192.168.1.105:
slots: ( slots) slave
replicates 339aafedd6bd7f6bd5cd98407f7ebe8cb0c4efbd
M: aaa4b5109c5bcf1aa868621f59b51fb4d6feef9c 192.168.1.105:
slots:- ( slots) master
additional replica(s)
S: c16b520a5075b0fee0840cc26cf1f7f27bad8e45 192.168.1.105:
slots: ( slots) slave
replicates 7bd0b20971d5fc929f8454c6ff388f780cc70e77
M: 7bd0b20971d5fc929f8454c6ff388f780cc70e77 192.168.1.105:
slots:- ( slots) master
additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.

至此集群搭建完毕

四、测试

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

redis-cli -c -h 192.168.1.105 -p 

查询集群相关信息

192.168.1.105:> CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:
cluster_slots_ok:
cluster_slots_pfail:
cluster_slots_fail:
cluster_known_nodes:
cluster_size:
cluster_current_epoch:
cluster_my_epoch:
cluster_stats_messages_sent:
cluster_stats_messages_received:

【数据写入测试】

192.168.1.105:> set name zhangsan
-> Redirected to slot [] located at 192.168.1.105:
OK
192.168.1.105:> 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 列表

Linux环境下Redis集群实践的更多相关文章

  1. Linux环境下Hadoop集群搭建

    Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...

  2. Windows及Linux环境搭建Redis集群

    一.Windows环境搭建Redis集群 参考资料:Windows 环境搭建Redis集群 二.Linux环境搭建Redis集群 参考资料:Redis Cluster的搭建与部署,实现redis的分布 ...

  3. Linux环境下SolrCloud集群环境搭建关键步骤

    Linux环境下SolrCloud集群环境搭建关键步骤. 前提条件:已经完成ZooKeeper集群环境搭建. 一.下载介质 官网下载地址:http://www.apache.org/dyn/close ...

  4. Linux环境下HDFS集群环境搭建关键步骤

    Linux环境下HDFS集群环境搭建关键步骤记录. 介质版本:hadoop-2.7.3.tar.gz 节点数量:3节点. 一.下载安装介质 官网下载地址:http://hadoop.apache.or ...

  5. Linux环境下ZooKeeper集群环境搭建关键步骤

    ZooKeeper版本:zookeeper-3.4.9 ZooKeeper节点:3个节点 以下为Linux环境下ZooKeeper集群环境搭建关键步骤: 前提条件:已完成在Linux环境中安装JDK并 ...

  6. Linux环境下nginx集群搭建

    #确保安装nginx,stream模块默认不安装的,需要手动添加参数:–with-stream, nginx1.9或以上版本 #nginx.conf文件中,添加以下内容(只供参考),这个不能放在htt ...

  7. linux环境(CentOS-6.7)下redis集群的搭建全过程

    linux环境下redis集群的搭建全过程: 使用mount命令将光盘挂载到/mnt/cdrom目录下: [root@hadoop03 ~]# mount -t iso9660 -o ro /dev/ ...

  8. Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)

    一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...

  9. CentOS下redis集群安装

    环境: 一台CentOS虚拟机上部署六个节点,创建3个master,3个slave节点 1.下载并解压 cd /root wget http://download.redis.io/releases/ ...

随机推荐

  1. (转)Thinkpad X1 Carbon 扩展硬盘

    http://tieba.baidu.com/p/5837920925 网上看到有人成功利用X1C空闲的4G模块来实现了扩充用的是东芝RC100或者建兴的T11 其实难点应该是2242这种尺寸的SSD ...

  2. Code First 不自动生成数据库

    工具--〉程序包管理器控制台 k1. 启用迁移: Enable-Migrations Enable-Migrations -ContextTypeName Mvc4WebSite.Models.Mvc ...

  3. Java开发经常容易犯的错误

    调用Set.addAll()方法时抛UnsupportedOperationException异常 上面的Set是Map中keySet的返回结果. 程序中这样两句代码运行时,抛UnsupportedO ...

  4. Unix/Linux系统的发展史

    Unix/Linux系统相信是学编程的人都认识这两个系统.我们知道Unix要钱,而Linux免费,而且这两者之间的发展史是什么样的,是不是两者就是同一个东西呢? 我将会以时间的发展过程来一步步的给大家 ...

  5. 【笔记】Python基础五:装饰器

    一,什么是装饰器 本质就是函数,功能是为其他函数添加附加功能 原则: 1,不修改被修饰函数的源代码 2,不修改被修饰函数的调用方式 例子: import time def timmer(func): ...

  6. springboot指定端口的三种方式

    第一配置文件中添加server.port=9090 第二在命令行中指定启动端口,比如传入参数一server. port=9000     java -jar bootsample. jar -- se ...

  7. 您可能不知道的CSS元素隐藏“失效”以其妙用

    您可能不知道的CSS元素隐藏“失效”以其妙用 by zhangxinxu from http://www.zhangxinxu.com地址:http://www.zhangxinxu.com/word ...

  8. Windows 窗体

    Windows系统,顾名思义,就是窗口系统,每一个程序都可以用窗口来展示,所以,为了展示窗口,需要多做一系列的工作,当然,也有纯控制台应用,就不用附带窗口了. 首先就是窗口程序的入口地址,与传统的in ...

  9. 区间求小于等于k的数字个数 hdu4177

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题目意思给出一个序列,叫我们求一个区间里面小于等于k的数字个数. 这里面我用分块和主席树两种方法 ...

  10. 虚拟网络学习笔记之一:VXLAN

    1. 什么是虚拟网络? 答:从架构角度考虑,我们可以采用与服务器虚拟化引入Hypervisor的方式一样,引入Nypervisor或者叫“虚拟网络管理平台”实现虚拟网络.虚拟网络必须像虚拟机一样,脱离 ...