16.04.01 LTS na AWS - Redis não está mais funcionando

10

Estamos executando o redis-server em várias instâncias do AWS EC2 Ubuntu (14.04.4 LTS) sem problemas. Acelerei um servidor de teste para tentar a atualização para o Ubuntu 16.04.1 LTS e agora os redis não funcionarão.

Se eu tentar iniciar o redis manualmente, recebo o seguinte:

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

Informações de erro:

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

Eu tentei o seguinte:

  • reiniciou o servidor
  • execute nosso script de implantação, que inclui uma reinicialização redis
  • usado sudo apt-getpara desinstalar e reinstalar o redis-server
  • fizemos a instalação duas vezes, uma vez aceitando o novo /etc/redis/redis.confarquivo do pacote e mantendo nosso arquivo original

Alguma sugestão?

John Feltz
fonte
não é uma resposta, mas pode ajudar: Você pode executar o redis como um contêiner de docker.
PLumo # 13/18

Respostas:

5

Eu instalei o redis usando apt-get install redis-server

O problema para mim: os tutoriais que encontrei, por exemplo. a outra resposta a esta pergunta assume que os binários redis estão localizados /usr/local/bin.

Na minha instalação, eles estão localizados, /usr/binentão uma correção para isso está mudando /etc/systemd/system/redis.servicepara refletir isso.

Neste ponto, posso iniciar /usr/bin/redis-server /etc/redis/redis.conf manualmente e executar com êxito sudo systemctl start redis.

Portanto, o que você precisa fazer para que o redis funcione no 16.04 é:

  1. Verifique se você instalou usando apt-get install redis-server, não faça o download do tar e faça e instale.
  2. Crie ou edite o serviço redis executando sudo vi /etc/systemd/system/redis.service
  3. Edite para ficar assim e salve:
[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. Saia do vi de volta ao bash. Você deve poder iniciar o serviço agora comsudo systemctl start redis
  2. Se o ponto 4 não funcionar, você provavelmente pode pelo menos iniciá-lo manualmente executando sudo /usr/bin/redis-server /etc/redis/redis.conf.

A parte importante que eu tive que editar foi garantir que

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

ExecStop = / usr / bin / redis-cli shutdown

linhas não apontavam para usr/local/bin/foo- é necessário remover o/local

Scottmeup
fonte
1

Eu tive o mesmo problema, mas a causa foi diferente.

Usei redis para testar em uma VM com o cliente dhcp.

A configuração /etc/redis/redis.confestava apontando para o IP local errado (antigo) e, portanto, não pôde vincular o serviço ao novo IP atribuído do DHCP.

Aqui está o log para esse 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.
Stefano Coletta
fonte
0

Talvez tente isso, aqui está uma configuração de trabalho para /lib/systemd/system/redis.servicever se isso talvez funcione para você.

[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

Em seguida, verifique o arquivo de log especificado na configuração /etc/redis/redis.confpara garantir que você tenha as permissões corretas.

ognjen
fonte
0

Se você estiver usando o Ubuntu, você deve ter supervised systemdem /etc/redis/redis.conf.

Amir.S
fonte
0

Abra seu terminal e execute o comando ifconfig, então você obterá o seu endereço IP como 192.168.0.109 e editará sua configuração executando o comando sudo nano /etc/redis/redis.conf aqui o nano é um editor. Você pode usar qualquer outro editor o que quiser, então procure bind e coloque seu endereço IP como

bind 127.0.0.1 192.168.0.109 aqui meu ip é 192.168.0.109 e reinicie o servidor por este comando sudo systemctl restart redis.service verifique o status do servidor sudo systemctl status redis e você o encontrará ativo

Sadi
fonte