upstart와 supervisord가 같은 것에 사용됩니까?


13

서버를 재부팅 할 때마다 예기치 않은 오류 등으로 인해 중지 해야하는 경우 몇 가지 jvm 기반 프로세스가 있습니다.

문제가 발생할 경우 우분투 12.04를 실행하고 있습니다.

나는 샘플 upstart 스크립트를 보았고 그런 식으로 기울어졌지만 upstart 또는 supervisord와 같은 차이점이 무엇인지 이해하고 싶습니다.

그것들은 정확히 같은 목적으로 사용됩니까 아니면 기능상의 차이가 있습니까?

답변:


12

차이점은 upstart는 init 교체이고 supervisord는 a Process Control System입니다. 이 설명은 감독자 사이트에서 제공됩니다 .

launchd, daemontools 및 runit와 같은 동일한 프로그램 목표를 공유합니다. 이러한 프로그램 중 일부와 달리 "프로세스 ID 1"과 같은 init 대신 사용할 수는 없습니다. 대신 프로젝트 또는 고객과 관련된 프로세스를 제어하는 ​​데 사용되며 부팅시 다른 프로그램과 같이 시작합니다.

이는 감독자 자신이 upstart 작업 파일 또는 sysV init 스크립트를 통해 upstart에 의해 시작됨을 의미합니다. 개인적으로 나는 다음과 같은 이유로 시작하기보다는 프로세스 관리자를 사용하기로 결정했습니다.

  1. 서비스가 제대로 데몬 화되지 않습니다
  2. 서비스를 모니터링하고 다시 시작해야하는 것으로 알려진 서비스

프로그램이 제대로 디먼 팅되지 않는 예는 stdout 및 stderr을 닫지 않고 해당 위치에 데이터를 계속 쓰는 경우입니다. Supervisord는 해당 출력의 로깅을 처리 할 수 ​​있습니다.


나는 완전히 이해하지는 못했지만 upstart는 프로세스가 실패하면 프로세스를 다시 시작할 수도 있다고 생각했습니다.
Blankman

나는 더 적은 현대 초기화 시스템과 이유가 추측 @Blankman
jordanm가

제대로 데몬하지 않는 서비스에 대한 올바른 해결책은 해당 서비스로 버그를 수정하여 제대로 데몬이되지 않도록하는 것입니다. 그래도 supervisord와 같은 것이 2 번에 유용 할 것입니다.
Shadur

1
@shadur 나는 이것이 최선의 해결책이라는 데 동의하지 않습니다. 프로세스를 소유하지 않았을 수 있으므로 수정할 수 없습니다. 고칠 수있는 버그 수에 관계없이 문제를 해결할 수 있어도 더 이상 숨어 있지 않은지 알 수 없으며, 몇 년 후에는 노출되지 않은 상황으로 인해 프로덕션 환경에서 프로세스가 다시 한 번 죽습니다. 비정상적인 네트워크 또는 데이터베이스 조건과 같은 사이트를 오프라인 상태로 유지하여 사용자를 실망시키고 비용을 지불하고 싶습니까? 아니요. 서비스를 다시 시작하려면 도구가 필요합니다. 기간.
Jonathan Hartley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.