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
redis
El usuario del servicio tiene 0600
acceso r/w a ambos redis.conf
y sentinel.conf
para 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].