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


10

私たちは問題なく多くの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の再起動を含むデプロイメントスクリプトを実行します。
  • sudo apt-getredis-serverをアンインストールして再インストールするために使用されます
  • インストールを2回実行し、1回/etc/redis/redis.confはパッケージから新しいファイルを受け入れ、1回は元のファイルを保持します

助言がありますか?


答えではありませんが、役立つかもしれません:Dockerコンテナーとしてredisを実行できます。
pLumo 2018年

回答:


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ます。

したがって、16.04でredisを機能させるには、次のことを行う必要があります。

  1. あなたが使用してインストールしていることを確認しapt-get install redis-serverしません作る&インストールし、タールをダウンロードしてください。
  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. 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


1

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

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

たぶんこれを試して/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


0

端末を開いてコマンドifconfigを実行すると、192.168.0.109のようなIPアドレスが取得されます。次に、sudo nano /etc/redis/redis.confコマンドを実行して構成を編集します。ここでnanoはエディターです。他のエディタを使用して、バインドを検索し、次のようにIPアドレスを入力できます

bind 127.0.0.1 192.168.0.109 here my ip is 192.168.0.109次に、このコマンドでサーバーを再起動しますsudo systemctl restart redis.serviceサーバーのステータスを確認しますsudo systemctl status redisその後、アクティブになります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.