16.04.01 LTS su AWS - Redis non funziona più


10

Abbiamo eseguito redis-server su una serie di istanze AWS EC2 Ubuntu (14.04.4 LTS) senza problemi. Ho avviato un server di prova per provare l'aggiornamento a Ubuntu 16.04.1 LTS, e ora redis non funzionerà.

Se provo ad avviare redis manualmente, ottengo questo:

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

Informazioni sull'errore:

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

Ho provato quanto segue:

  • riavviato il server
  • eseguire il nostro script di distribuzione, che include un riavvio redis
  • utilizzato sudo apt-getper disinstallare e reinstallare redis-server
  • fatto l'installazione due volte, una volta accettando il nuovo /etc/redis/redis.conffile dal pacchetto e conservando il nostro file originale

Eventuali suggerimenti?


non è una risposta, ma potrebbe essere d'aiuto: è possibile eseguire redis come contenitore docker.
pLumo,

Risposte:


5

Ho installato redis usando apt-get install redis-server

Il problema per me: i tutorial che ho trovato ad es. l'altra risposta a questa domanda presuppone che si trovino i binari redis /usr/local/bin.

Sulla mia installazione si trovano in /usr/binmodo che una correzione per questo sta cambiando /etc/systemd/system/redis.serviceper riflettere questo.

A questo punto posso avviare /usr/bin/redis-server /etc/redis/redis.conf manualmente ed eseguire correttamente sudo systemctl start redis.

Quindi quello che devi fare per far funzionare Redis su 16.04 è:

  1. Assicurati di aver installato utilizzando apt-get install redis-server, non scaricare il tar, quindi crea e installa.
  2. Crea o modifica il servizio redis eseguendo sudo vi /etc/systemd/system/redis.service
  3. Modificalo in questo modo, quindi salva:
[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. Torna vi a bash. Dovresti essere in grado di avviare il servizio ora consudo systemctl start redis
  2. Se il punto 4 non funziona, probabilmente puoi almeno avviarlo manualmente eseguendolo sudo /usr/bin/redis-server /etc/redis/redis.conf.

La parte importante che ho dovuto modificare è stata assicurarmi che

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

ExecStop = / usr / bin / redis-cli shutdown

le linee non puntavano usr/local/bin/foo- è necessario rimuovere il/local


1

Ho avuto lo stesso problema ma la causa era diversa.

Ho usato redis per i test su una VM con client dhcp.

La configurazione /etc/redis/redis.confindicava un IP locale (vecchio) errato e quindi non poteva associare il servizio al nuovo IP assegnato dal DHCP.

Ecco il registro per tale problema:

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

Forse prova questo, ecco una configurazione funzionante per /lib/systemd/system/redis.servicevedere se questo forse funziona per te.

[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

Quindi controlla il file di registro specificato nella configurazione /etc/redis/redis.confper assicurarti di disporre delle autorizzazioni corrette.


0

Se stai usando Ubuntu, si dovrebbe avere supervised systemdin /etc/redis/redis.conf.


0

Apri il tuo terminale ed esegui il comando ifconfig quindi otterrai il tuo indirizzo IP come 192.168.0.109 quindi modifica la configurazione eseguendo il comando sudo nano /etc/redis/redis.conf qui nano è un editor. Puoi usare qualsiasi altro editor come vuoi, quindi cerca il bind e inserisci il tuo indirizzo IP come

bind 127.0.0.1 192.168.0.109 qui il mio ip è 192.168.0.109 quindi riavvia il server con questo comando sudo systemctl riavvia redis.service controlla lo stato del tuo server sudo systemctl status redis quindi lo troverai attivo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.