您的位置:首页 > 数据库 > Redis

centos上安装及配置redis cluster

2016-02-20 23:24 513 查看

介绍

在没有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:
10.199.203.17:6301
10.199.203.17:6302
10.199.203.17:6303

从slave:
10.199.203.17:6304
10.199.203.17:6305
10.199.203.17: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进程的pid
pidfile /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 cluster
cluster-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 10.199.203.17:6301 10.199.203.17:6302 10.199.203.17:6303 10.199.203.17:6304 10.199.203.17:6305 10.199.203.17:6306
命令的意义如下:

(1)给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。

(2)选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。

(3)之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。

          注意这里的地址一定不能使用127.0.0.1  ,要用真实的IP

输入命令后,控制台便会打印出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> 10.199.203.17:6301 myself,master - 0 0 1 connected 0-5460
<redis_2_ID> 10.199.203.17:6302 master - 0 1455979903197 2 connected 5461-10922
<redis_3_ID> 10.199.203.17:6303 master - 0 1455979904735 3 connected 10923-16383
<redis_5_ID> 10.199.203.17:6304 slave <redis_1_ID> 0 1455979903197 4 connected
<redis_6_ID> 10.199.203.17:6305 slave <redis_2_ID> 0 1455979905245 5 connected
<redis_7_ID> 10.199.203.17:6306 slave <redis_3_ID> 0 1455979903197 6 connected
这里的<redis_x_ID>是集群为每台redis分配的标识符(太长,所以没具体写出来)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis redis cluster