Los servicios de Redis Sentinel Systemd no se inician en Ubuntu 16.04 y CentOS 7

Los servicios de Redis Sentinel Systemd no se inician en Ubuntu 16.04 y CentOS 7

Tengo problemas para iniciar los servicios systemd de Redis Sentinel.

Puedo ejecutar centinelas manualmente con éxito, por ejemplo:

root@poolwc:/etc/redis# redis-sentinel ./sentinel.conf --sentinel

Tres servidores redis en 10.9.8.1, .2, .3

.2 y .3 son esclavos de .1 y la replicación está funcionando

redisEl usuario del servicio tiene 0600acceso r/w a ambos redis.confy sentinel.confpara los tres hosts.

Para Slave1 y Slave2 (10.9.8.2 y 10.9.8.3) agregué lo siguiente redis.conf:

+ slaveof 127.0.0.1 6380

Para Maestro, Esclavo1 y Esclavo2:

sentinel.conf:

sentinel monitor mymaster 10.9.8.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

Salida del maestro al iniciar el servicio:

root@poolwc:/etc/redis# systemctl start redis-sentinel
Job for redis-sentinel.service failed because the control process exited with error code. See "systemctl status redis-sentinel.service" and "journalctl -xe" for details.

    root@poolwc:/etc/redis# systemctl status redis-sentinel.service
    ● redis-sentinel.service - Advanced key-value store
       Loaded: loaded (/lib/systemd/system/redis-sentinel.service; enabled; vendor preset: enabled)
       Active: inactive (dead) (Result: exit-code) since Mon 2018-02-26 21:54:12 

hora del Pacífico; Hace 6 segundos Documentos:http://redis.io/documentation, man:redis-sentinel(1) Proceso: 5376 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-sentinel.post-down.d (código=salido, estado=0/ÉXITO) Proceso: 7893 ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf (código=salido, estado=1/FALLO) Proceso: 7890 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis -sentinel.pre-up.d (código=salido, estado=0/ÉXITO)

Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Control process exited, code=exited status=1
Feb 26 21:54:12 poolwc systemd[1]: Failed to start Advanced key-value store.
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Unit entered failed state.
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Failed with result 'exit-code'.
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Service hold-off time over, scheduling restart.
Feb 26 21:54:12 poolwc systemd[1]: Stopped Advanced key-value store.
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Start request repeated too quickly.
Feb 26 21:54:12 poolwc systemd[1]: Failed to start Advanced key-value store.

Salida de Slave2 al iniciar el servicio: en ejecución, pero ¿por qué la salida en caso de falla?:

[root@ns1 etc]# systemctl start redis-sentinel
[root@ns1 etc]# systemctl status redis-sentinel
● redis-sentinel.service - Redis Sentinel
   Loaded: loaded (/usr/lib/systemd/system/redis-sentinel.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis-sentinel.service.d
           └─limit.conf
   Active: active (running) since Mon 2018-02-26 21:55:58 PST; 5s ago
  Process: 12876 ExecStop=/usr/libexec/redis-shutdown redis-sentinel (code=exited, status=1/FAILURE)
 Main PID: 12944 (redis-sentinel)
   CGroup: /system.slice/redis-sentinel.service
           └─12944 /usr/bin/redis-sentinel *:26379 [sentinel]

Feb 26 21:55:58 ns1 redis-sentinel[12944]: |    `-._`-._        _.-'_.-'    |           http://redis.io
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-._    `-._`-.__.-'_.-'    _.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: |`-._`-._    `-.__.-'    _.-'_.-'|
Feb 26 21:55:58 ns1 redis-sentinel[12944]: |    `-._`-._        _.-'_.-'    |
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-._    `-._`-.__.-'_.-'    _.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-._    `-.__.-'    _.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-._        _.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-.__.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: 12944:X 26 Feb 21:55:58.490 # Sentinel ID is 659761a6f8328e59d43086ef3265450fcec5d2f5
Feb 26 21:55:58 ns1 redis-sentinel[12944]: 12944:X 26 Feb 21:55:58.490 # +monitor master mymaster 10.9.8.1 6379 quorum 2

Salida de Slave2 al iniciar el servicio:

root@poolec:/etc/redis# systemctl start redis-sentinel
Job for redis-sentinel.service failed because the control process exited with error code. See "systemctl status redis-sentinel.service" and "journalctl -xe" for details.
root@poolec:/etc/redis# systemctl status redis-sentinel

    ● redis-sentinel.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-sentinel.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Tue 2018-02-27 05:57:09 UTC; 5s ago
     Docs: http://redis.io/documentation,
           man:redis-sentinel(1)
  Process: 4130 ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf (code=exited, status=1/FAILURE)
  Process: 4127 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-sentinel.pre-up.d (code=exited, status=0/SUCCESS)

Feb 27 05:57:09 poolec systemd[1]: redis-sentinel.service: Unit entered failed state.
Feb 27 05:57:09 poolec systemd[1]: redis-sentinel.service: Failed with result 'exit-code'.
Feb 27 05:57:09 poolec systemd[1]: redis-sentinel.service: Service hold-off time over, scheduling restart.
Feb 27 05:57:09 poolec systemd[1]: Stopped Advanced key-value store.
Feb 27 05:57:09 poolec systemd[1]: redis-sentinel.service: Start request repeated too quickly.
Feb 27 05:57:09 poolec systemd[1]: Failed to start Advanced key-value store.

Ninguno de ellos deja ninguna salida en/var/log/redis/

¿Algunas ideas?

¡Muchas gracias!

Respuesta1

Parece resolverse con lo siguiente, que se encuentra aquí:Redis no comienza con systemctl

Ver el archivo de configuración:

Si ejecuta Redis desde upstart o systemd, Redis puede interactuar con su árbol de supervisión. Opciones: supervisado no - sin interacción de supervisión advenedizo supervisado - señala el advenedizo poniendo Redis en modo SIGSTOP systemd supervisado - señala systemd escribiendo READY=1 en $NOTIFY_SOCKET auto supervisado - detecta el método advenedizo o systemd basado en las variables de entorno UPSTART_JOB o NOTIFY_SOCKET Nota: estas Los métodos de supervisión sólo indican "el proceso está listo". No permiten pings de vida continuos a su supervisor.

supervised no

Debe cambiarse a:

supervised systemd

También puede pasar esto en la línea de comando, que anula la configuración en redis.conf. Los sistemas basados ​​en Red Hat hacen esto. Esto también permite ejecutar la misma instancia de Redis manualmente o desde systemd sin cambiar el archivo de configuración.

ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd Además, también debe indicarle a systemd que redis funcionará en este modo configurando Type=notify en la sección [Servicio].

información relacionada