轻松搞定redis cluster部署

2018-03-01 10:56:18来源:oschina作者:nga人点击

分享

1. 部署逻辑图


本文采用6个节点(3个master,3个slave)部署,一台虚拟机部署主备两个节点,如下图所示,这样的好处是有一台虚拟机挂了,整个集群能够正常使用。
输入图片说明


2. Redis安装


2.1 下载安装包


进入172.23.11.163这台虚拟机,创建并进入/usr/local/software目录,下载redis文件包,并解压到当前目录。


wget http://download.redis.io/releases/redis-3.2.11.tar.gz
tar –xvf redis-3.2.11.tar.gz

输入图片说明


2.2 编译源文件


cd redis-3.2.11
make

若是报下面的错,请用下面的命令
输入图片说明


make MALLOC=libc

然后进行install,完成后,会在redis-cluster目录下生成一个bin目录。


make install PREFIX=/usr/local/software/redis-cluster

进入redis-cluster,重命名bin为redis-3.2.11-node01,并拷贝redis.conf文件到当前目录。


cd ../redis-cluster
mv bin redis-3.2.11-node01
cp /usr/local/software/redis-3.2.11/redis.conf redis-3.2.11-node01/

2.3 修改master配置


进入redis-3.2.11-node01目录,找到redis.conf文件,修改如下配置:


port 6379
cluster-enabled yes
cluster-node-timeout 5000
appendonly yes
daemonize yes

2.4 slave文件创建及配置修改


拷贝一份,作为node03的slave。


cd /usr/local/software/redis-cluster/
cp -r redis-3.2.11-node01 redis-3.2.11-node03-slave

进入redis-3.2.11-node03-slave目录,找到redis.conf文件,修改如下配置:


port 6380
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes

2.5 其他虚拟机redis的部署


将redis-3.2.11-node03-slave,redis-3.2.11-node01两个目录拷贝到172.23.11.186、172.23.11.188


cd/usr/local/software/redis-cluster/
scp redis-3.2.11-node01 root@172.23.11.186:/usr/local/software/redis-cluster/redis-3.2.11-node02
scp redis-3.2.11-node03-slave root@172.23.11.186:/usr/local/software/redis-cluster/ redis-3.2.11-node01-slave
scp redis-3.2.11-node01 root@172.23.11.188:/usr/local/software/redis-cluster/redis-3.2.11-node03
scp redis-3.2.11-node03-slave root@172.23.11.188:/usr/local/software/redis-cluster/ redis-3.2.11-node02-slave

2.6 启动redis


cd /usr/local/software/redis-cluster/redis-3.2.11-node01
./redis-server redis.conf
cd /usr/local/software/redis-cluster/ redis-3.2.11-node03-slave
./redis-server redis.conf

查看进程是否启动,若能看到6379和6380两个端口的进程,说明启动成功了。


ps –ef | grep redis

输入图片说明


3. cluster配置


3.1 拷贝ruby脚本


cp /usr/local/software/redis-3.2.11/src/redis-trib.rb /usr/local/software/redis-cluster/ redis-3.2.11-node01

3.2 安装ruby及其依赖库


wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
yum install ruby
yum install rubygems
gem install redis-3.2.2.gem

安装完成后,使用help命令查看redis-trib.rb提供的管理功能命令。
输入图片说明
3.2 创建master节点


使用redis-trib.rb提供的create命令创建节点


./redis-trib.rb create 172.23.11.163:6379 172.23.11.186:6379172.23.11.188:6379

因为我们自己指定每个master对应的slave,所以命令中省去了对slave的配置,只创建master节点,若是使用系统自动分配的方式,采用如下命令,则步骤3.3可以省略


redis-trib.rb create --replicas 1 172.23.11.163:6379 172.23.11.186:6379172.23.11.188:6379 172.23.11.163:6380 172.23.11.186:6380172.23.11.188:6380

输入图片说明


从图中可以看到,成功创建了3个Master节点,列出了每个master的master id,ip,端口以及存储的slots区间


3.3 创建slave节点


使用add-node命令添加节点,下面命令给67bf51cd896ff2d4774f4653d50d092e877ce160这个master添加了一个slave:172.23.11.163:6380。


./redis-trib.rb add-node --slave --master-id 67bf51cd896ff2d4774f4653d50d092e877ce160 172.23.11.163:6380 172.23.11.188:6379

输入图片说明


另外两个master用同样的方法增加slave,注意master id不要搞错就好了。


3.4 check集群


使用check命令查看整个集群状态


./redis-trib.rb check 172.23.11.163:6379

输入图片说明


4. 集群测试


4.1 基本操作测试


测试采用redis-cli –c 命令连接任一台master节点,如下图,添加key时会提示写到了哪个节点上,连接到指定的节点即可查出数据,执行del命令时,会重定向到存储数据的几点。同时,注意select命令是没用的,因为redis cluster只支持一个数据库,及database 0。
输入图片说明


4.2 集群故障切换测试


首先kill掉188的master节点,该master节点的slave在163:6380,它挂掉后163:6380应该会被切换成master,如下图


输入图片说明
输入图片说明


然后,启动188:6379,它失去了master地位,只能充当163:6380的slave了。


结束语


至此,整个集群就搭建起来了,若想重新部署整个集群,删除各个节点目录下的aof,rdb,redis.conf文件中cluster-config-file配置项配置的文件,重新执行集群创建流程即可。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台