为了方便集群的启动,所以写了一个脚本来启动所有的服务,但是用shell脚本启动redis的时候出现了问题。虽然redis相关的进程已经在运行,但是redis集群就是不起作用。
用以下命令检测集群的状态:
/usr/local/redis/src/redis-trib.rb check 192.168.3.200:6379
错误日志提示信息如下:
26901:M 12 Aug 09:53:29.598 * Increased maximum number of open files to 10032 (it was originally set to 1024).
26901:M 12 Aug 09:53:29.615 * Node configuration loaded, I'm 1715658d95e62555356e375dce9b4a69c7a9375f
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.0 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in cluster mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 26901
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
26901:M 12 Aug 09:53:29.617 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
26901:M 12 Aug 09:53:29.617 # Server started, Redis version 3.2.0
26901:M 12 Aug 09:53:29.617 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
26901:M 12 Aug 09:53:29.630 * DB loaded from disk: 0.000 seconds
26901:M 12 Aug 09:53:29.630 * The server is now ready to accept connections on port 6379
从提示信息可以看到,他加载rdb的时间为0,也就是说,他没能成功加载到dump.rdb信息。
这个原因主要是由于redis.conf配置文件中的dir参数引起的,因为他默认的是./,也就是当前目录,所以用shell启动的时候他找不到具体的dump.rdb文件。
解决的办法是,给dir属性一个绝对路径,如下所示
dir /usr/local/redis/6379/
所以redis会根据配置文件的dir属性,把dump.rdb文件放到/usr/local/redis/6379下