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

Redis3.0.7 服务端集群搭建

2016-08-09 15:41 295 查看
文档是MARKDOWN文档,如果有相关工具可以拷贝下预览

# Redis-Cluster集群搭建

----------

##1. 组件版本

- redis-3.0.7
- Jedis-2.9.0

##2. 安装过程

###安装redis

官网http://redis.io 下载redis-3.0.7.tar.gz

上传至linux服务器,并解压缩,进入安装目录编译并安装

> tar -zxvf redis-3.0.7.tar.gz

> cd /usr/local/redis-3.0.7

> make

> make install

新建文件夹用来存放各个节点的配置文件

> mkdir cluster-config

因为redis集群默认需要3个主节点,再加上每个主节点配置一个从节点,就一共需要6个节点

修改安装目录中配置文件redis.conf

其中几个比较重要的修改如下:

```
daemonize yes                          # redis默认不是后台启动,这里修改成后台启动
cluster-enabled yes                    # 允许redis支持集群模式
cluster-config-file nodes.conf         # 节点配置文件
cluster-node-timeout 15000             # 节点超时毫秒
port 6379                              # 如果你需要自定义端口可以用这个选项
cluster-config-file nodes-6379.conf    # 同一个系统中的集群节点配置文件最好不要重叠
```

将安装目录中的配置文件redis.conf拷贝6份至cluster-config,并以端口号区分,同时修改port和cluster-config-file属性。

> [root@test6 cluster-config]# ll

> total 264

> -rw-r--r-- 1 root root 41556 Aug  8 18:15 redis-6379.conf

> -rw-r--r-- 1 root root 41556 Aug  8 18:16 redis-6380.conf

> -rw-r--r-- 1 root root 41556 Aug  8 18:16 redis-6381.conf

> -rw-r--r-- 1 root root 41556 Aug  8 18:16 redis-6382.conf

> -rw-r--r-- 1 root root 41556 Aug  8 18:42 redis-6383.conf

> -rw-r--r-- 1 root root 41556 Aug  8 18:43 redis-6384.conf

到redis目录中src下执行redis-server启动节点,并且指定配置文件

> [root@test6 redis-3.0.7]# ./src/redis-server cluster-config/redis-6379.conf 

> [root@test6 redis-3.0.7]# ./src/redis-server cluster-config/redis-6380.conf 

> [root@test6 redis-3.0.7]# ./src/redis-server cluster-config/redis-6381.conf 

> [root@test6 redis-3.0.7]# ./src/redis-server cluster-config/redis-6382.conf 

> [root@test6 redis-3.0.7]# ./src/redis-server cluster-config/redis-6383.conf 

> [root@test6 redis-3.0.7]# ./src/redis-server cluster-config/redis-6384.conf 

查看进程,可以发现有6个redis实例在运行

> [root@test6 redis-3.0.7]# ps -ef |grep redis

> root     14831     1  0 18:49 ?        00:00:00 ./src/redis-server *:6379 [cluster]              

> root     14841     1  0 18:49 ?        00:00:00 ./src/redis-server *:6380 [cluster]              

> root     14846     1  0 18:49 ?        00:00:00 ./src/redis-server *:6381 [cluster]              

> root     14850     1  0 18:49 ?        00:00:00 ./src/redis-server *:6382 [cluster]              

> root     14854     1  0 18:49 ?        00:00:00 ./src/redis-server *:6383 [cluster]              

> root     14859     1  0 18:49 ?        00:00:00 ./src/redis-server *:6384 [cluster] 

此时可通过redis-trib.rb来创建集群,因为是ruby脚本,所以需要安装ruby和一些组件

> yum install ruby

> yum install rubygems

> gem install redis

创建redis集群

> [root@test6 redis-3.0.7]# ./src/redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

- redis-trib.rb 程序的命令是 create,这表示我们希望创建一个新的集群。
- 选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
- 实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。

接着程序会打印一份如下的配置信息,如果确认无误则输入yes开始创建
```
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:6379
127.0.0.1:6380
127.0.0.1:6381
Adding replica 127.0.0.1:6382 to 127.0.0.1:6379
Adding replica 127.0.0.1:6383 to 127.0.0.1:6380
Adding replica 127.0.0.1:6384 to 127.0.0.1:6381
M: a120ee3f61c0ce68926669150b54d7021470e828 127.0.0.1:6379
   slots:0-5460 (5461 slots) master
M: 369205805e3f16fe407f3a493da20bb04a68d5ea 127.0.0.1:6380
   slots:5461-10922 (5462 slots) master
M: 4e27413b2b2b7c334cb782418e0c66369dd3c288 127.0.0.1:6381
   slots:10923-16383 (5461 slots) master
S: d5c0e9e5e53d0ca28b8191002ddcc29bbf966027 127.0.0.1:6382
   replicates a120ee3f61c0ce68926669150b54d7021470e828
S: 254cc3a6f70252b924a22d4b9dc8816d4f9c86b0 127.0.0.1:6383
   replicates 369205805e3f16fe407f3a493da20bb04a68d5ea
S: 1d1bf538b18bbaf01e10f43f81d7203efa263c3a 127.0.0.1:6384
   replicates 4e27413b2b2b7c334cb782418e0c66369dd3c288
Can I set the above configuration? (type 'yes' to accept):
```

创建完毕后会显示如下

```
>>> 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 127.0.0.1:6379)
M: a120ee3f61c0ce68926669150b54d7021470e828 127.0.0.1:6379
   slots:0-5460 (5461 slots) master
M: 369205805e3f16fe407f3a493da20bb04a68d5ea 127.0.0.1:6380
   slots:5461-10922 (5462 slots) master
M: 4e27413b2b2b7c334cb782418e0c66369dd3c288 127.0.0.1:6381
   slots:10923-16383 (5461 slots) master
M: d5c0e9e5e53d0ca28b8191002ddcc29bbf966027 127.0.0.1:6382
   slots: (0 slots) master
   replicates a120ee3f61c0ce68926669150b54d7021470e828
M: 254cc3a6f70252b924a22d4b9dc8816d4f9c86b0 127.0.0.1:6383
   slots: (0 slots) master
   replicates 369205805e3f16fe407f3a493da20bb04a68d5ea
M: 1d1bf538b18bbaf01e10f43f81d7203efa263c3a 127.0.0.1:6384
   slots: (0 slots) master
   replicates 4e27413b2b2b7c334cb782418e0c66369dd3c288
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
```

至此,集群搭建完毕。

任意单个master节点均可执行cluster命令

> [root@test6 redis-3.0.7]# ./src/redis-cli  -p 6379

> 127.0.0.1:6379> cluster nodes  可以打印集群下所有节点信息

> 127.0.0.1:6379> cluster info   可以打印集群信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Redis 集群