centos上安装及配置redis cluster

来源:互联网 发布:淘宝优惠券怎么使用 编辑:程序博客网 时间:2024/05/20 11:25

介绍

在没有redis cluster之前,比较流行的redis集群方案是基于lvs->twemproxy->redis的,这个方案部署起来比较复杂,一个请求要经过两层路由才到redis,而且为了作高可用还很浪费机器,另外还不支持动态扩容,意味着每一次扩容都要将redis之前的所有数据重新发送一遍,不然就会导致节点的数据分布不均匀。
还有一个方案,DBA们十分欢迎在应用中来对数据进行分片,比如jedis有shrading方面的支持,这样运维起来是最省事的。
后来DBA们研究发现新的redis cluster特性以很简单的方式提供了高可用性,还支持动态扩容,于是纷纷主推redis cluster作为redis的集群方案。所以说,在大公司的系统架构中,性能往往不是主要考虑的因素。
关于redis cluster更详细的教程参考《redis集群教程》。

准备

redis cluster是redis3版本的一个新特性,因此首先要在环境中安装好redis3。若还没安装,可参考《centos上安装及配置单台redis》。由于这里只是搭建一个开发环境,最简单的就是将所有redis实例都跑在同一台机器上,只要设置端口号不一样就行了,如下所示:
主master:
127.0.0.1:6301
127.0.0.1:6302
127.0.0.1:6303

从slave:
127.0.0.1:6304
127.0.0.1:6305
127.0.0.1:6306


安装好redis3后,我们开始规划目录结构,如下所示:
$ pwd
/usr/local/redis3    #redis根目录
$ mkdir cluster #新建redis cluster父目录
$ cd cluster
$ mkdir 6301 6302 6303 6304 6305 6306 #新建节点目录,以端口号命名

接下来将官方安装包提供的redis.conf文件拷贝到每个节点目录中,修改redis.conf文件中的配置。以6301目录下的redis.conf为例(其他节点的redis.conf也是类似的),主要设置的几个参数如下,其余的参数根据实际需要设置:
################### GENERAL  ####################以后台的方式运行daemonize yes# 当daemonize设置为yes,该文件记录了redis进程的pidpidfile /usr/local/redis3/cluster/6301/redis.pid# 端口号port 6301#日志文件路径logfile /usr/local/redis3/cluster/6301/redis.logs################### SNAPSHOTTING  ####################将所有save都注释掉,禁用redis的持久化功能,把redis当做一个纯粹的缓存#save 900 1#save 300 10#save 60 10000################### REDIS CLUSTER  ####################启用redis clustercluster-enabled yes#redis自动生成的文件,记录了节点集群配置信息cluster-config-file /usr/local/redis3/cluster/6301/nodes.conf#超时时间(毫秒),集群在该时间内与节点没有联系上,将视该节点为失败状态cluster-node-timeout 5000
配置好后就可以依次启动每个redis节点:
./bin/redis-server ./cluster/6301/redis.conf
./bin/redis-server ./cluster/6302/redis.conf
./bin/redis-server ./cluster/6303/redis.conf
./bin/redis-server ./cluster/6304/redis.conf
./bin/redis-server ./cluster/6305/redis.conf
./bin/redis-server ./cluster/6306/redis.conf
建议检查一下每台redis是否正常启动,可查看一下端口服务:
netstat -anpt | grep redis

创建redis cluster

虽然每个节点的redis都启动来了,但它们无法成为一个集群,这时还需要官方提供的redis-trib来创建redis cluster。redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序。这个程序通过向实例发送特殊命令来完成创建新集群,检查集群,或者对集群进行重新分片(reshared)等工作。
要运行redis-trib要先安装ruby运行环境:

yum -y install ruby

接下来安装ruby gems,用它来查找、安装、升级和卸载ruby软件包。
yum -y install rubygems
然后通过gem来安装ruby的redis客户端
gem install redis
这一步有可能会失败,大多是因为国内连不上gem官方库,那只能修改gem库为国内的库,如淘宝网的RubyGems镜像,或下载redis.gem文件离线安装。

最后创建redis cluster,运行命令:
./redis-trib.rb create --replicas 1 127.0.0.1:6301 127.0.0.1:6302 127.0.0.1:6303 127.0.0.1:6304 127.0.0.1:6305 127.0.0.1:6306
命令的意义如下:
(1)给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。
(2)选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
(3)之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。
输入命令后,控制台便会打印出redis cluster的配置信息,最后向你确认是否接受,输入:yes
控制台便会输出一系列信息,并提示redis cluster搭建成功!

连接redis cluster

使用客户端redis-cli连上集群中的任意一台redis,即可连上整个集群,可输入:
./bin/redis-cli -c -p 6301

另外还可以通过如下命令:
./bin/redis-cli -p 6301 cluster nodes
可查看集群配置信息:
<redis_1_ID> 127.0.0.1:6301 myself,master - 0 0 1 connected 0-5460
<redis_2_ID> 127.0.0.1:6302 master - 0 1455979903197 2 connected 5461-10922
<redis_3_ID> 127.0.0.1:6303 master - 0 1455979904735 3 connected 10923-16383
<redis_5_ID> 127.0.0.1:6304 slave <redis_1_ID> 0 1455979903197 4 connected
<redis_6_ID> 127.0.0.1:6305 slave <redis_2_ID> 0 1455979905245 5 connected
<redis_7_ID> 127.0.0.1:6306 slave <redis_3_ID> 0 1455979903197 6 connected

这里的<redis_x_ID>是集群为每台redis分配的标识符(太长,所以没具体写出来)


1 0