Supervisord Servisi Kullanımı

By | 17 May 2016

Supervisord servisi için süreç kontrol sistemi(process control system) diyebiliriz. Yani bir süreci, istenilen sayı kadar açar, bunları paralelde yürütebiliriz. Eğer bu processin işi biterse tekrardan başlatabilir, bu işlere farklı isimler verebiliriz. Örneğin; RabbitMQ ve Python ile Uygulama Geliştirme yazımda birden fazla terminal açıp, birden fazla worker açıyorduk. Bunu arkada tarafta servis olarak çalıştırmak için Supervisord servisini kullanabiliriz. Yani arka tarafta bu worker.py’ı 10 tane, 20 tane veya 100 tane açıp, işleri bittiğinde tekrar açabiliriz. Hem bu şekilde sistem rahatlıyor(worker ne kadar çok mesaj işlerse o kadar Ram yoruluyor), hem de işlerimizi kontrol altına alabiliyoruz.

yum install python-pip

Eğer Python paket yöneticisi yüklü değilse, kuruyoruz. Ben supervisord kurulumunu pip ile yapacağım. Alternatif olarak easy_install ile de kurulabilir. Kurulum bittikten sonra, alttaki komutu giriyoruz.

sudo pip install supervisor

Servisin kurulumu da başarıyla bittikten sonra konfigürasyona geçiyoruz. Hali hazırda bir conf dosyası olmadığı için bize hazır dosyayı vermesi için alttaki komutu giriyoruz. Eğer pip ile kurup, alttaki komut hata verirse, easy_install supervisor diyerek de kurabilirsiniz.

echo_supervisord_conf > /etc/supervisord.conf

Conf dosyamızı /etc altına alıyoruz.  Daha sonra dosyamızı açıyoruz.Burada [program:] ile başlayan satırı buluyoruz ve alttaki konfigürasyonu yapıyoruz. [program:worker] ile app adımızı yazıyoruz. Sonra worker.py dosyamızı başlatacak komutuzu giriyoruz. autostart ve autorestart ile worker kapanınca tekrar başlatılmasını sağlıyoruz. numprocs aynı anda 100 tane worker açmamıza yarıyor. process_name ile her worker’a uniq bir isim atanıyor.

[program:worker]
command= python /var/www/mertblog.net/worker.py
autostart=true
autorestart=true
numprocs=100
process_name=%(program_name)s_%(process_num)02d

Konfigürasyonu yaptıktan sonra /etc altına attığımız konfigürasyon dosyamızı servisimizi
tanıtmamız gerekiyor, bunun için alttaki komutu giriyoruz. Emin olmak için de reload ediyoruz.

supervisord -c /etc/supervisord.conf
supervisorctl reload

Bu şekilde servisimiz başlamış oluyor. App’i tanıtmak için Update komutunu girip, devam ediyoruz.

supervisorctl update
supervisorctl reread
supervisorctl start all

Start all dediğimiz anda 100 tane worker açıyor. Eğer alttaki komutu da girersek hepsini kapatıyor.

supervisorctl stop all

Rabbitmq ile bu şekilde kullanabiliyoruz. Bu ikisi gerçekten hayat kurtarıyor. Anlatacaklarım şimdilik bu kadar, bir dahaki yazımda görüşmek üzere… 🙂

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*