Redis集群教程
作者:互联网
Redis 集群(Redis 5.0.5)
总体目标
在两台机器上部署Redis集群,用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境,分别是192.168.112.130与192.168.112.131,每台机器上使用6600,6700,6800三个端口。
-
下载与解压
wget http://download.redis.io/releases/redis-5.0.5.tar.gz tar xzf redis-5.0.5.tar.gz cd redis-5.0.5 make
如果没有安装C/C++编译器,安装指令如下:
yum -y install gcc-c++
或者手动下载再上传至服务器。
-
进行配置。
在经历过不少麻烦后,我发现可以考虑使用linux提供的在vi中使用命令行:s/old/new 来修改配置文件关键字的方法来进行修改。
首先还是创建相应的文件夹,在redis-5.0.5目录项新建cluster目录,然后在cluster目录下新建三个目录,分别是6600,6700,6800。
cd /home/yan/redis-5.0.5 mkdir cluster cd cluster mkdir 6600 6700 6800
首先我们配置6600节点,首先复制官方的配置文件到6600目录。
cd /home/yan/redis-5.0.5 cp redis.conf cluster/6600
接着修改配置文件相关内容:
port 6600 bind 0.0.0.0 // 为了让其他机器访问,必须修改为0.0.0.0或内网IP daemonize yes // redis后台运行 pidfile /var/run/redis_6600.pid // pidfile文件对应6600,6700,6800 cluster-enabled yes // 开启集群 把注释#去掉 cluster-config-file nodes_6600.conf // 集群的配置 配置文件首次启动自动 cluster-node-timeout 15000 // 请求超时 默认15秒,可自行设置 appendonly yes // 有需要就开启,它会每次写操作都记录一条日志
并且添加密码,即在里面添加如下一行内容:
requirepass 123456
检查6600是否配置好。
src/redis-server cluster/6600/redis.conf
能够正常运行的话则表示修改成功。接着配置6700和6800就非常简单了。
首先复制6600的配置文件到6700与6800目录下
cp cluster/6600/redis.conf cluster/6700 cp cluster/6600/redis.conf cluster/6800
vi 进入编辑页面,使用:s/old/new 方法替代所有的6600为6700。
vi cluster/6700/redis.conf ## 在vi界面中输入 :%s/6600/6700/g
同样的道理,把6800目录下的配置文件进行修改。
-
总体测试
分别启动三个节点(前面已经启动6600)
src/redis-server cluster/6700/redis.conf src/redis-server cluster/6800/redis.conf
查看是否成功启动:
ps aux | grep redis
-
另外一个服务器,因为端口相同,所以推荐直接使用SCP命令进行下载。
# 首先跳转到未配置的服务器6600路径 cd /home/yan/redis-5.0.5/cluster/6600 scp yan@192.168.112.131:/home/yan/redis-5.0.5/cluster/6600/redis.conf
可能会提示输入密码,输入配置好的那台服务器密码即可。同样适用于6700,6800,然后启动方法也是一样的。
-
创建集群
在其中某一个服务器上创建集群即可。
src/redis-cli --cluster create 192.168.112.131:6600 192.168.112.131:6700 192.168.112.131:6800 192.168.112.130:6600 192.168.112.130:6700 192.168.112.130:6800
官网教程除了上面这种还有就是下载安装Ruby然后再执行某个脚本的,但是经过一番折腾我发现并不方便,不如直接用上面方式创建。
运行成功后会有个提示,输入yes即可。
集群成功后效果如图所示:
-
最后测试一下集群效果,在某一台服务上登陆另外一台的redis,然后写入一个键值对,然后再用另一台服务器查看这个数据。
src/redis-cli -h 192.168.112.130 -p 6700 -a 123456
然后输入 set hello world
接着在另外一个节点查看即可。
常见错误
源码安装时,报错,
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
指令make指令时,改为 make MALLOC=libc
集群时,提示需要密码,
[ERR] Node 192.168.112.131:6600 NOAUTH Authentication required.
运行时指令需要添加密码。即 -a 123456
集群时,提示某个redis不是空的,
[ERR] Node 192.168.112.131:6600 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
首先需要清空redis-5.0.5目录下的三类文件 appendonly.aof、dump.rdb、node_xxx.conf,然后清空已经有的数据,
flushdb
cluster reset
集群完成后,做个测试时,
192.168.112.131:6700> set hello world
(error) MOVED 866 192.168.112.131:6600
不能在这个地方进行set,根据提示需要到6600端口进行。
官方教程
https://redis.io/topics/cluster-tutorial
总结
Redis集群感觉有些麻烦,特别是在第一次集群的时候,可能会遇到一系列问题,但是经历过这次集群就非常简单了。
跟其他的博客教程可能不一样,集群的时候我并没有安装Ruby,当然我尝试安装过,不过后来发现比较麻烦,所以还是觉得官方提供的另一种集群方法更加方便一些。
如果有遇到什么问题,欢迎留言交流!
Smileyan
2019年7月31日 11:11
标签:教程,Redis,redis,192.168,6600,cluster,集群,6700 来源: https://blog.csdn.net/smileyan9/article/details/97897665