今天学习一下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)、将需要新增的节点下aof、rdb等本地备份文件删除;
2)、同时将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件;
3)、再次添加新节点如果还是报错,则登录新Node,./redis-cli–h x –p对数据库进行清除:
172.168.63.201:7001> flushdb #清空当前数据库