web-dev-qa-db-ja.com

16.04.01 LTS on AWS-Redisが機能しなくなった

多数のAWS EC2 Ubuntuインスタンス(14.04.4 LTS)で問題なくredis-serverを実行しています。 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 restartを含む展開スクリプトを実行します
  • Sudo apt-getを使用してredis-serverをアンインストールおよび再インストールしました
  • パッケージから新しい/etc/redis/redis.confファイルを受け入れ、元のファイルを保持した後、インストールを2回行いました。

助言がありますか?

7
John Feltz

apt-get install redis-serverを使用してredisをインストールしました

私にとっての問題:私が見つけたチュートリアル。この質問に対する他の回答は、redisバイナリが/usr/local/binにあると仮定しています。

私のインストールでは、それらは/usr/binにあるので、それに対する修正は/etc/systemd/system/redis.serviceを変更してこれを反映しています。

この時点で、開始時に/usr/bin/redis-server /etc/redis/redis.confを手動で実行し、Sudo systemctl start redisを正常に実行できます。

したがって、16.04でredisを動作させるために必要なことは次のとおりです。

  1. apt-get install redis-serverを使用してインストールしたことを確認してくださいdo n't tarをダウンロードしてから、インストールしてください。
  2. Sudo vi /etc/systemd/system/redis.serviceを実行してredisサービスを作成または編集します
  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. Viを終了して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を削除する必要があります

5
Scottmeup

私は同じ問題を抱えていたが、原因は異なっていた。

DhcpクライアントでVMでテストするためにredisを使用しました。

構成/etc/redis/redis.confは間違った(古い)ローカルIPを指していたため、DHCPから新しく割り当てられたIPにサービスをバインドできませんでした。

そのような問題のログは次のとおりです。

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
Stefano Coletta

これを試してみてください。ここに/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
ognjen