Redis集群部署

redis 是一个高性能的<K,V>分布式缓存数据库。

参考博客http://blog.csdn.net/myrainblues/article/details/25881535

安装Redis3集群(3台Linux storm1,storm2,storm3)

1.下载redis的稳定版本

下载地址http://download.redis.io/releases/

需要注意的是redis版本一定要在3.x以上,不然不支持集群

2.上传redis到服务器

1
for n in {1..5}; do scp redis-4.0.11.tar.gz zyh@cor$n:/usr/local/src/; done

3.解压

1
2
3

$ tar -zxvf redis-4.0.11.tar.gz -C ./

需要注意的是在操作之前一定要保证权限正确

4.进入到源码包中,编译并安装redis

1
2
3

cd /usr/local/src/redis-3.0.7/
make && make install

进入/usr/local/bin 查看安装后的结果

解释一下后续比较关键的几个命令

名称 作用 备注
redis-server 启动redis服务
redis-cli 启动客户端
redis-trib.rb 启动redis-cluster 需要ruby的支持才能用,文件存放在/redis/src/目录下

make编译需要GCC的支持,redis-trib工具则需要ruby和gem的支持,下面说一下ruby和gem的安装

5.安装所有依赖

安装gcc

1
yum -y install gcc

安装ruby和gem

1
yum -y install ruby rubygems

使用gem下载redis集群的配置脚本

1
gem install redis

gem install的安装包会放在/usr/lib/ruby/gems/1.8/cache目录下

如果遇到redis requires Ruby version >= 2.2.2的问题解决方案:https://www.jianshu.com/p/0a5de7dc0254

原因是Ruby的版本太低,只要升级Ruby的版本即可。这边移除ruby 2.0.0版本,重新安装 2.3.3版本即可解决问题

如果redis所在服务器不能上网怎么办?

比如想要将下载好的redis-3.2.2.gem拷贝到其他服务器,手动安装即可

shell cd /usr/lib/ruby/gems/1.8/cache for n in {2..6}; do scp redis-3.2.2.gem 192.168.0.3$n:$PWD; done

在需要安装的机器上执行下面命令安装

1
gem install --local /usr/lib/ruby/gems/1.8/cache/redis-3.2.2.gem

7.部署storm2和storm3

用同样的方式在其他的机器上编译安装redis

8.修改所有机器的配置文件redis.conf

1
2
3
4
5
6
7
port 6379 #端口
pidfile /var/run/redis-6379.pid
daemonize yes
cluster-enabled yes
appendonly yes
appendfsync no #AOF 策略,参考上篇博客
bind ${host}

9.启动所有机器上的redis节点

1
redis-server /etc/redis.conf

10.使用redis-trib配置redis集群

1
2
cd /usr/local/src/redis-4.0.11/src/
sudo cp /usr/local/src/redis-4.0.11/src/redis-trib.rb /usr/local/bin/

检查防火墙,如果开启需要关闭

1
service iptables status

使用redis-trib.rb集群构建工具启动集群

1
redis-trib.rb create --replicas 0  192.168.1.19:6379 192.168.1.20:6379 192.168.1.21:6379

遇到 Can I set the above configuration? (type ‘yes’ to accept):输入yes回车即可

这边运行以后报了个错误ERR Slot 0 is already busy (Redis::CommandError)

image

原因是因为之前我已经配置过一次,再次使用就会出现slot 0被占用的结果,用redis-cli 登录到每个节点执行 flushallcluster reset 就可以了。

博客:https://blog.csdn.net/xiaojin21cen/article/details/70445545

启动成功后:

snapshot.png

11.测试

在storm1节点上set一个值,在storm2上查看值,storm1的ip 192.168.1.19 ;storm2的 ip 192.168.1.20

1
2
redis-cli -h storm1 -p 6379
set zyh zyh

在storm2上查看

1
2
redis-cli -h storm2 -p 6379
get zyh

报了错误:(error) MOVED 166 192.168.1.19:6379

snapshot.png

解决办法:在链接客户端时带上-c参数,参考https://www.oschina.net/question/1259683_2133954

1
redis-cli -c -h storm2 -p 6379

snapshot.png


Redis集群部署
http://example.com/2018/09/15/2018-09-15-Redis集群部署/
Author
Hoey
Posted on
September 15, 2018
Licensed under