配置 redis 集群时,我使用了同一个 server 端运行3个不同的配置文件。
配置文件中只修改了端口号并打开了 cluster-enable。
脚本运行后什么提示都没有,我以为成功了,但是 ps 却看到只有第一个6379端口的和哨兵端启动了。
然后我就下意识地输入了redis-server /root/redis.conf.d/redis-6380.conf,运行后还是没有任何提示,也没有启动。后来捣鼓了一会儿得知是因为第一个服务启动时在配置文件的 dir 配置目录下生成了 nodes.conf 的文件,由于三个配置文件是复制出来的, dir 都是一样的,所以第一个 redis 启动成功了,但是后面第二三个检测到 dir 目录下有 nodes.conf 文件,就以为已经启动,所以就没有启动。简而言之,就是 nodes.conf 文件冲突了。
如何解决这个问题呢,有两个办法:第一是修改 dir 的位置,第二是修改 nodes.conf 的文件名。 dir 可以认为是 redis 的 home , rdb 文件、 aof 文件和 nodes 文件都会生成在这里。把三个 dir 改得不同,自然可以避免nodes 配置冲突的问题。事实上,不仅 nodes 会冲突, rdb 和 aof 也会冲突,但是我之前有把 rdb 文件改过名:在配置里找到 dbfilename ,把名字改得不同即可。同理,nodes 也是,找到 cluster-config-file ,把名字改得不同即可。这里我采用的是第二种方法,三个服务的文件都生成在一个文件夹里。
这样,就解决了文件冲突的问题。