czy w tym samym celu stosuje się upstart i superwizor?

13

Mam kilka procesów opartych na JVM, które muszę upewnić się, że uruchomię się za każdym razem, gdy mój serwer zostanie zrestartowany, a także jeśli zatrzyma się z powodu nieoczekiwanego błędu itp.

Używam Ubuntu 12.04 na wszelki wypadek.

Widziałem przykładowe skrypty początkowe i trochę się w ten sposób opieram, ale chcę zrozumieć, jakie są różnice w przypadku czegoś takiego jak upstart lub superwizja.

Czy są używane do tych samych celów, czy występują różnice w funkcjonalności?

Blankman
źródło

Odpowiedzi:

12

Różnica polega na tym, że dorobkiewicz jest startowych wymiana natomiast supervisord jest Process Control System. To wyjaśnienie jest podane na supervisord miejscu :

Dzieli niektóre z tych samych celów programów, jak uruchomione, daemontools i runit. W przeciwieństwie do niektórych z tych programów, nie jest przeznaczony do uruchamiania jako substytutu init jako „proces id 1”. Zamiast tego jest przeznaczony do sterowania procesami związanymi z projektem lub klientem i ma się uruchamiać jak każdy inny program w czasie rozruchu.

Oznacza to, że sam nadzór zostałby uruchomiony przez upstart, albo poprzez plik zadania upstart, albo skrypt inicjujący sysV. Osobiście zdecydowałem się użyć menedżera procesów zamiast zwykłego startu z następujących powodów:

  1. Usługa nie demonizuje poprawnie
  2. Usługa ta umiera i należy ją monitorować i ponownie uruchamiać

Przykładem programu niepoprawnie demonizującego jest sytuacja, gdy nie zamyka stdout i stderr i kontynuuje zapisywanie danych w tych lokalizacjach. Supervisord może obsłużyć rejestrowanie tego wyniku.

Jordan
źródło
Rozumiem, nie jestem pewien, czy w pełni rozumiem, ale pomyślałem, że upstart może również ponownie uruchomić proces, jeśli się nie powiedzie.
Blankman
@Blankman Myślę, że jest jeszcze mniej powodów z nowoczesnymi systemami init
Jordan
Chciałbym zauważyć, że właściwym rozwiązaniem dla usługi, która nie poprawnie demonizuje, byłoby naprawienie błędu z tą usługą, która powoduje, że nie jest poprawnie demonizowana. Przyznaję, że coś w rodzaju superwizora przydałoby się w przypadku # 2.
Shadur
1
@shadur Nie zgadzam się, że to najlepsze rozwiązanie. Proces może nie być Twoją własnością, więc nie możesz go naprawić. Nawet jeśli możesz to naprawić, bez względu na to, ile błędów naprawisz, nigdy nie będziesz wiedział, że nie ma już więcej czających się, a lata później proces znów umrze w produkcji, z powodu jakiejś sytuacji, która nigdy nie została ujawniona wcześniej, na przykład nietypowy stan sieci lub bazy danych. Czy wolisz, aby Twoja witryna pozostała offline, frustrując użytkowników i kosztując pieniądze? Nie. Potrzebujesz narzędzia do ponownego uruchomienia usług. Kropka.
Jonathan Hartley