How to deploy redis cluster
本文介绍如何通过源码部署redis cluster。
Redis Cluster的特点
- 高性能,可线性扩展至1000的节点。没有代理,异步复制数据,不对数据做 merge 操作
- 写操作的安全性在可接受范围内
- 高可用
- Redis Cluster 的节点之间通过 Redis Cluster Bus 协议互相连接
- Redis Cluster 的节点不会通过 proxy 来转发请求,而是通过 -MOVED 或者 -ASK 错误来将客户端的请求转发到正确的 node
搭建过程
安装 Redis
Redis Cluster 的搭建有多种方法,这里采用源代码的方式部署,因为 Redis 的源代码中提供了特定的工具来部署,用起来比较方便。
首先到官方网站下载源代码并进行编译。
1
2
3
4
5
6
7
8
9
10
11
|
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz
$ tar xvf redis-4.0.2.tar.gz
$ cd redis-4.0.2
# 先编译依赖库
$ cd deps
$ make hiredis lua jemalloc linenoise
# 再编译 redis
$ cd ../
$ make
|
编译完成后,输出部分会提示我们运行make test
。
1
2
3
4
5
|
Hint: It's a good idea to run 'make test' ;)
make[1]: Leaving directory '/root/download/redis-4.0.2/src'
$ make test
|
make test 可能会需要一些依赖,如tcl
,ruby
,redis(ruby library)
。
安装 ruby ,因为 redis 库要ruby 2.2.2
版本之后才支持,而 Centos 的默认 ruby 版本是2.0.0
所以我们可能需要通过其他方式安装 ruby 。
1
2
3
4
5
6
7
8
9
|
# 更新内容请到 rvm 官网查看
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ \curl -sSL https://get.rvm.io | bash -s stable
$ rvm install 2.4.2
# 更新 gems 源
$ yum install rubygems
$ gem sources -r https://rubygems.org/
$ gem sources -a https://ruby.taobao.org
|
通过 ruby 安装 redis 库
然后运行make test
看有无错误,并进行安装
1
2
|
$ make test
$ make install
|
部署 Redis Cluster
首先部署 Redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
$ cd utils
$ ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379] 7788
Please select the redis config file name [/etc/redis/7788.conf]
Selected default - /etc/redis/7788.conf
Please select the redis log file name [/var/log/redis_7788.log]
Selected default - /var/log/redis_7788.log
Please select the data directory for this instance [/var/lib/redis/7788]
Selected default - /var/lib/redis/7788
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 7788
Config file : /etc/redis/7788.conf
Log file : /var/log/redis_7788.log
Data dir : /var/lib/redis/7788
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
|
在部署了多个 Redis Server 之后我们需要依次修改/etc/redis/7788.conf
使其开启cluster
功能。
1
2
|
# 打开 /etc/redis/7788.conf ,去掉 cluster-enabled yes 之前的注释符
cluster-enabled yes
|
修改完毕后依次通过/etc/init.d/redis_7788
等命令启动Redis Server
1
|
for i in 88 99 00 ; do /etc/init.d/redis_77${i} start; done
|
完成之后可以通过redis-cli
稍作测试,确定没有问题之后部署Redis Cluster
集群
1
2
|
$ yum install redis-trib
$ redis-trib create 127.0.0.1:7788 127.0.0.1:7799 127.0.0.1:7700
|
搭建完毕