segunda-feira, 14 de novembro de 2011

Codeigniter 2 + Background Job + Gearman


Continuando o post anterior vamos criar os scripts para administrar o servidor Gearman e seus workers e instalar e configurar o Monit para monitorará-los. Os fontes podem ser emcontrados no repositório público do projeto em https://github.com/fcm/codeigniter-academic/tree/gearman

Iniciar e parar os workers
Criar o arquivo /etc/init.d/gearman-workers com o conteúdo abaixo.  Mais tarde o correto é refatorar o script para obter um path relativo ao worker, mas por hora isso é o suficiente.

Criar o arquivo /etc/init.d/pskiller.sh com o conteúdo abaixo que foi adaptado do script disponível em http://www.vivaolinux.com.br/script/pskiller

Agora é possível iniciar ou parar determinados workers pelo console. Depois de iniciar os workers é possível vizualizar no monitor (http://localhost/gearman-monitor/) os 5 workers registrados para atender as solcitações.
$ sudo /etc/init.d/gearman-job-server start
$ sudo /etc/init.d/gearman-workers start resize_worker.php # para iniciar 5 workers
$ sudo /etc/init.d/gearman-workers stop resize_worker.php # para parar todos

Instalar e configurar o Monit
O Monit serve para monitorar os serviços de um ou mais servidores, ele pode ser configurado para enviar notificações e/ou tomar alguma decisão assim que um serviço ficar fora do ar ou seu consumo chegar a um determinado nível crítico.

Para instalar no Ubuntu digite na linha de comando:
$ sudo apt-get install monit
Criar um arquivo de configuração de monitoramento
$ sudo vi /etc/monit/conf.d/gearman.conf
Incluir o conteúdo no arquivo /etc/monit/conf.d/gearman.conf
check process gearmand with pidfile /var/run/gearman/gearmand.pid
   start program = "/etc/init.d/gearman-job-server start; /etc/init.d/gearman-workers stop"
   stop program = "/etc/init.d/gearman-job-server stop"
   group gearman

Alterar as configurações gerias em /etc/monit/conf.d/general.conf
set alert fabrizio.machado@gmail.com
set alert fabrizio@gmail.com
set mailserver smtp.gmail.com port 587
        username "fabrizio@gmail.com" password "xxxxxx"
        using tlsv1
        with timeout 30 seconds
set daemon 60
set logfile /var/log/monit.log

Interface web de monitoramento
O Monit possui uma interface web de monitoramento disponível por padrão em http://localhost:6874/  com o usuário e senha de acesso admin e monit

É possível alterar as configurações de portas e login descomentando o bloco referente as configurações de acesso no arquivo /etc/monit/monitrc.
## Monit has an embedded web server which can be used to view status of 
## services monitored and manage services from a web interface. See the
## Monit Wiki if you want to enable SSL for the web server. 
#
# set httpd port 2812 and
#     use address localhost  # only accept connection from localhost
#     allow localhost        # allow localhost to connect to the server and
#     allow admin:monit      # require user 'admin' with password 'monit'
#     allow @monit           # allow users of group 'monit' to connect (rw)
#     allow @users readonly  # allow users of group 'users' to connect 

Referências:
http://gearman.org/
http://mmonit.com/
http://www.phpclasses.org/blog/post/108-Distributing-PHP-processing-with-Gearman.html
http://imasters.com.br/artigo/21385/php/processamento-distribuido-em-php-utilizando-gearman-parte-1
http://pecl.php.net/package/gearman

Nenhum comentário:

Postar um comentário