Redis Sentinel systemd サービスを起動する際に問題が発生しています。
センチネルを手動で正常に実行できます -- 例:
root@poolwc:/etc/redis# redis-sentinel ./sentinel.conf --sentinel
10.9.8.1、.2、.3 の 3 つの Redis サーバー
.2 と .3 は .1 のスレーブであり、レプリケーションが機能しています
redis
サービスユーザーは、3つのホストすべてに対して、0600
およびの両方に読み取り/書き込みアクセス権を持ちます。redis.conf
sentinel.conf
Slave1 および Slave2 (10.9.8.2 および 10.9.8.3) については、以下を追加しましたredis.conf
:
+ slaveof 127.0.0.1 6380
マスター、スレーブ1、スレーブ2の場合:
sentinel.conf
:
sentinel monitor mymaster 10.9.8.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
サービス開始時のマスターからの出力:
root@poolwc:/etc/redis# systemctl start redis-sentinel
Job for redis-sentinel.service failed because the control process exited with error code. See "systemctl status redis-sentinel.service" and "journalctl -xe" for details.
root@poolwc:/etc/redis# systemctl status redis-sentinel.service
● redis-sentinel.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-sentinel.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Mon 2018-02-26 21:54:12
PST; 6秒前 ドキュメント:http://redis.io/ドキュメント、man:redis-sentinel(1) プロセス: 5376 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-sentinel.post-down.d (コード=終了、ステータス=0/成功) プロセス: 7893 ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf (コード=終了、ステータス=1/失敗) プロセス: 7890 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-sentinel.pre-up.d (コード=終了、ステータス=0/成功)
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Control process exited, code=exited status=1
Feb 26 21:54:12 poolwc systemd[1]: Failed to start Advanced key-value store.
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Unit entered failed state.
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Failed with result 'exit-code'.
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Service hold-off time over, scheduling restart.
Feb 26 21:54:12 poolwc systemd[1]: Stopped Advanced key-value store.
Feb 26 21:54:12 poolwc systemd[1]: redis-sentinel.service: Start request repeated too quickly.
Feb 26 21:54:12 poolwc systemd[1]: Failed to start Advanced key-value store.
サービス開始時の Slave2 からの出力 -- 実行中ですが、失敗したときに終了するのはなぜですか?:
[root@ns1 etc]# systemctl start redis-sentinel
[root@ns1 etc]# systemctl status redis-sentinel
● redis-sentinel.service - Redis Sentinel
Loaded: loaded (/usr/lib/systemd/system/redis-sentinel.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/redis-sentinel.service.d
└─limit.conf
Active: active (running) since Mon 2018-02-26 21:55:58 PST; 5s ago
Process: 12876 ExecStop=/usr/libexec/redis-shutdown redis-sentinel (code=exited, status=1/FAILURE)
Main PID: 12944 (redis-sentinel)
CGroup: /system.slice/redis-sentinel.service
└─12944 /usr/bin/redis-sentinel *:26379 [sentinel]
Feb 26 21:55:58 ns1 redis-sentinel[12944]: | `-._`-._ _.-'_.-' | http://redis.io
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-._ `-._`-.__.-'_.-' _.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: |`-._`-._ `-.__.-' _.-'_.-'|
Feb 26 21:55:58 ns1 redis-sentinel[12944]: | `-._`-._ _.-'_.-' |
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-._ `-._`-.__.-'_.-' _.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-._ `-.__.-' _.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-._ _.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: `-.__.-'
Feb 26 21:55:58 ns1 redis-sentinel[12944]: 12944:X 26 Feb 21:55:58.490 # Sentinel ID is 659761a6f8328e59d43086ef3265450fcec5d2f5
Feb 26 21:55:58 ns1 redis-sentinel[12944]: 12944:X 26 Feb 21:55:58.490 # +monitor master mymaster 10.9.8.1 6379 quorum 2
サービス開始時のSlave2からの出力:
root@poolec:/etc/redis# systemctl start redis-sentinel
Job for redis-sentinel.service failed because the control process exited with error code. See "systemctl status redis-sentinel.service" and "journalctl -xe" for details.
root@poolec:/etc/redis# systemctl status redis-sentinel
● redis-sentinel.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-sentinel.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Tue 2018-02-27 05:57:09 UTC; 5s ago
Docs: http://redis.io/documentation,
man:redis-sentinel(1)
Process: 4130 ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf (code=exited, status=1/FAILURE)
Process: 4127 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-sentinel.pre-up.d (code=exited, status=0/SUCCESS)
Feb 27 05:57:09 poolec systemd[1]: redis-sentinel.service: Unit entered failed state.
Feb 27 05:57:09 poolec systemd[1]: redis-sentinel.service: Failed with result 'exit-code'.
Feb 27 05:57:09 poolec systemd[1]: redis-sentinel.service: Service hold-off time over, scheduling restart.
Feb 27 05:57:09 poolec systemd[1]: Stopped Advanced key-value store.
Feb 27 05:57:09 poolec systemd[1]: redis-sentinel.service: Start request repeated too quickly.
Feb 27 05:57:09 poolec systemd[1]: Failed to start Advanced key-value store.
いずれも出力を残さない/var/log/redis/
何か案は?
どうもありがとう!
答え1
以下の方法で解決できそうです。こちらを参照してください:Redis が systemctl で起動しない
設定ファイルを参照してください:
Redis を upstart または systemd から実行すると、Redis は監視ツリーと対話できます。オプション: supervised no - 監視対話なし supervised upstart - Redis を SIGSTOP モードにして upstart に信号を送信します supervised systemd - READY=1 を $NOTIFY_SOCKET に書き込むことで systemd に信号を送信します supervised auto - UPSTART_JOB または NOTIFY_SOCKET 環境変数に基づいて upstart または systemd メソッドを検出します 注: これらの監視メソッドは、「プロセスの準備ができました」という信号のみを送信します。これらは、スーパーバイザーへの継続的なライブネス ping を有効にしません。
supervised no
次のように変更する必要があります:
supervised systemd
これをコマンドラインで渡すこともできます。これにより、redis.conf の設定が上書きされます。Red Hat ベースのシステムではこれを行います。これにより、設定ファイルを変更せずに、同じ redis インスタンスを手動で実行したり、systemd から実行したりすることもできます。
ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd また、[Service] セクションで Type=notify を設定して、redis がこのモードで動作することを systemd に通知する必要もあります。