Redis3.0.6集群搭建

创建一个RedisCluster之前,我们需要有一些以cluster模式运行的Redis实例,这是因为cluster模式下Redis实例将会开启cluster的特征和命令。

现在我有2台Vbox搭建的CentOS6虚拟机【CentOS1(192.168.56.101)和CentOS2(192.168.56.102)】,准备在此上搭建Redis集群。

由于最小的Redis集群需要3个Master节点,本次测试使用另外3个节点作为备份的节点(Replicas),于是此次搭建需要6个Redis实例。由于可在同一台机器上运行多个Redis实例,因此我将在CentOS1上运行以下实例:

?


1

2

3

192.168.56.101:7000

192.168.56.101:7001

192.168.56.101:7002

并在CentOS2上运行以下实例:

?


1

2

3

192.168.56.102:7003

192.168.56.102:7004

192.168.56.102:7005

1. 下载Redis,目前的stable版本为3.0.6:

http://redis.io/download

2. 安装Redis

?


1

2

3

tar zxvf redis-3.0.6.tar.gz

cd redis-3.0.6

make

安装完成后,redis-3.0.6/src文件夹下会出现redis-server、redis-cli等可执行文件,稍后将使用。

3. 修改配置文件

由于需要在CentOS1上运行多个实例,为了便于管理,在CentOS1上建立/home/user/Software/redis-cluster文件夹,并分别创建7000、7001和7002这三个子文件夹:

然后分别拷贝redis-3.0.6/redis.conf到这三个子文件夹中。redis.conf是redis服务器启动的必要配置文件,分别在这几个文件夹中打开该文件,修改以下选项(这几个选项是搭建Redis集群的必须选项),其它的保持默认即可:

?


1

2

3

4

5

6

#注意每个子文件夹下的配置中,端口号不同

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

在redis.conf中,有对这些选项的详细说明,这里不赘述。

最后拷贝redis-3.0.6/src/redis-server文件到这几个子文件夹中。

4. 启动Redis

在这3个文件夹中分别启动Redis:

?


1

./redis-server redis.conf

可以通过进程命令来查看启动结果

从每个实例的启动日志(redis.conf文件中的logfile选项可以配置日志文件)中,可以看到每一个节点都给自己分配了一个新的ID:

这个ID将被该Redis实例作为集群中的唯一名字永久使用,节点之间会互相记住这个名字。

5. 创建集群

在创建Redis集群前,在CentOS2机器中也需要按照步骤1~4完成相应的配置并运行Redis实例。

现在CentOS1上的3个Redis实例和CentOS2上的3个Redis实例都已经启动。目前这些实例虽然都开启了cluster模式,但是彼此还不认识对方,接下来可以通过Redis集群的命令行工具redis-trib.rb来完成集群创建。redis-trib.rb是一个Ruby写的可执行程序,它可以完成创建集群、为已存在的集群重新分片等功能。

而要想运行ruby程序,则需要系统先安装ruby运行环境:

?


1

sudo yum install ruby

接下来运行以下命令(在CentOS1和CentOS2上运行均可):

?


1

2

3

./redis-trib.rb create --replicas 1 \

    192.168.56.101:7000 192.168.56.101:7001 192.168.56.101:7002 \

    192.168.56.102:7003 192.168.56.102:7004 192.168.56.102:7005

此时会遇到以下问题:

提示缺少rubygems组件,可以使用yum来安装该组件:

?


1

sudo yum -y install rubygems

再次运行创建Redis集群的命令,还会报以下错误:

?


1

2

3

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

from ./redis-trib.rb:25

搜索了一下,是因为缺少redis的ruby接口,可以通过以下命令安装:

?


1

sudo gem install redis

如果安装时出现错误,也可以下载文件后进行离线安装,下载地址:http://rubygems.org/gems/redis/versions,选择合适的版本,然后安装:

?


1

sudo gem install -l /mnt/Share/redis-3.0.6.gem

接下来再次运行创建Redis集群的命令:

上图中:

create为redis-trib.rb脚本的子命令,表示创建redis集群

--replicas 1表示创建的集群有1套数据备份

后面的参数为多个redis实例地址,表示使用那些实例来创建节点

左边的“M:”表示该节点是master节点,相应的“S:”表示该节点为slave节点

在本次测试中,有7000~7005共6个节点,有一组节点是备份,那么很显然会有3个master和3个replica,这正好符合一开始的要求。从上图中可以看到,端口号为7000、7003和7004的三个节点被选为master,另外三个节点则成为replica。而下图则展示了redis的16384个数据槽(data slot)在三个master节点上的分布情况:

6. 测试集群

redis目前的客户端实现并不多,接下来我们用自带的redis-cli工具来测试搭建好的集群。

