Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Dica

Feature em desenvolvimento e sem previsão de liberação.

Descrição

O TOTVS | Broker

Inclusão de trecho
broker
broker
nopaneltrue
Agent (
agente) é uma ferramenta utilizada em conjunto com o
Inclusão de trecho
Application Server
Application Server
nopaneltrue
(server) e com o
Inclusão de trecho
Broker
Broker
nopaneltrue
(broker) para prover escalabilidade

horizontal ()

horizontal

scaling

e

a um ambiente formado por um agente, um broker

,

 e vários servers.


Em palavras mais simples, a funcionalidade de escalabilidade horizontal funciona da seguinte maneira:

  1. o O broker monitora o consumo de vários recursos utilizados pelos servers balanceados: conexões, memória, usuários, threads e cpu

  2. à À medida que o consumo total desses vários recursos alcançam um certo limite, o broker requisita ao agente a criação de uma nova instância de server

  3. o O agente cria uma nova instância de server (cria um novo processo server no sistema) e informa ao broker em qual porta TCP o novo server está aceitando conexões

  4. o O broker então incorpora o novo server às suas tabelas de balanceamento, de maneira que as novas conexões que chegam no broker são sejam distribuídas também para o server recém iniciadinstanciado


O uso da escalabilidade horizontal para a alocação dinâmica de novos servers possibilita o funcionamento mais estável do sistema, pois evita que haja sobrecarga sobre os servers em operação.

A escalabilidade horizontal também funciona de maneira inversa: à medida que os servers se tornem ociosos por algum tempo (, isto é, não estejam atendendo nenhuma conexão), o broker requisita que o agente desative estes servers que estão ociosos, desta maneira economizando recursos computacionais e diminuindo os custos de operação do sistema.




Premissas

Requisitos

Para que o esse esquema de escalabilidade horizontal utilizando o agente funcione, várias algumas premissas devem ser atendidas. São elas:

o
  • O binário do agente
esteja
  • deve estar na mesma pasta onde se encontra o binário do server
o
  • O server
esteja (este é o modo padrão de funcionamento do server)o server esteja atendendo apenas
  • deve estar configurado para utilizar a porta
multi protocolo
  • multiprotocolo
  • O server deve atender apenas as conexões provenientes do
  • Inclusão de trecho
    Smartclient
    Smartclient
    nopaneltrue
    , isto é,
não estejam configurados outros serviços no server, tais como Smartclient HTML (webapp), HTTP Server, etc.
  • outros modelos de balanceamento não devem estar configurados neste server
  • O server dever estar
o server esteja
  • sendo atendido via broker
o broker esteja utilizando
  • O broker deve estar configurado para utilizar o modelo de monitoramento ativo (
que é o modo padrão de funcionamento do broker)
  • mod padrão do
    Inclusão de trecho
    broker
    broker
    nopaneltrue
    )




Detalhes de configuração


Informações
Configuração do Agente

O agente utiliza o mesmo

mesmo

arquivo de configuração

"appserver.ini"

utilizado pelo server - appserver.ini


Neste O arquivo de configuração deverá haver possuir uma seção específica para o agente, como no conforme exemplo abaixo: 

Toggle Cloak


Bloco de códigocloak
linenumbersvisibletrue
; ------------------------------------------------------------------------------

[BROKER_AGENT]

; habilita ou desabilita a funcionalidade do agente broker
; sem precisar remover os dados de configuração
enable = 1

; ip numérico ou hostname da máquina onde o broker está em execução
; o agente vai se conectar a este broker
BrokerServer = 10.172.16.31

; porta TCP por onde o broker recebe conexões
BrokerPort = 12340

; item de segurança: número máximo de servers que o agente poderá instanciar
MaxServers = 10

; ------------------------------------------------------------------------------

Configuração do Server

A configuração do server não necessita de nada especial, a não os dois pontos abaixo:

Detalhes

