Informações e Configuração de ambiente Grid

Produto:

Microsiga Protheus

Versões:

11 e 12

Descrição:

Grid de Processamento é um ambiente preparado para executar processos utilizando mais de um servidor simultaneamente. O aplicativo e/ou programa responsável pelo processo é desenhado para executar frações independentes deste processo, que são distribuídas para outros servidores e executados em paralelo.

O Grid de Processamento AdvPL é um componente integrado ao Framework da linguagem AdvPL, que oferece infraestrutura para execução de processos especialistas distribuídos, responsável pelo controle de distribuição otimizada de requisições de processamento e tratamento de exceções.

Não é qualquer rotina do ERP que está preparada para ser utilizada em Grid. Algumas rotinas atendem aos critérios de paralelismo e aderência às condições de uso em Grid, e podem ser parametrizados para uso da infraestrutura do Grid de processamento AdvPL. Para saber se determinada rotina está preparada para ser executada em Grid, você deve entrar em contato com a equipe de suporte responsável pelo respectivo módulo.

A execução de processos em Grid necessita de um conjunto separado de Application Servers. O conjunto é composto por um AppServer principal, chamado GridServer ou Coordinator, e pelo menos mais dois AppServers chamados GridAgents. Estes AppServers devem estar configurados para rodar apenas o serviço de Grid, não devendo executar outros Jobs ou aplicações.

O conjunto de AppServers (GridServer e GridAgents) pode estar configurado em um mesmo servidor ou em servidores diferentes, contudo é necessário que os servidores tenham acesso um ao outro na rede.

Para se iniciar a configuração de um Grid de Processamento, a primeira coisa a se fazer é efetuar cópias da pasta AppServer (binário do Protheus), e nomeá-las de modo a identificar o GridServer e os GridAgents. Após a cópia, basta editar os arquivos appserver.ini conforme orientações abaixo.



Configuração do GridServer – Coordenador de Processos Distribuídos

Trata-se de um Application Server configurado para execução exclusiva do processo (JOB) de controle de distribuição de agentes e processos em Grid (GridServer). Não deve ser um serviço que execute outras aplicações ou JOBS, inclusive não deve ser colocado na lista de servidores de balanceamento de carga.

Para realizar a configuração, é necessário criar o serviço GridServer.

Exemplo do arquivo de configuração appserver.ini do GridServer:


;; Serviço configurado como GridServer

[ONSTART]
Jobs=GridServer
RefreshRate=15

[GridServer]
Main=GridServer
Environment=P12
MinProcAgent=3


Observações:
1. O Job GridServer deve ser especificado na seção [OnStart], do serviço, e chamar a função de gerenciamento GridServer.

2. O GridServer deve ser configurado exclusivamente para um Ambiente (Environment).

3. Deve-se utilizar o endereço IP, e não localhost e/ou 127.0.0.1

4. A linha MinProcAgent refere-se à quantidade mínima de agentes de processamento do Grid na estrutura



Configuração dos GridAgents – Agentes Executores de Processos

Após já ter configurado o GridServer para o ambiente, é necessário criar a configuração da seção [GridAgent] para cada um dos Agents, para o mesmo Ambiente (Environment) utilizado no GridServer.

Exemplo do arquivo de configuração appserver.ini do GridAgent:


[ONSTART]
Jobs=GridAgent
RefreshRate=15

[GridAgent]
Main=GridAgent
AgentIp=10.172.55.65
AgentPort=1219
Instances=3,3
Environment=P12
CoordServer=10.172.55.65
CoordPort=1217


Observações:

1. O JOB GridAgent deve ser inserido na seção [OnStart], de cada Agent, e a chave RefreshRate configurada para 15 segundos, definindo assim um intervalo de tempo para o serviço verificar a quantidade de processos de agente on-line.

2. A única alteração necessária destas configurações entre cada Agent, será a chave TCP indicando a porta que ele inicia e as chaves AgentIp e AgentPort, onde deve-se indicar o endereço IP e porta do AppServer deste servidor que está respondendo ao GridServer.

IMPORTANTE: Não utilize "localhost" nesta configuração, pois isto obrigaria ao serviço do GridServer e todos os demais agentes e clientes do grid a estar no mesmo servidor. Esta configuração do agente precisa informar o IP do servidor onde este serviço está sendo executado, pois o GridServer vai usar esta informação para avisar aos processos client do Grid quais agentes foram alocados para ele.

3. A linha AgentIp indica o IP deste servidor onde está esse Agent, e a linha AgentPort indica a porta que está na seção TCP deste AppServer.

4. A linha Instances indica a quantidade inicial de Threads que serão utilizadas e a quantidade máxima.

5. A linha CoordServer deve apontar para o IP do servidor onde está o GridServer, e a linha CoordPort, a porta do Appserver do GridServer


Configurações adicionais:
As seguintes linhas também podem ser adicionadas à seção [GridAgent]:
GridLog=1 (Habilita a criação de um log de execução para o agente que possui a chave habilitada)
GridProfiler=1 (Habilita a geração do profile de requisição dos agentes (Para funcionamento dessa chave o GridLog deve estar ativado))


Se as configurações estiverem OK, os consoles deverão exibir as seguintes mensagens:

Console do GridServer


Console do GridAgent



Informações adicionais
São muitos os fatores limitantes que influenciam na decisão de quantos processos podem ser inseridos para cada Agente no ambiente de Grid. Desta forma, configurar um número alto de instâncias por agente pode degradar a performance do ambiente inteiro ou atingir os limites de infraestrutura em uso, como por exemplo a CPU da máquina de banco de dados e/ou o tráfego de rede entres os servidores, prejudicando a performance de todos os usuários conectados no ambiente.

Desta forma, inicialmente, deve-se configurar apenas uma instância, ou no máximo duas instâncias do processo Agente para cada serviço slave do TOTVS | Application Server para então executar um programa que utilize a infraestrutura do Grid e verificar se com esses parâmetros não foi criado nenhum gargalo na infraestrutura (utilização de CPUs a 100%, verificando inclusive na máquina de Banco de Dados x TOTVS | DBAccess, e na máquina Master (c-tree Server, TOTVS | License Server e afins).

Não havendo perda significativa de performance constatada na aplicação, e havendo sobra de recursos para este processo, pode-se aumentar em uma unidade as instâncias para os Agentes e refazer o teste.


Consumo de licenças
O Grid de Processamento AdvPL é um componente do Framework AdvPL, que provê uma camada de controle para distribuição de processamentos. O consumo de licenças para os processos do Grid depende da implementação da funcionalidade do ERP codificada pela equipe de desenvolvimento de produto para utilizar o Grid. Por exemplo, o cálculo de Folha de Pagamento é um processo que pode ser executado em Grid. Para saber as regras de consumo do cálculo da Folha de Pagamento em Grid, deve ser aberto um chamado para direcionar este questionamento ao time de desenvolvimento do módulo SIGAGPE.