轻松搞定redis cluster部署

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:6379  172.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:6379  172.23.11.188:6379 172.23.11.163:6380 172.23.11.186:6380  172.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配置项配置的文件,重新执行集群创建流程即可。

转载于:https://my.oschina.net/u/3786091/blog/1626368

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值