ChaveDescrição
EnableHabilita ou desabilita a funcionalidade do agente broker
BrokerServerIP ou hostname do servidor onde o broker está em execução (o agente vai se conectar a este broker)
BrokerPortPorta TCP por onde o broker recebe conexões
MaxServersNúmero máximo de servers que o agente poderá instanciar (item de segurança)


Exemplo

true

Configuração do Server
Toggle Cloak

Cloak

A configuração do server depende apenas duas configurações. São elas:

  1. Deve
deve
  1. haver a seção BROKER_AGENT (como descrito acima),
porque
  1. pois o agente e o server compartilham o mesmo arquivo de configuração (appserver.ini)
deve
  1. Deve possuir apenas a especificação da porta
multi protocolo:
  1. multiprotocolo, ou seja, não pode haver configuração de nenhuma outra seção que implique a utilização de portas TCP
em modo server: WEBAPP, HTTP, TELNET, etc
  1. para outros modelos de serviço (exemplo: webapp, http, telnet)



Configuração do Broker

Para que o broker funcionar funcione no esquema de escalabilidade horizontal tratado neste material, deve ser utilizado um arquivo de configuração parecido com o semelhante ao apresentado no exemplo abaixo:

code

Toggle Cloak

languagetextthemeConfluence
Cloak

Detalhes

Chave
Descrição
linenumberstrue
; ------------------------------------------------------------------------------

[BALANCE_SMART_CLIENT_DESKTOP]

; porta TCP por onde o broker aceita conexões
LOCAL_SERVER = 12340

; NÃO definir as chaves REMOTE_SERVER_00 etc

; broker vai tratar conexões do agente
WITH_BROKER_AGENT = 1

; planos de escalabilidade que o broker cai tratar
; os nomes abaixo são ilustrativos, podem ser usados quaisquer nomes
SCALING_PLANS = COMERCIAL, NOITE, MADRUGADA, MANHA, FDS

; fator de carga que dispara a ativação de uma nova instância do server pelo agente
; valor padrão: 80%
; SCALING_LOAD_FACTOR = 80

; fator de carga que dispara a desativação de um server pelo agente
; valor padrão: 60%
; SCALING_LOAD_FACTOR_IN = 60

; tempo em segundos para que seja disparada a desativação de um server ocioso
; valor padrão: 300 segundos
; SCALING_GRACE_TIME = 300

; ------------------------------------------------------------------------------

; especificação dos planos de escalabilidade

[COMERCIAL]
  FROM = 09:00
  TO = 17:59
  WEEKDAYS = 2 3 4 5 6
  MIN_SERVERS = 2
  MAX_SERVERS = 4
  CONNECTION_LIMIT = 10

[NOITE]
  FROM = 18:00
  TO = 23:59
  WEEKDAYS = 2 3 4 5 6
  MIN_SERVERS = 1
  MAX_SERVERS = 2
  CONNECTION_LIMIT = 5

[MADRUGADA]
  FROM = 00:00
  TO = 05:59
  WEEKDAYS = 2 3 4 5 6
  MIN_SERVERS = 1
  MAX_SERVERS = 2
  CONNECTION_LIMIT = 3

[MANHA]
  FROM = 06:00
  TO = 08:59
  WEEKDAYS = 2 3 4 5 6
  MIN_SERVERS = 1
  MAX_SERVERS = 3
  CONNECTION_LIMIT = 5

[FDS]
  FROM = 00:00
  TO = 23:59
  WEEKDAYS = 17
  MIN_SERVERS = 1
  MAX_SERVERS = 3
  CONNECTION_LIMIT = 5
; ------------------------------------------------------------------------------

Descrição do Plano de Escalabilidade

LOCAL_SERVERPorta TCP por onde o broker aceita conexões
WITH_BROKER_AGENTHabilita a configuração que faz o broker tratar as conexões do agente
SCALING_PLANSPlanos de escalabilidade que o broker vai tratar (podem ser usados quaisquer nomes para definição do plano)
SCALING_LOAD_FACTORFator de carga que dispara a ativação de uma nova instância do server pelo agente (default: 80%)
SCALING_LOAD_FACTOR_INFator de carga que dispara a desativação de um server pelo agente (default: 60%)
SCALING_GRACE_TIMETempo em segundos para que seja disparada a desativação de um server ocioso (default: 300 segundos)


