Redis Sentinel Systemd 服務無法在 Ubuntu 16.04 和 CentOS 7 上啟動

Redis Sentinel Systemd 服務無法在 Ubuntu 16.04 和 CentOS 7 上啟動

啟動我的 Redis Sentinel systemd 服務時遇到問題。

我可以成功手動運行哨兵——例如:

root@poolwc:/etc/redis# redis-sentinel ./sentinel.conf --sentinel

三台 Redis 伺服器,分別位於 10.9.8.1、.2、.3

.2 和 .3 是 .1 的從屬且複製正在執行

redis服務使用者對所有三個主機都具有0600讀取/寫入存取權限redis.confsentinel.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 

太平洋標準時間; 6 秒前文檔:http://redis.io/documentation, man:redis-sentinel(1) 進程:5376 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-sentinel.post-down.d (code=exited, status=0/SUCCESS) 進程: 7893 ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf (code=exited, status=1/FAILURE) 進程: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 啟動

查看設定檔:

如果您從 upstart 或 systemd 執行 Redis,Redis 可以與您的監督樹互動。選項: 受監督no - 無監督交互受監督upstart - 透過將Redis 置於SIGSTOP 模式來向upstart 發出信號受監督systemd - 透過將READY=1 寫入$NOTIFY_SOCKET 來向systemd 發出信號受監督自動- 根據UPSTART_JOB 或 根據UPSTART_JOB 或NOTIFY_SOCKET 環境變數可偵測upstart 或systemd 方法注意:這些監督方法僅發出「流程已準備就緒」的訊號。它們無法向您的主管提供持續的活動 ping。

supervised no

需要改為:

supervised systemd

您也可以在命令列上傳遞它,這會覆蓋 redis.conf 中的設定。基於紅帽的系統可以做到這一點。這也允許手動或從 systemd 運行相同的 redis 實例,而無需更改設定檔。

ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd 另外,你還需要在 [Service] 部分設定 Type=notify 來告訴 systemd redis 將在此模式下運行。

相關內容