¿Por qué systemctl no inicia redis-server en CentOS 7?

13

He instalado redis en una nueva caja de CentOS 7 pero no puedo iniciarlo usando systemctl.

Se instaló así:

rpm -i http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
yum install redis

Intentar iniciarlo de esta manera pareció fallar silenciosamente (no hubo salida):

systemctl start redis-server # also tried redis-server.service

Esto es lo que sucede cuando intento conectarme:

redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

Pero comenzarlo manualmente funciona:

[root@redis ~]# redis-server /etc/redis.conf
[root@redis ~]# redis-cli
127.0.0.1:6379>

¿Alguien sabe qué está pasando o cómo depurar esto?

ACTUALIZACIÓN: La salida de /var/log/redis/redis.logestá debajo. Por cierto, es un 512 MB de RAM VPS.

[1972] 29 Jul 18:52:16.258 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[1972] 29 Jul 18:52:16.258 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
[1972] 29 Jul 18:52:16.258 # Current maximum open files is 1024. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 2.8.13 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1972
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[1972] 29 Jul 18:52:16.259 # Server started, Redis version 2.8.13
[1972] 29 Jul 18:52:16.259 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[1972] 29 Jul 18:52:16.260 * DB loaded from disk: 0.001 seconds
[1972] 29 Jul 18:52:16.260 * The server is now ready to accept connections on port 6379
[1972] 29 Jul 18:52:16.265 # User requested shutdown...
[1972] 29 Jul 18:52:16.265 * Saving the final RDB snapshot before exiting.
[1972] 29 Jul 18:52:16.267 * DB saved on disk
[1972] 29 Jul 18:52:16.267 * Removing the pid file.
[1972] 29 Jul 18:52:16.267 # Redis is now ready to exit, bye bye...

Y estado:

[root@redis ~]# systemctl status redis-server
redis-server.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis-server.service; disabled)
   Active: inactive (dead)

Jul 29 18:52:16 redis systemd[1]: Starting Redis persistent key-value database...
Jul 29 18:52:16 redis systemd[1]: Started Redis persistent key-value database.
Zubin
fuente
2
Comenzó bien, por supuesto, y luego User requested shutdown...no hay una razón obvia para eso.
Michael Hampton
@MichaelHampton sí, se cierra de inmediato. ¡Realmente me gustaría saber por qué! La única diferencia que puedo ver al ejecutarlo manualmente es que se está ejecutando como root (no como usuario redis).
Zubin

Respuestas:

25

Finalmente lo arreglé. Systemd requiere que redis se ejecute sin demonización, por lo que la configuración debe cambiar:

# /etc/redis.conf
daemonize yes # << comment this out
Zubin
fuente
Excelente. Este es un error en el archivo de la unidad systemd, y debe informarlo .
Michael Hampton
¿Alguna vez resolviste esto? No lo marcaste como resuelto.
Michael Hampton
1
@MichaelHampton Sí, la técnica anterior funcionó. Además, archivé el error y se ha solucionado.
Zubin
te bendiga, hermoso bastardo
Artur Sapek
Descubrí que también necesitaba editar el archivo redis.service (en /etc/systemd/system/multi-user.target.wants), que está vinculado a /usr/lib/systemd/system/redis.server. He cambiado --daemonize yesa, lo has adivinado, --daemonize no.
Martin