搭建Redis集群

1.上一篇博客中描述了redis的一些简介和概念,本篇博客主要是搭建一个redis集群
2.搭建过程参考了一些网友的文章,主要是下面两位朋友,在此感谢,下面是他们的链接
3.准备基础环境,3台centos7.5.1804 服务器,redis-4.0.10.tar.gzruby-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连接操作集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值