搭建Redis集群
1.上一篇博客中描述了redis的一些简介和概念,本篇博客主要是搭建一个redis集群
2.搭建过程参考了一些网友的文章,主要是下面两位朋友,在此感谢,下面是他们的链接
- https://www.cnblogs.com/zhoujie/p/redis3.html
- https://blog.csdn.net/azhu345ye/article/details/78215576
3.准备基础环境,3台centos7.5.1804 服务器,redis-4.0.10.tar.gz,ruby-2.2.3.tar.gz
- 服务器IP:192.168.68.134 - 135 - 136
- 集群的创建需要ruby,因此需要装ruby-2.2.3.tar.gz
4.分别对三台服务器安装依赖项与redis、ruby,请先下载redis-4.0.10.tar.gz、ruby-2.2.3.tar.gz并上传到服务器
- 1)安装基础依赖
- yum update
- yum -y install make gcc gcc-c++ kernel-devel
- 2)安装redis,1.解压、2.重命名、3.编译、4.安装
- tar zxvf redis-4.0.10.tar.gz
- mv redis-4.0.10 /usr/local/redis/
- cd /usr/local/redis
- make MALLOC=libc
- make install
- 到此 redis 安装结束,此时修改redis.conf可以直接启动,这时为单实例
- 3)安装- ruby
- tar xvzf ruby-2.2.3.tar.gz -C /usr/local/redis
- cd /usr/local/redis/ruby-2.2.3
- ./configure
- make && make install
- 4)安装 zlib-devel
- yum install zlib-devel
- cd /usr/local/redis/ruby-2.2.3/ext/zlib
- ruby ./extconf.rb
- make && make install
- 5)安装 openssl-devel
- cd /usr/local/redis/ruby-2.2.3/ext/openssl
- ruby ./extconf.rb
- ln -s /root/redis/ruby-2.2.3/include /
- make && make install
- 6)最后一步很重要
- gem install redis
安装了这些基础依赖项,后面才能顺利的搭建起集群
5.开始集群搭建
1)安装完redis后,会在/usr/local/bin/目录下看到redis-server、redis-cli等可执行脚本,进入看一下,如果没有,就要去解压目录复制进去
2)Redis集群中要求奇数节点,所以至少要有三个节点,并且每个节点至少有一备份节点,所以至少需要6个redis服务实例,这里我搭建的是每台服务器3个节点,3台服务器共9个节点
3)三台机器一样,建立如下目录结构,7000 ,7001 ,7002 3个文件夹:
mkdir -p /usr/local/redis/redis-cluster/{
7000,7001,7002}
4)再分别进入3个文件夹,创建配置文件
cd /usr/local/redis/redis-cluster/7000 && touch redis.conf
5)配置文件中的内容如下,这里列出了注释,请在写入redis.conf文件中时去掉这些注释,绑定的端口和IP分别是3台服务器的IP与上面创建的端口
port 7000 # 端口7000,7001,7002,与目录对应
bind 192.168.68.134 #默认ip为127.0.0.1,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes #redis后台运行
cluster-enabled yes #开启集群
cluster-config-file nodes_7000.conf #集群的配置,配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 8000 #请求超时,默认15秒,可自行设置
appendonly yes #开启aof持久化模式,每次写操作请求都追加到appendonly.aof文件中
appendfsync always #每次有写操作的时候都同步
logfile "/usr/local/redis/logs/redis.log" #redis服务日志
pidfile /var/run/redis_7000.pid #pidfile文件对应7000,7001,7002
6)在三台服务器的 /usr/local/redis/redis-cluster 文件夹下创建 批量启动-关闭 redis的脚本
启动脚本:start-redis.sh
for((i=0;i<3;i++));
do /usr/local/bin/redis-server /usr/local/redis/redis-cluster/700$i/redis.conf;
done
关闭脚本:shutdown-redis.sh
for((i=0;i<=2;i++));
do /usr/local/bin/redis-cli -c -h $IP -p 700$i shutdown;
done
$IP分别为三台服务器IP,我这里分别是192.168.68.134 - 135 - 136,
然后3台服务器分别执行脚本 sh start-redis.sh ,通过 ps -ef|grep redis 查看9个节点是否已经启动
6.创建集群,注意,这里的命令,请在一台服务器上运行,不要分别在三台服务器运行 ,Redis 官方提供了 redis-trib.rb 工具搭建集群,就在解压目录的 src 目录中,在机器的 /usr/local/redis/src下
为什么要那么麻烦的搭建 ruby 环境,就因为 redis-trib.rb 文件得通过 ruby 环境运行
cd /usr/local/redis/src
./redis-trib.rb create –replicas 1 192.168.68.134:7000 192.168.68.134:7001 192.168.68.134:7002 192.168.68.135:7000 192.168.68.135:7001 192.168.68.135:7002 192.168.68.136:7000 192.168.68.136:7001 192.168.68.136:7002
接下来会有一个提示,输入 yes 即可
redis集群会自动分配master与slave,还会显示了集群和slot分配结果,
7.验证集群
使用 redis-cli -c -h 192.168.68.134 -p 7000 连接redis集群 , 再set get 一下,可清晰的看到 redis 自动把key redirected 到135的7000节点上了
到此为止集群搭建成功!
8.再次启动集群时报错的解决办法:我是用 VM 虚拟机开的3台服务器,关闭后再次启动集群时报错 [ERR] Node 192.168.68.134:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
这时的解决方法是,把3台服务器上的 appendonly.aof dump.rdb nodes700* 的文件删除,然后重启 redis 节点,再启动集群
cd /usr/local/redis/src
./redis-trib.rb create –replicas 1 192.168.68.134:7000 192.168.68.134:7001 192.168.68.134:7002 192.168.68.135:7000 192.168.68.135:7001 192.168.68.135:7002 192.168.68.136:7000 192.168.68.136:7001 192.168.68.136:7002
9.集群其他常用命令
- create:创建一个集群环境host1:port1 … hostN:portN(集群中的主从节点比例)
- call:可以执行redis命令
- add-node:将一个节点添加到集群里,第一个参数为新节点的ip:port,第二个参数为集群中任意一个已经存在的节点的ip:port
- del-node:移除一个节点
- reshard:重新分片
下一篇,准备用Java客户端 SpringBoot连接操作集群
还没有评论,来说两句吧...