Recent News

Çarşamba, Aralık 11, 2013

Supervisor Nedir ? Nasıl Kurulur ?

Supervisor Nedir ?

Bir süreç(process) kontrol sistemi olan supervisor kullanıcılarına process yönetimi ve gözlemleme imkanı tanır.
Supervisor aşağıdaki özellikleri sebebiyle kullanılabilir.
- Süreçleri kendi alt süreci(subprocess) olarak çalıştırır. Bir sorun anında süreç durduğunda supervisor bunu kontrol ederek süreci tekrar başlatır.
- Sürecin gerçekten çalışıp çalışmadığını anlamak zordur. Çünkü pid dosyaları yanıltıcı olabilir. Supervisor'ın çalıştırdığı süreçler kendi alt süreçleri olduğu için doğru bir bilgi elde eder.
- Supervisor süreçlere öncelik ataması yapmanıza yardımcı olur. Start all diyerek süreçleri başlattığınız zaman süreçler önceden atanmış öncelik sıralamasına göre çalışır.
- Supervisorda süreçlerin yönetimi için tam yetkili bir kullanıcı(root) gereksinimi yoktur. Kullanıcılar süreçlerin durumunu kontrol edebilir. Yetki ayarları yapılırsa süreçleri durdurup başlatabilir. [1]

Nasıl Kurulur ?

Debian tabanlı sistemlerde kurulumu oldukça kolay. Ubuntu 12.04 üzerinde yaptığım kurulum adımları şu şekildedir. İsterseniz pip ve easy_install ile kurulum da yapabilirsiniz. [2]

$ sudo apt-get install supervisor

Kurulumu bu şekilde yaptığımızda ayar dosyası da /etc/supervisor dizini altında supervisor.conf adıyla geliyor. Kurulumu pip ile yaparsanız bir de 

$ sudo echo_supervisord_conf /etc/supervisor/supervisord.conf

ile ayar dosyası şablonunu bir dosyaya yönlendirmemiz gerekiyor. Bu kısımda "IOError: [Errno 2] No such file or directory: '/usr/lib/pymodules/python2.7/supervisor/skel/sample.conf'" hatası alırsanız eğer bu durumu aşmak için şöyle bir şey denedim. Sorun çözüldü.


Çalıştıracağımız süreçlerin ayarlarını ayrı ini dosyalarında tutmak istersek bu dosyaları /etc/supervisor/conf.d dizini altında tutmak yönetim açısından oldukça kolay olacaktır. Dosya uzantılarını *.ini şeklinde verecekseniz /etc/supervisor/supervisor.conf dosyasında aşağıdaki satırı değiştirmek gerekiyor.

[include]
files = /etc/supervisor/conf.d/*.conf

satırında bulunan *.conf tanımını *.ini olarak değiştiriyoruz. Böylece uzantısı ini olan dosyaları da ayarlara eklemiş oluyoruz.

Bir süreç supervisor ile çalıştırılmak isteniyorsa ini dosyasında aşağıdaki tanımların bulunması gerekir. Command kısmında süreç shellden nasıl çalıştırılıyorsa o komut ve aldığı değişkenler tanımlanır. Autostart ve autorestart tanımları önemlidir. Supervisor süreci başladığında otomatik başlamasıni istediğimiz süreçler için autostart=true , bir sorun olduğunda sürecin kendiliğinden tekrar başlaması için autorestart=true tanımını yapmamız gerekir. İni dosyasındaki tanımlamalara verilebilecek parametre ve tüm ayarların nasıl yapıldığı ile ilgili örnekleri [3] adresinden inceleyebilirsiniz.

;[program:theprogramname]
;command=/bin/cat              ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=true              ; retstart at unexpected quit (default: true)
;startsecs=10                  ; number of secs prog must stay running (def. 1)

İni dosyalarını yukarıdaki gibi oluşturup /etc/supervisor/conf.d dizini altına kopyaladıktan sonra supervisor ile çalıştırmaya başlayabiliriz.

$ sudo supervisorctl status
ile çalışmakta olan süreçleri görüntüleyebiliriz.

$ sudo supervisorctl reread
ile yeni eklediğimiz ayar dosyalarının supervisor tarafından okunmasını sağlayabiliriz.

$ sudo supervisorctl update
ile yeni ayar dosyalarınına göre süreçlerin başlatılmasını sağlayabiliriz.

$ sudo supervisorctl start
ile servisleri başlatabiliriz.

$ sudo supervisorctl stop
ile servisleri durdurabiliriz.

$ sudo supervisorctl shutdown
ile supervisorı kapatabiliriz. Bu komut ile supervisor kendi kendini öldürecektir.

$ sudo supervisorctl help
ile kullanabileceğimiz komutları görebiliriz.

Eksik veya yanlış gördüğünüz kısımları yorum yazarak düzeltmekten çekinmeyin.


[1] http://supervisord.org/introduction.html#overview
[2] http://supervisord.org/installing.html#installing-to-a-system-with-internet-access
[3] http://supervisord.org/configuration.html

0 yorum:

Yorum Gönder