Exemplo

textConfluencetrue

* Mais detalhes sobre as chaves para especificação dos planos de escalabilidade na seção Plano de Escalabilidade

Plano de Escalabilidade


Chave / SeçãoDescriçãoObservação
[PLANO]Essa seção recebe o nome utilizado para identificação do plano de escalabilidadeNão
[NOME]: nome do plano, não
tem significado especial, server apenas como identificação
do plano
FROM
:
Essa chave indica a hora do início de validade do plano
,
O valor deve ser especificado em horas e minutos (HH:
SS
MM)
TO
:
Essa chave indica a hora do final de validade do plano
,
O valor deve ser especificado em horas e minutos (HH:
SS
MM)
WEEKDAYS
:
Essa chave indica os dias da semana em que o plano é válido
, 1
Exemplo:  1= domingo, 2=segunda, ... 7=sábado
MIN_SERVERS
:
Essa chave indica o número mínimo de servers que o plano vai manter ativo
MAX_SERVERS
:
Essa chave indica o número máximo de servers que o plano vai manter ativo
CONNECTION_LIMIT
:

Essa chave indica o número máximo de conexões

de smartclient

originadas do 

Inclusão de trecho
smartclient
smartclient
nopaneltrue
que o broker vai direcionar para um server específico


USER_LIMIT
:
Essa chave indica o número máximo de usuários
(como mostrado na tela de consulta do broker)
que um server pode ter para que seja considerado elegível para balanceamento pelo broker
THREAD_LIMIT
:
Essa chave indica o número máximo de threads
(como mostrado na tela de consulta do broker)
que um server pode ter para que seja considerado elegível para balanceamento pelo broker
MEMORY_LIMIT
:
Essa chave indica a quantidade máxima de memória
(como mostrada na tela de consulta do broker)
que um server pode estar utilizando para que seja considerado elegível para balanceamento pelo brokerO valor deve ser especificado em Megabytes
CPU_LIMIT
:
Essa chave indica a porcentagem máxima de
cpu (como mostrada na tela de consulta do broker)
CPU que um server pode estar utilizando para que seja considerado elegível para balanceamento pelo broker

Detalhes de Funcionamento

Uma vez por A cada um minuto o broker faz uma checagem do plano de escalabilidade em operação.Se especificados, os cinco critérios acima são verificados: CONNECTION_LIMIT, USER_LIMIT, THREAD_LIMIT, MEMORY_LIMIT, CPU_LIMIT, levando em consideração os critérios (detalhes na tabela acima) que foram utilizados para a configuração do plano de escalabilidade.

Caso o valor total agregado de um critério alcance ou ultrapasse 80% do valor total agregado máximo do critério então configurado para o critério em avaliação, o broker vai solicitar ao agente que um um novo server seja instanciado, desde que o número total de servers instanciados ainda esteja abaixo do limite especificado.


Para

os exemplos abaixo utilizaremos o seguinte plano de escalabilidade:

maior clarificação, utilizaremos o exemplo abaixo como base:

Nessa configuração o número mínimo de servers é 2, o máximo de servers é 4 e o número máximo de conexões por server é 10.
Bloco de código
[COMERCIAL]
  FROM = 09:00
  TO = 17:59
  WEEKDAYS = 2 3 4 5 6
  MIN_SERVERS = 2
  MAX_SERVERS = 4
  CONNECTION_LIMIT = 
10O número mínimo de servers é 2, máximo de servers é 4, e o número máximo de conexões por server é
10
.


Ativação de Novo Server

  • Inicialmente o broker vai solicitar
para o
  • ao agente
instanciar
  • que instancie 2 servers,
que é
  • pois este foi o número mínimo configurado.
