J'ai du mal à démarrer mes services Redis sentinel systemd.

Je peux exécuter des sentinelles manuellement avec succès -- par exemple :

[email protected]:/etc/redis# redis-sentinel ./sentinel.conf --sentinel

Trois serveurs redis à 10.9.8.1, .2, .3

.2 et .3 sont des esclaves de .1 et la réplication fonctionne

redisl'utilisateur du service a un 0600accès r/w aux deux redis.confet sentinel.confpour les trois hôtes

Pour Slave1 et Slave2 (10.9.8.2 et 10.9.8.3) j'ai ajouté ce qui suit à redis.conf:

+ slaveof 127.0.0.1 6380

Pour Maître, Esclave1 et Esclave2 :

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

Sortie du maître au démarrage du service :

[email protected]:/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.

    [email protected]:/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 

TVP; il y a 6s Docs : http://redis.io/documentation , man:redis-sentinel(1) Processus : 5376 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-sentinel.post-down.d (code=exited, status=0/SUCCESS) Processus : 7893 ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf (code=exited, status=1/FAILURE) Processus : 7890 ExecStartPre=/bin /run-parts --verbose /etc/redis/redis-sentinel.pre-up.d (code=exited, status=0/SUCCESS)

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.

Sortie de Slave2 au démarrage du service - en cours d'exécution, mais pourquoi la sortie en cas d'échec ? :

[[email protected] etc]# systemctl start redis-sentinel
[[email protected] 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

Sortie de Slave2 au démarrage du service :

[email protected]:/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.
[email protected]:/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.

Aucun d'entre eux ne laisse de sortie dans /var/log/redis/

Des idées?

Merci beaucoup!

answer

Semble être résolu par ce qui suit, trouvé ici : Redis ne commence pas par systemctl

Voir le fichier de configuration :

Si vous exécutez Redis depuis upstart ou systemd, Redis peut interagir avec votre arborescence de supervision. Options : non supervisé - aucune interaction de supervision upstart supervisé - signal upstart en mettant Redis en mode SIGSTOP systemd supervisé - signal systemd en écrivant READY=1 à $NOTIFY_SOCKET auto supervisé - détection de la méthode upstart ou systemd basée sur les variables d'environnement UPSTART_JOB ou NOTIFY_SOCKET Remarque : ces les méthodes de supervision signalent uniquement « le processus est prêt ». Ils n'activent pas les pings de vivacité continus vers votre superviseur.

supervised no

Doit être changé en :

supervised systemd

Vous pouvez également le transmettre sur la ligne de commande, qui remplace le paramètre dans redis.conf. Les systèmes basés sur Red Hat le font. Cela permet également d'exécuter la même instance redis manuellement ou à partir de systemd sans modifier le fichier de configuration.

ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd De plus, vous devez également indiquer à systemd que redis fonctionnera dans ce mode en définissant Type=notify dans la section [Service].