12 votes

16.04.01 LTS sur AWS - Redis ne fonctionne plus

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

Si j'essaie de démarrer redis manuellement, j'obtiens 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.

Info 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émarrage du serveur
  • exécuter notre déploiement script, qui inclut un redémarrage de redis
  • utilisé sudo apt-get pour désinstaller et réinstaller redis-server
  • a effectué l'installation deux fois, une fois en acceptant le nouveau /etc/redis/redis.conf du paquet, et en conservant notre fichier d'origine

Des suggestions ?

7voto

Scottmeup Points 221

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, supposent que les binaires redis sont situés dans /usr/local/bin .

Sur mon installation, ils sont situés dans /usr/bin La solution à ce problème est donc en cours de modification /etc/systemd/system/redis.service pour en tenir compte.

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

Ce qu'il faut donc faire pour que redis fonctionne sur 16.04, c'est.. :

  1. Assurez-vous d'avoir effectué l'installation en utilisant apt-get install redis-server , ne télécharger le tar, puis make & install.
  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. Quitter vi pour revenir à bash. Vous devriez être en mesure de 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 lançant sudo /usr/bin/redis-server /etc/redis/redis.conf .

La partie importante que j'ai dû éditer était de m'assurer que

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

ExecStop=/usr/bin/redis-cli shutdown

n'ont pas indiqué de usr/local/bin/foo - doivent être enlevés. /local

1voto

Stefano Coletta Points 111

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

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

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

Voici le journal de ce 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.

1voto

Amir.S Points 151

Si vous utilisez Ubuntu, vous devez avoir supervised systemd en /etc/redis/redis.conf .

0voto

ognjen Points 1003

Essayez peut-être ceci, voici une configuration qui fonctionne pour /lib/systemd/system/redis.service Voyez si cela peut vous convenir.

[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

Vérifiez ensuite le fichier journal spécifié dans la configuration /etc/redis/redis.conf pour vous assurer que vous disposez des autorisations nécessaires.

0voto

Sadi Points 1

Ouvrez votre terminal et lancez la commande ifconfig vous obtiendrez votre adresse IP comme 192.168.0.109 Editez ensuite votre configuration en exécutant la commande sudo nano /etc/redis/redis.conf ici nano est un éditeur. Vous pouvez utiliser n'importe quel autre éditeur puis cherchez bind et mettez votre adresse ip comme

bind 127.0.0.1 192.168.0.109 ici mon ip est 192.168.0.109 puis redémarrez votre serveur par cette commande sudo systemctl restart redis.service vérifiez l'état de votre serveur sudo systemctl status redis vous verrez qu'il est actif

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X