Com
  • Com  estes 2 servers iniciados, o total máximo de conexões é 20 (2 x 10).
  • Aplicando o fator de carga de 80% chegamos a 16 conexões.
  • O broker então vai direcionando conexões para os 2 servers de maneira balanceada.
  • Quando número total de conexões chegar a 16, o broker solicita ao agente a ativação de um novo server.
  • Após o novo server entrar no ar, o novo número total máximo de conexões será 30, e aplicando o
fato
  • fator de carga de 80%, chegamos a 24 conexões.
  • O broker agora vai direcionar as conexões para os 3 servers ativos de maneira balanceada.
  • Quando número total de conexões chegar a 24, o broker solicita ao agente a ativação de um novo server.
  • Após o novo server entrar no ar, o novo número total máximo de conexões será 40, e aplicando o
fato
  • fator de carga de 80%, chegamos a 32 conexões.
  • O broker agora vai direcionar as conexões para os 4 servers ativos de maneira balanceada.
Quando
  • Dessa vez, quando número total de conexões chegar a 32
... não vai acontecer nada
  • , nenhuma ação de escalabilidade será adotada, pois o número de servers ativos vai estar no limite máximo configurado.
O
  • Assim, o broker vai continuar direcionando conexões para os 4 servers de maneira balanceada, até que cada server esteja atendendo 10 conexões, respeitando o limite máximo configurado.
  • A partir
daí
  • desse momento, todas as novas conexões que chegarem no broker serão recusadas.




Desativação de um Server Ocioso

  • A cada vez que uma conexão
é fechada
  • for encerrada pelo client, o broker verifica se o server chegou a 0 (zero) conexões
(isto é, o server está ocioso)
  • , caracterizando ele como "ocioso", e neste caso o broker marca a hora que o server
se tornou ocioso
  • adotou este estado.
  • A cada ciclo de verificação (1 vez por minuto)
que o broker faz do plano de escalabilidade
  • , o broker
verifica
  • avalia se existe algum server que está ocioso há 5 minutos (valor padrão) ou mais.
  • Se o número de servers ativos está acima do mínimo configurado, o broker faz o cálculo do fator de carga para desativação,
para
  • a fim de verificar se pode
pedir
  • solicitar a desativação do server.
  • No
exemplo
  • cenário acima, supondo 4 servers ativos, o broker vai pedir a desativação de um server ocioso há 5 minutos ou mais caso o número de conexões atuais seja de 18 ou menos, porque o fator de desativação para 4 servers é 60% do número máximo de conexões para 3 servers
:
  • (60% de 30 conexões, que é igual a 18 conexões).
Dica
titleDica rápida

Neste caso,

talvez fosse mais adequado

poderíamos configurar a chave SCALING_LOAD_FACTOR_IN para 70, pois assim um server ocioso poderia ser desativado quando o número atual de conexões fosse 21 (70% de 3 servers x 10 conexões → 70% de 30 → 21 conexões).




Informações adicionais

  • O mesmo
processo
  • fluxo de ativação e desativação de servers que foi demonstrado
considerando o critério CONNECTION_LIMITE também é aplicado para os outros critérios, caso estejam
  • acima, é considerando para os demais critério caso estes tenham sido configurados.
  • Para a ativação de um novo server, qualquer um dos critérios configurados que atinja o fator de carga de 80% dispara a ativação de um novo server.
  • Para a desativação de um server ocioso, todos os critérios configurados devem satisfazer o fator de carga de 60%
(após a desativação do server)
  • para que o server seja desativado.
  • Para cada server ativado, o arquivo de log (normalmente "console.log") terá o nome "worker_AAMMDD_HHMMSS_SS.log", e será gravado na pasta "worker_logs" dentro da pasta onde estão os binários do agente e do server.
  • O nome da pasta "worker_logs" pode ser alterado através da chave "ConsolePath".
  • O agente cria um log de nome ag_AAMMDD_HHMMSS.txt.
  • O agente cria um arquivo de controle AG_CONTROL.TXT na pasta onde estão os binários do agente e do server. Em princípio este arquivo não deve ser removido
. Se for removido,
  • mas, caso ocorra sua remoção, um novo arquivo será recriado na próxima execução do agente.
--//--