web-dev-qa-db-fra.com

16.04.01 LTS sur AWS - Redis ne fonctionne plus

Nous avons exécuté redis-server sur un certain nombre d'instances AWS EC2 Ubuntu (14.04.4 LTS) sans aucun problème. J'ai lancé un serveur de test pour essayer la mise à niveau vers Ubuntu 16.04.1 LTS, et maintenant redis ne fonctionnera plus.

Si j'essaie de démarrer redis manuellement, je reçois ceci:

~$ Sudo service redis-server restart
Job for redis-server.service failed because the control process exited with error code. See "systemctl status redis-server.service" and "journalctl -xe" for details.

Informations d'erreur:

~$ systemctl status redis-server.service  
● redis-server.service - Advanced key-value store
  Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
  Active: inactive (dead) (Result: exit-code) since Wed 2016-10-19 19:26:06 UTC; 25min ago
    Docs: http://redis.io/documentation,
          man:redis-server(1)
 Process: 3730 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=1/FAILURE)
 Process: 3724 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-server.pre-up.d (code=exited, status=0/SUCCESS)

Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Control process exited, code=exited status=1
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Failed to start Advanced key-value store.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Unit entered failed state.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Failed with result 'exit-code'.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Stopped Advanced key-value store.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Start request repeated too quickly.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Failed to start Advanced key-value store.

J'ai essayé ce qui suit:

  • redémarré le serveur
  • lancer notre script de déploiement, qui inclut un redémarrage Redis
  • utilisé Sudo apt-get pour désinstaller et réinstaller redis-server
  • fait l'installation deux fois, acceptant une fois le nouveau fichier /etc/redis/redis.conf du paquet et gardant notre fichier d'origine

Aucune suggestion?

7
John Feltz

J'ai installé redis en utilisant apt-get install redis-server

Le problème pour moi: les tutoriels que j'ai trouvés, par exemple. l'autre réponse à cette question suppose que les fichiers binaires redis se trouvent dans /usr/local/bin.

Sur mon installation, ils se trouvent dans /usr/bin donc un correctif pour cela change /etc/systemd/system/redis.service pour refléter cela.

À ce stade, je peux démarrer /usr/bin/redis-server /etc/redis/redis.conf manuellement et exécuter avec succès Sudo systemctl start redis.

Donc, ce que vous devez faire pour que Redis fonctionne le 16.04 est:

  1. Assurez-vous d’avoir installé avec apt-get install redis-server, ne pas télécharger le fichier tar, puis créer et installer.
  2. Créez ou modifiez le service redis en exécutant Sudo vi /etc/systemd/system/redis.service
  3. Modifiez-le pour qu'il ressemble à ceci puis enregistrez:
[Unit]
Description=Redis Datastore Server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis/redis_6379
User=redis
Group=redis

Environment=statedir=/var/run/redis
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R redis:redis ${statedir}
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/usr/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target
  1. Quittez vi en bash. Vous devriez pouvoir démarrer le service maintenant avec Sudo systemctl start redis
  2. Si le point 4 ne fonctionne pas, vous pouvez probablement au moins le démarrer manuellement en exécutant Sudo /usr/bin/redis-server /etc/redis/redis.conf.

La partie importante que je devais éditer était de faire en sorte que

ExecStart =/usr/bin/redis-server/etc/redis/redis.conf

ExecStop =/usr/bin/redis-cli arrêt

les lignes ne désignent pas usr/local/bin/foo - il faut supprimer le /local

5
Scottmeup

J'ai eu le même problème mais la cause était différente.

J'ai utilisé redis pour tester sur un VM avec un client DHCP.

Config /etc/redis/redis.conf pointait vers la mauvaise (ancienne) adresse IP locale et ne pouvait donc pas lier le service à la nouvelle adresse IP attribuée à partir de DHCP.

Voici le journal pour un tel problème:

mar 13 12:47:53 dev-vm systemd[1]: Failed to start Advanced key-value store.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Unit entered failed state.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Failed with result 'resources'.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
mar 13 12:47:53 dev-vm systemd[1]: Stopped Advanced key-value store.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Start request repeated too quickly.
mar 13 12:47:53 dev-vm systemd[1]: Failed to start Advanced key-value store.
0
Stefano Coletta

Peut-être essayez-vous ceci, voici une configuration qui fonctionne pour /lib/systemd/system/redis.service. Vérifiez si cela fonctionne pour vous.

[Unit]
Description=Redis Datastore Server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis/redis_6379
User=redis
Group=redis

Environment=statedir=/var/run/redis
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R redis:redis ${statedir}
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf 
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

Ensuite, vérifiez le fichier journal spécifié dans /etc/redis/redis.conf de config pour vous assurer que vous disposez des autorisations appropriées.

0
ognjen