16.04.01 LTS unter AWS - Redis funktioniert nicht mehr

8

Wir haben Redis-Server auf einer Reihe von AWS EC2 Ubuntu-Instanzen (14.04.4 LTS) ohne Probleme ausgeführt. Ich habe einen Testserver hochgefahren, um das Upgrade auf Ubuntu 16.04.1 LTS zu versuchen, und jetzt funktioniert Redis nicht mehr.

Wenn ich versuche, Redis manuell zu starten, erhalte ich Folgendes:

~$ 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.

Fehlerinfo:

~$ 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.

Ich habe folgendes versucht:

  • Server neu gestartet
  • Führen Sie unser Bereitstellungsskript aus, das einen Redis-Neustart umfasst
  • Dient sudo apt-getzum Deinstallieren und erneuten Installieren des Redis-Servers
  • /etc/redis/redis.confFühren Sie die Installation zweimal durch, einmal akzeptieren Sie die neue Datei aus dem Paket und behalten Sie einmal unsere Originaldatei

Irgendwelche Vorschläge?

John Feltz
quelle
Keine Antwort, könnte aber helfen: Sie können Redis als Docker-Container ausführen.
pLumo

Antworten:

5

Ich habe redis mit installiert apt-get install redis-server

Das Problem für mich: Die Tutorials, die ich gefunden habe, zB. Bei der anderen Antwort auf diese Frage wird davon ausgegangen, dass sich Redis-Binärdateien in befinden /usr/local/bin.

Bei meiner Installation befinden sie sich in, /usr/binsodass sich ein Fix dafür ändert /etc/systemd/system/redis.service, um dies widerzuspiegeln.

Zu diesem Zeitpunkt kann ich /usr/bin/redis-server /etc/redis/redis.conf manuell starten und erfolgreich ausführen sudo systemctl start redis.

Was Sie also tun müssen, damit redis am 16.04 funktioniert, ist:

  1. Stellen Sie sicher, dass Sie mit installiert haben apt-get install redis-server, laden Sie den Teer nicht herunter und erstellen und installieren Sie ihn.
  2. Erstellen oder bearbeiten Sie den Redis-Dienst, indem Sie ihn ausführen sudo vi /etc/systemd/system/redis.service
  3. Bearbeiten Sie es so, dass es so aussieht, und speichern Sie es dann:
[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. Beenden Sie vi zurück zu Bash. Sie sollten den Dienst jetzt mit starten könnensudo systemctl start redis
  2. Wenn Punkt 4 nicht funktioniert, können Sie ihn wahrscheinlich zumindest manuell starten, indem Sie ihn ausführen sudo /usr/bin/redis-server /etc/redis/redis.conf.

Der wichtige Teil, den ich bearbeiten musste, war sicherzustellen, dass

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

ExecStop = / usr / bin / redis-cli herunterfahren

Linien zeigten nicht auf usr/local/bin/foo- müssen entfernt werden/local

Scottmeup
quelle
1

Ich hatte das gleiche Problem, aber die Ursache war anders.

Ich habe Redis zum Testen auf einer VM mit DHCP-Client verwendet.

Die Konfiguration /etc/redis/redis.confzeigte auf die falsche (alte) lokale IP und konnte den Dienst daher nicht an die neu zugewiesene IP von DHCP binden.

Hier ist das Protokoll für ein solches Problem:

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.
Stefano Coletta
quelle
0

Vielleicht versuchen Sie dies, hier ist eine funktionierende Konfiguration, um zu /lib/systemd/system/redis.servicesehen, ob dies möglicherweise für Sie funktioniert.

[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

Überprüfen Sie dann die in der Konfiguration angegebene Protokolldatei /etc/redis/redis.conf, um sicherzustellen, dass Sie über die richtigen Berechtigungen verfügen.

ognjen
quelle
0

Wenn Sie Ubuntu verwenden, sollten Sie supervised systemdin /etc/redis/redis.conf.

Amir.S
quelle