最简单的测试集群是使用redis-cli连接上redis后使用cluster命令(更多命令请参见:http://redis.io/commands):

cluster info,查看集群信息:

cluster nodes:查看集群中的节点信息:

下面使用redis-cli工具进行数据的读写操作:

开始连接redis的时候没有加入-c选项,则只能在该节点上存取,举个例子:上图中一开始我登录的是7002端口的redis实例,然后

?


1

set i 0

这一句给i设置值为0,经集群计算后,这个i应该落在15759这个slot中,这个slot又在7004这个redis实例上,于是准备跳转到7004的redis实例上,由于没有开启集群模式,这次跳转失败了,值也就没有写进redis。

第二次连接的还是7002,但这一次使用-c选项打开了集群模式,后续的存取不管落在哪一个节点上,都能跳转过去并正确的读写。蓝色方框的变化展示了连接跳转的过程,redis集群中的读写都会发生在指定的slot上,因此都会发生相应的跳转。

另外,由于每个节点都会记住集群中其他节点的名字以及数据槽的分布情况,我们可以打开每个redis实例的文件夹查看其nodes.conf(redis.conf文件中的cluster-config-file选项来配置)文件,文件内容大致相同,仅仅是节点列表的顺序不同而已。

时间: 2024-10-07 22:03:34

Redis3.0.6集群搭建的相关文章

Spark-1.4.0集群搭建

主要内容 Ubuntu 10.04 系统设置 ZooKeeper集群搭建 Hadoop-2.4.1集群搭建 Spark 1.4.0集群搭建 假设已经安装好Ubuntu操作系统 Ubuntu 10.04设置 1.主机规划 主机名 IP地址 进程号 SparkMaster 192.168.1.103 ResourceManager DataNode.NodeManager.JournalNode.QuorumPeerMain SparkSlave01 192.168.1.101 ResourceMa

Spark修炼之道(进阶篇)——Spark入门到精通:第十五节 Kafka 0.8.2.1 集群搭建

作者:周志湖 微信号:zhouzhihubeyond 本节为下一节Kafka与Spark Streaming做铺垫 主要内容 1.kafka 集群搭建 1. kafka 集群搭建 kafka 安装与配置 到下面的地址下载:Scala 2.10 - kafka_2.10-0.8.2.1.tgz http://kafka.apache.org/downloads.html 下载完成后,使用命令 tar -zxvf kafka_2.10-0.8.2.1.tgz 解压,解压后的目录如下 进入config

Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误

25.集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有NameNode / DataNode YARN集群: 负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager 25.1.2服务器准备 本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本: ü Vmware 11.

Spark修炼之道(进阶篇)——Spark入门到精通:第一节 Spark 1.5.0集群搭建

作者:周志湖 网名:摇摆少年梦 微信号:zhouzhihubeyond 本节主要内容 操作系统环境准备 Hadoop 2.4.1集群搭建 Spark 1.5.0 集群部署 注:在利用CentOS 6.5操作系统安装spark 1.5集群过程中,本人发现Hadoop 2.4.1集群可以顺利搭建,但在Spark 1.5.0集群启动时出现了问题(可能原因是64位操作系统原因,源码需要重新编译,但本人没经过测试),经本人测试在ubuntu 10.04 操作系统上可以顺利成功搭建.大家可以利用CentOS

云计算-hadoop2.6.0 集群搭建问题新手求助

问题描述 hadoop2.6.0 集群搭建问题新手求助 有三台ubuntu系统,一台作为master,另外两台作为slave,按照网上的文档搭建完,启动,50070,和8088可以访问,但是发现有个slave没有运行datenode进程,而且50070的datanode information界面没有相关的节点信息,什么原因?求助 解决方案 你直接手动能启动datenode进程吗,是不是没装好. 解决方案二: 谢谢,没有配置好文件,再请教一个问题,windows eclipse 连接ubuntu

codis集群搭建

目前公司的业务是php语言开发,使用的是laravel开源框架.laravel框架使用predis连接redis,但是目前predis不支持主从式redis集群,这点很坑. 看了看目前网上的解决方案,国内豌豆荚开源的codis很不错.这篇文章,我们主要介绍codis集群的安装. 一.codis介绍 codis是一个分布式redis集群解决方案,对于上层的应用来说, 连接到codis-proxy和连接原生的redis-server没有明显的区别. 上层应用可以像使用单机的redis一样使用,cod

Hadoop 三台主机 集群搭建 详解(测试)

Hadoop 三台主机 集群搭建 详解 学习更多,请访问系列文章: 1. VMware Redhat网络配置 2. Hadoop 三台主机 集群搭建 详解 3. Windows 下配置 Eclipse 连接 Hadoop 开发环境 部署环境: OS:Redhat 5.5 Enterprise JDK:jdk1.6.0_32 Hadoop:Hadoop-0.20.2 VMWare:7.0 节点安排及网络拓扑: 节点类型 节点IP 节点hostname master节点 192.168.40.5 m

高可用Hadoop平台-HBase集群搭建

1.概述 今天补充一篇HBase集群的搭建,这个是高可用系列遗漏的一篇博客,今天抽时间补上,今天给大家介绍的主要内容目录如下所示: 基础软件的准备 HBase介绍 HBase集群搭建 单点问题验证 截图预览 那么,接下来我们开始今天的HBase集群搭建学习. 2.基础软件的准备 由于HBase的数据是存放在HDFS上的,所以我们在使用HBase时,确保Hadoop集群已搭建完成,并运行良好.若是为搭建Hadoop集群,请参考我写的<配置高可用的Hadoop平台>来完成Hadoop平台的搭建.另

hadoop集群搭建详述

1.集群搭建策略 分析: 我手上只有3台电脑,两台华硕笔记本i7.i3的处理器,一台台式机Pentium4处理器.为了更好的测试zookeeper的功能, 我们总共需要6台ubuntu(Ubuntu 14.04.3 LTS)的主机.以下是我的主机分布策略: i7:开启4台ubuntu虚拟机分别是 虚拟机名 内存 硬盘 网络连接 master 1G 20G 桥接 master2 1G 20G 桥接 rm 512M 20G 桥接 slave3 1G 20G 桥接 i3: 安装ubuntu系统 ,作为