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

10.9.8.1, .2, .3의 Redis 서버 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 (코드=종료, 상태=0/SUCCESS) 프로세스: 7893 ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf (코드=종료, 상태=1/FAILURE) 프로세스: 7890 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis -sentinel.pre-up.d (코드=종료, 상태=0/SUCCESS)

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를 시작 또는 systemd에서 실행하면 Redis는 감독 트리와 상호 작용할 수 있습니다. 옵션: supervised no - 감독 상호 작용 없음 supervised upstart - Redis를 SIGSTOP 모드로 전환하여 신호 upstart supervised systemd - $NOTIFY_SOCKET에 READY=1을 작성하여 systemd 신호 supervised auto - UPSTART_JOB 또는 NOTIFY_SOCKET 환경 변수를 기반으로 upstart 또는 systemd 메서드 감지 참고: 이 감독 방법은 "프로세스가 준비되었습니다"라는 신호만 보냅니다. 감독자에게 지속적인 활성 상태 핑을 제공하지 않습니다.

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에 알려야 합니다.

관련 정보