16.04.01 LTS w AWS - Redis już nie działa

10

Uruchomiliśmy serwer redis na wielu instancjach AWS EC2 Ubuntu (14.04.4 LTS) bez żadnych problemów. Uruchomiłem serwer testowy, aby wypróbować aktualizację do Ubuntu 16.04.1 LTS, a teraz redis nie będzie działać.

Jeśli spróbuję uruchomić redis ręcznie, otrzymuję:

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

Informacje o błędzie:

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

Próbowałem następujące:

  • zrestartował serwer
  • uruchom nasz skrypt wdrażania, który obejmuje ponowne uruchomienie redis
  • służy sudo apt-getdo odinstalowywania i ponownej instalacji serwera redis
  • wykonałem instalację dwa razy, raz akceptując nowy /etc/redis/redis.confplik z pakietu i raz zachowując nasz oryginalny plik

Jakieś sugestie?

John Feltz
źródło
nie jest odpowiedzią, ale może pomóc: możesz uruchomić redis jako kontener dokerów.
pLumo,

Odpowiedzi:

5

Zainstalowałem redis używając apt-get install redis-server

Problem dla mnie: samouczki, które znalazłem np. druga odpowiedź na to pytanie zakłada, że ​​pliki binarne redis znajdują się w /usr/local/bin.

W mojej instalacji są one zlokalizowane, /usr/binwięc poprawka zmienia się, /etc/systemd/system/redis.serviceaby to odzwierciedlić.

W tym momencie mogę na początku /usr/bin/redis-server /etc/redis/redis.conf ręcznie i z powodzeniem uruchomić sudo systemctl start redis.

Więc co musisz zrobić, aby redis działał 16.04:

  1. Upewnij się, że zainstalowałeś apt-get install redis-server, nie pobieraj tar, a następnie wykonaj i zainstaluj.
  2. Utwórz lub edytuj usługę redis, uruchamiając sudo vi /etc/systemd/system/redis.service
  3. Edytuj go, aby wyglądał tak, a następnie zapisz:
[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. Wróć vi do bash. Powinieneś być w stanie uruchomić usługę już terazsudo systemctl start redis
  2. Jeśli punkt 4 nie działa, prawdopodobnie możesz przynajmniej uruchomić go ręcznie, uruchamiając sudo /usr/bin/redis-server /etc/redis/redis.conf.

Ważną częścią, którą musiałem edytować, było upewnienie się

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

ExecStop = / usr / bin / redis-cli zamknięcie

linie nie wskazywały usr/local/bin/foo- trzeba usunąć/local

Scottmeup
źródło
1

Miałem ten sam problem, ale przyczyna była inna.

Użyłem redis do testowania na maszynie wirtualnej z klientem dhcp.

Konfiguracja /etc/redis/redis.confwskazywała na zły (stary) lokalny adres IP i dlatego nie mogła powiązać usługi z nowym przypisanym adresem IP z DHCP.

Oto dziennik takiego problemu:

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
źródło
0

Może spróbuj tego, oto działająca konfiguracja, aby /lib/systemd/system/redis.servicesprawdzić, czy to może Ci pomóc.

[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

Następnie sprawdź plik dziennika określony w konfiguracji, /etc/redis/redis.confaby upewnić się, że masz odpowiednie uprawnienia.

ognjen
źródło
0

Jeśli używasz Ubuntu, trzeba mieć supervised systemdw /etc/redis/redis.conf.

Amir S.
źródło
0

Otwórz terminal i uruchom polecenie ifconfig, a następnie otrzymasz adres IP, taki jak 192.168.0.109, a następnie edytuj konfigurację, uruchamiając polecenie sudo nano /etc/redis/redis.conf tutaj nano jest edytorem. Możesz użyć dowolnego innego edytora, a następnie wyszukać powiązać i podać adres IP jak

powiązanie 127.0.0.1 192.168.0.109 tutaj mój adres IP to 192.168.0.109, następnie zrestartuj serwer za pomocą tego polecenia sudo systemctl uruchom ponownie redis. usługa sprawdź status serwera sudo systemctl status redis, a zobaczysz, że jest aktywny

Sadi
źródło