16.04.01 LTS на AWS - Redis больше не работает

10

Мы работали с redis-сервером на нескольких экземплярах AWS EC2 Ubuntu (14.04.4 LTS) без проблем. Я развернул тестовый сервер, чтобы попробовать обновление до Ubuntu 16.04.1 LTS, и теперь redis не будет работать.

Если я пытаюсь запустить Redis вручную, я получаю это:

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

Информация об ошибке:

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

Я пробовал следующее:

  • перезапустил сервер
  • запустите наш скрипт развертывания, который включает перезапуск Redis
  • используется sudo apt-getдля удаления и повторной установки Redis-сервера
  • выполнить установку дважды, один раз приняв новый /etc/redis/redis.confфайл из пакета, и один раз сохранив наш оригинальный файл

Какие-либо предложения?

Джон Фельц
источник
не ответ, но может помочь: вы можете запустить Redis как контейнер Docker.
pLumo

Ответы:

5

Я установил Redis с помощью apt-get install redis-server

Проблема для меня: учебники, которые я нашел, например. другой ответ на этот вопрос предполагает, что файлы Redis находятся в /usr/local/bin.

На моей установке они расположены /usr/binтак, что исправление для этого меняется, /etc/systemd/system/redis.serviceчтобы отразить это.

На данный момент я могу при запуске /usr/bin/redis-server /etc/redis/redis.conf вручную и успешно запустить sudo systemctl start redis.

Итак, что вам нужно сделать, чтобы Redis работал на 16.04:

  1. Убедитесь, что вы установили с помощью apt-get install redis-server, не загружайте tar, затем создайте и установите.
  2. Создайте или отредактируйте сервис redis, запустив sudo vi /etc/systemd/system/redis.service
  3. Отредактируйте его, чтобы он выглядел следующим образом, затем сохраните
[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. Выйти из ви обратно в bash. Вы должны иметь возможность начать службу сейчас сsudo systemctl start redis
  2. Если пункт 4 не работает, вы можете запустить его вручную sudo /usr/bin/redis-server /etc/redis/redis.conf.

Важной частью, которую я должен был отредактировать, было убедиться, что

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

ExecStop = / usr / bin / redis-cli shutdown

линии не указывают usr/local/bin/foo- нужно удалить/local

Scottmeup
источник
1

У меня была та же проблема, но причина была в другом.

Я использовал redis для тестирования на виртуальной машине с клиентом dhcp.

Конфиг /etc/redis/redis.confуказывал на неправильный (старый) локальный IP-адрес, и поэтому он не мог привязать службу к новому назначенному IP-адресу от DHCP.

Вот журнал для такой проблемы:

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

Может быть, попробуйте это, вот рабочий конфиг, чтобы /lib/systemd/system/redis.serviceувидеть, если это может работать для вас.

[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

Затем проверьте файл журнала, указанный в конфигурации, /etc/redis/redis.confчтобы убедиться, что у вас есть правильные разрешения.

Огнен
источник
0

Если вы используете Ubuntu, вы должны иметь supervised systemdв /etc/redis/redis.conf.

Amir.S
источник
0

Откройте свой терминал и выполните команду ifconfig, тогда вы получите свой IP-адрес, например 192.168.0.109, затем отредактируйте свою конфигурацию, выполнив команду sudo nano /etc/redis/redis.conf, здесь nano - редактор. Вы можете использовать любой другой редактор, какой захотите, затем выполнить поиск в bind и указать свой IP-адрес, например:

bind 127.0.0.1 192.168.0.109 здесь мой ip 192.168.0.109, затем перезапустите ваш сервер с помощью этой команды sudo systemctl restart redis.service проверьте состояние вашего сервера sudo systemctl status redis, тогда вы найдете его активным

Сади
источник