redis集群搭建遇到的坑

离线安装

centos的镜像地址

 http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/

 

redis 集群中需要的安装包

  1. 下载依赖包, rubyzlib

 http://www.ruby-lang.org/zh_cn/downloads/
 ​
 http://zlib.net/   
  1. 解压文件

 tar -zxvf ruby-2.6.3.tar.gz
  1. 编译安装

 ./configure
 ​
 make
 ​
 make install
  1. 查看 gem 镜像

 gem sources -l
 gem sources -a  http://gems.ruby-china.org/  
  1. 解压zlib

 tar -zxvd zlib-1.2.11.tar.gz
 ​
 ./configure --prefix=/usr/local/zlib
 make
 make install
  1. 进入到ruby中的 zlib目录下

 cd /opt/redis/server01/ruby-2.6.3/ext/zlib
 ​
 ruby ./extconf.rb
 ​
 make 
 ​
 make install
  1. 修改gem镜像地址安装redis接口

 gem sources -a  http://gems.ruby-china.org/
 查看镜像
 gem source -l
  1. 安装 redis-***.gem

 gem install -l /usr/local/redis-4.1.2.gem #安装本地的redis接口

 

redis的安装

单机

 解压redis压缩包   tar -zxvf redis-4.0.14.tar.gz
 编译             make
 安装             make install
 启动redis        cd redis-4.0.14/src
                 ./redis-server
 客户端测试        ./redis-cli                 

集群

  1. 创建如图目录。 两台服务器可以都这么配置

  1. 将redis.conf拷贝到这三个目录中去:(redis.conf在安装目录下)

 cp redis.conf ../server01/
 cp redis.conf ../server02/
 cp redis.conf ../server03/
  1. 修改每个redis.conf的配置,需要修改的内容如下:

 port 7000    //配置集群的端口,分别是7000、7001、7002
 bind 本机的IP    //这里的默认配置是127.0.0.1改为内网ip。
 daemonsize yes   //允许redis在后台运行
 pidfile  /var/run/redis_7000.pid  //改成和端口一致
 cluster-enabled  yes   // 开启集群 把注释去掉
 cluster-config-file node_7000.conf  //集群的配置,和端口一致
 cluster-node-timeout  15000  // 请求超时,默认为15秒
 appendonly  yes // aof日志开启,有需要就开启,每一次写操作都会记录一条日志。
  1. 修改完成之后启动服务, 依次启动每个服务

 ./redis-server ../../server01/redis.conf
 ./redis-server ../../server02/redis.conf
 ./redis-server ../../server03/redis.conf
  1. 创建redis集群

 cd redis-4.0.14/src/
 ​
 ./redis-trib.rb create --replicas 1 172.25.67.52:7001 172.25.67.52:7002 172.25.67.52:7003 172.25.67.32:7004 172.25.67.32:7005 172.25.67.32:7006
  1. 测试连接

 ./redis-cli -h 172.25.67.32 -p 7006
 查看各个节点的状态    cluster nodes
 查看本节点在集群中的状态 cluster info

 

  1. 停止一个节点

 ./redis-cli -c -h 172.25.67.32 -p 7006 shutdown

再次启动后直接进入集群中。

 

  1. 添加一个新的节点

 在server4中复制一个redis.conf     ./redis-server ../../server04/redis.conf

然后连接进集群,如果该节点之前不在集群中,连接集群输入cluster meet 命令就可以指定某个节点加入集群。

 ./redis-trib.rb add-node 172.25.67.32:7007 172.25.67.32:7006
 ​
 1)add-node就是添加节点, 默认是添加主节点
 3)172.25.67.32:7007是需要添加节点
 4)172.25.67.32:7006:参数节点,把节点添加到7006所在集群。

给新加的主节点分配 Hash槽

 ./redis-trib.rb reshard 172.25.67.52:7001
  1. 添加从节点

 ./redis-trib.rb add-node --slave --master-id d53b66fdce3cf65fab87f6dbbfb4703f702d4931  172.25.67.32:7008 172.25.67.52:7001
 ​
 1)  add-node:添加节点
 2)  --slave:添加从节点
 3)  --master-Id xx :表示给此主节点添加从节点。
 4) 172.25.67.32:7008:需要添加从节点
 5) 172.25.67.52:7001:表示需要添加到7001所在集群。

 

 

 

报错说明

[ERR] Node 172.25.67.52:7002 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决:

登录每一个redis

 用redis-cli 登录到每个节点执行  flushall  和 cluster reset  就可以了。

 

 

 

命令

 redis-trib.rb   Redis Cluster的管理工具

 

知识点

redis 中总共有 16384 的槽节点 (0-16383)。

 

参考

 https://www.cnblogs.com/hello-daocaoren/p/8431902.html
 ​
 https://www.cnblogs.com/qlqwjy/p/8858520.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值