环境:CentOS6.8 minimal版本
1、安装yum install gcc
2、安装yum install tcl
3、安装curl -sSL https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash
4、执行source /etc/profile.d/rvm.sh
5、安装rvm install 1.9.3
6、安装yum install -y rubygems
7、安装gem install redis --version 3.0.0
8、从官网上下载redis-3.2.5.tar.gz
9、解压tar -xvsf redis-3.2.5.tar.gz
10、执行cd redis-3.2.5进入目录,执行make命令
至此,C编译环境安装完毕,redis安装完毕,ruby安装完毕,ruby主要是cluster集群创建工具需要用ruby环境。
接下来部署redis_cluster集群环境
11、准备三台机器A,B,C(redis集群master过半死掉会down机,所以两台对于高可用毫无意义)
12、分别创建目录mkdir /opt/redis_cluster
13、进入目录cd /opt/redis_cluster
14、
A机器上/opt/redis_cluster目录下创建名字为“7000”与“7001”的文件夹:mkdir 7000 7001
B机器上/opt/redis_cluster目录下创建名字为“7002”与“7003”的文件夹:mkdir 7002 7003
C机器上/opt/redis_cluster目录下创建名字为“7004”与“7005”的文件夹:mkdir 7004 7005
15、
三台机器分别进入/opt/redis-3.2.5/src目录,cp一份redis.conf文件出来到/opt/redis_cluster/7000目录下,修改redis.conf文件,原目录下的不用动。具体修改事宜:(仅A机器)
原:port 6379
现:port 7000(修改运行端口)
原:bind 127.0.0.1
现:bind 192.168.10.239 127.0.0.1 (注意,局域网IP一定要放在本机IP前面)
原:daemonize no
现:daemonize yes(修改后台启动)
原:# cluster-enabled yes
现:cluster-enabled yes
原:# cluster-config-file nodes-6379.conf
现:cluster-config-file /opt/redis_cluster/7000/nodes.conf
原:# cluster-node-timeout 15000
现:cluster-node-timeout 15000
原:appendonly no
现:appendonly yes
OK保存,将这一份修改的redis.conf文件放到/opt/redis_cluster/7000下,注意文件名需与redis.conf中的port数值相同,port为7000,那么这份conf文件存放的目录名字也一定是7000。
同理A机器上的7000修改完毕,7001也如此创建。
同理B机器上的7002与7003也这样创建。
同理C机器上的7004与7005也这样创建。
16、分别执行A,B,C机器上的redis
A机器执行:
/opt/redis-3.2.5/src/redis-server /opt/redis_cluster/7000/redis.conf
/opt/redis-3.2.5/src/redis-server /opt/redis_cluster/7001/redis.conf
B机器执行:
/opt/redis-3.2.5/src/redis-server /opt/redis_cluster/7002/redis.conf
/opt/redis-3.2.5/src/redis-server /opt/redis_cluster/7003/redis.conf
C机器执行:
/opt/redis-3.2.5/src/redis-server /opt/redis_cluster/7004/redis.conf
/opt/redis-3.2.5/src/redis-server /opt/redis_cluster/7005/redis.conf
17、在A机器上,进入/opt/redis-3.2.5/src,执行
./redis-trib.rb create --replicas 1 192.168.10.239:7000 192.168.10.239:7001 192.168.10.240:7002 192.168.10.240:7003 192.168.10.241:7004 192.168.10.241:7005
提示成功OK。
18、set测试:(切记使用集群模式连接,否则出现movedError)
/opt/redis-3.2.5/src/redis-cli -c -h 192.168.10.239 -p 7000
set a a
提示reslove到其他IP的机器上了。
19、如果中途出现错误了,想彻底重置:
进入三台机器中的7000-7005的目录下,将nodes.conf文件删除掉,kill掉所有redis的进程,重启redis进程。
rm -rf /opt/redis_cluster/7000/nodes.conf
rm -rf /opt/redis_cluster/7001/nodes.conf
rm -rf /opt/redis_cluster/7002/nodes.conf
rm -rf /opt/redis_cluster/7003/nodes.conf
rm -rf /opt/redis_cluster/7004/nodes.conf
rm -rf /opt/redis_cluster/7005/nodes.conf
20、参考文章:
http://www.cnblogs.com/junl0513/p/833f4d3eefc69485958fe83b5c9057d7.html
http://www.cnblogs.com/yuanermen/p/5717885.html
http://blog.csdn.net/ownfire/article/details/46624005
http://blog.csdn.net/prl18353364833/article/details/52459828
http://blog.csdn.net/c77_cn/article/details/38227797
http://blog.51yip.com/nosql/1726.html
http://www.cnblogs.com/kreo/p/4423362.html
http://blog.csdn.net/rockstar541/article/details/30245493
21、常见问题:
[ERR] Node is not empty. Either the node already knows other nodes
解决方法:
1)、将需要新增的节点下aof、rdb等本地备份文件删除;
2)、同时将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件;
3)、再次添加新节点如果还是报错,则登录新Node,./redis-cli–h x –p对数据库进行清除:
172.168.63.201:7001> flushdb #清空当前数据库