升级后,Redis 在 OpenSuse Leap 42.1 上无法启动

升级后,Redis 在 OpenSuse Leap 42.1 上无法启动

我决定将运行 13.2 的机器升级到最新的 Leap 42.1。我启动了该过程,它完成了升级。重启后,除了 redis 服务器服务之外,一切都正常。我无法使用以下命令启动 redis 服务:

# service redis start

状态是:

# service redis status
redis.target - Redis target allowing to start/stop all [email protected] instances at once
   Loaded: loaded (/usr/lib/systemd/system/redis.target; static)
   Active: active since Fri 2015-11-20 03:47:07 EET; 1s ago

尽管它说它处于“活动”状态,但当我检查该进程是否正在运行时,实际上并非如此:

# ps ax | grep -i redis
20892 pts/0    S+     0:00 grep -i redis

我启动 redis 服务器的唯一方法是手动运行:

# redis-server /etc/redis/default.conf

它可以顺利启动服务器。

我尝试重新安装 redis 包,并尝试将供应商从“官方”存储库更改为“server:database”存储库。这些方法似乎都无法解决问题。

我的default.conf文件几乎是“默认”模板,仅更改了这些内容:

daemonize yes #default is no
bind 127.0.0.1 1.2.3.4 #default is 127.0.0.1

服务文件:

/usr/lib/systemd/system/redis.target
[Unit]
Description=Redis target allowing to start/stop all [email protected] instances at once

/usr/lib/systemd/system/[email protected]
[Unit]
Description=Redis
After=network.target
PartOf=redis.target

[Service]
Type=simple
User=redis
Group=redis
PrivateTmp=true
PIDFile=/var/run/redis/%i.pid
ExecStart=/usr/sbin/redis-server /etc/redis/%i.conf
Restart=on-failure

#ExecStart=/usr/sbin/openvpn --daemon --suppress-timestamps --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf
#ExecReload=/sbin/killproc -p /var/run/openvpn/%i.pid -HUP /usr/sbin/openvpn

[Install]
WantedBy=multi-user.target redis.target

你知道从 13.2 到 42.1 发生了什么变化吗?为什么服务停止工作了?另外,我似乎不记得我以前是如何列出 redis 的chkconfig- 升级后它就从那里消失了,尽管我不太确定这是否是问题的一部分。

编辑:这是感谢@Michael Hampton 的日志文件:

9042:signal-handler (1448036091) Received SIGTERM scheduling shutdown...
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.4 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 9042
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

9042:M 20 Nov 18:14:51.090 # Server started, Redis version 3.0.4
9042:M 20 Nov 18:14:51.091 * DB loaded from disk: 0.000 seconds
9042:M 20 Nov 18:14:51.091 * The server is now ready to accept connections on port 6379
9042:M 20 Nov 18:14:51.091 # User requested shutdown...
9042:M 20 Nov 18:14:51.091 * Saving the final RDB snapshot before exiting.
9042:M 20 Nov 18:14:51.126 * DB saved on disk
9042:M 20 Nov 18:14:51.126 * Removing the pid file.
9042:M 20 Nov 18:14:51.126 # Redis is now ready to exit, bye bye...

我不知道为什么它会因为“用户请求关闭”而决定自发退出。

答案1

这是一个 systemd 单元,能够实例化具有不同配置的服务器的多个副本。

要使用它,请指定要使用的实例的名称。例如,您现有的配置似乎具有以下名称default

systemctl enable redis@default
systemctl start redis@default

您可能需要进行更改,/etc/redis/default.conf以便它将写入pidfilesystemd 期望的位置。

pidfile /var/run/redis/default.pid

答案2

搜索了一段时间后,我发现需要注释掉daemonize yes或将其设置为no。有趣的是,我在 13.2 上使用了相同的配置,并且没有任何问题。

无论如何希望这对任何人都有帮助。

相关内容