redis集群问题

 今天学习一下redis集群的搭建。redis在现在是很常用的数据库,在nosql数据库中也是非常好用的,接下来我们搭建一下redis的集群。

一、准备

        首先我们要安装c语言的编译环境,我们要安装redis。

       首先安装gcc g++

        命令:> apt-get install   gcc 

      命令:> apt-get install   gcc

 

或者

     命令:>apt-get install  build-essential

 在make时可能出现错误" error: jemalloc/jemalloc.h: No such file or directory",通过如下命令解决。

     命令:>make MALLOC=libc

 

二、下载redis编译安装

 

命令:>  wget http://download.redis.io/releases/redis-4.0.8.tar.gz
命令:> tar xzf redis-4.0.8.tar.gz
命令:> cd redis-4.0.8
命令:> make
命令:> make install

三、安装ruby环境
命令:> apt-get install ruby
命令:> gem install redis

四、接下来我们创建6个目录
    路径为/usr/sofe/redis/redis-cluster下创建6个文件夹代表6个实例
 

 

五、进去安装redis的目录分别将redis.config配置文件cp到这6个目录。
  

  六、进入一个目录的配置文件修改该配置文件

       如7001文件

   命令:> cd /usr/sofe/redis/redis-cluster/7001

  命令 :>vim redis.config    (没有安装vim的可以用vi或者 安装vim)

 

6.1修改为 daemonize  yes  后台启动。

 

 

6.2 修改端口号对应目录的端口号

 

 6.3 Ip绑定 绑定本机ip

 

6.4数据位置

 

6.5开启集群

 

6.6配置文件

 

 6.7开启

 

以上6个文件分别改成对应的端口号和位置

七、进入redis的src目录启动redis  6个都要启动,注意换配置文件位置

  

八、ps进程看看是否都启动

 

 

九、创建redis集群

 数去yes

 

 

 创建成功

 

 

连接集群

进入到redis src目录

  命令 :>redis-cli -c -h 192.168.199.135 -p 7001

连接成功后操作redis


原因是redis出错了。解决方法如下:

1、使用命令检查REDIS状态:./redis-trib.rb check 192.168.163.131:7001

[ERR] Nodes don't agree about configuration!
>>> Check for open slots...
[WARNING] Node 192.168.163.131:7001 has slots in importing state (4658).
[WARNING] The following slots are open: 4658
>>> Check slots coverage...
[OK] All 16384 slots covered.

2、使用命令修复REDIS: ./redis-trib.rb fix  192.168.249.230:7001

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

[root@node00 src]# ./redis-trib.rb add-node --slave --master-id4f6424e47a2275d2b7696bfbf8588e8c4c3a5b95 172.168.63.202:7001172.168.63.202:7000

......


重启redis集群出现的问题

[OK] All nodes agree about slotsconfiguration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

Connecting to node 172.168.63.202:7001: OK

[ERR] Node 172.168.63.202:7001 is not empty. Either the nodealready knows other nodes (check with CLUSTER NODES) or contains some key in database 0.




解决方法:

1)、将需要新增的节点aofrdb等本地备份文件删除;

2)、同时将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件;

3)、再次添加新节点如果还是报错,则登录新Node,./redis-cli–h x –p对数据库进行清除:

172.168.63.201:7001>  flushdb      #清空当前数据库





猜你喜欢

转载自blog.csdn.net/oyy_90/article/details/80418526
今日推荐