Ubuntu如何运行多Redis主从实例并配置自启,systemd服务失效排查
配置错误原因
- Service类型不匹配:默认Redis配置中
daemonize yes处于开启状态,启动时会fork子进程后台运行,父进程直接退出。你配置的Type=simple会将父进程退出判定为服务启动失败,自动清理残留子进程,最终导致从节点进程被销毁。 - 缺少PIDFile配置:systemd无法正确识别Redis后台运行的子进程PID,无法对服务状态做正确判断。
修正方案
步骤1:调整Redis从节点配置
先编辑/etc/redis/redisSlave.conf,确认或添加PID文件配置:
pidfile /run/redis/redis-slave.pid
如果有多个从节点,每个节点的PID文件路径要区分开,比如redis-slave2.pid等。
步骤2:修正systemd服务配置
替换redis-slave.service的内容为以下配置:
[Unit] Requires=redis-server.service After=redis-server.service Description=Redis Slave Instance [Service] Type=forking User=root PIDFile=/run/redis/redis-slave.pid ExecStart=/usr/bin/redis-server /etc/redis/redisSlave.conf Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
步骤3:生效配置并启动服务
执行以下命令重载配置并启动服务:
sudo systemctl daemon-reload sudo systemctl restart redis-slave.service
此时再执行systemctl status redis-slave.service即可看到服务正常运行,端口也能正常监听。多从节点可以按照相同逻辑修改配置路径、PID路径、服务文件名后重复上述操作即可。
内容的提问来源于stack exchange,提问作者ikiSiTamvaaan
相关产品推荐
相关产品推荐

