Balanceamento entre SmartClient Desktop e servidor Protheus
Neste cenário um servidor Protheus é configurado como proxy entre vários SmartClient Desktop e vários servidores Protheus rodando o ERP. É importante notar que o servidor Protheus configurado como proxy terá apenas esta função, isto é, não será usado para rodar o ERP. Este servidor Protheus configurado como proxy é chamado de broker.
+--------------+ +--------------+
| smartclient -|--------+ +--------| ERP Protheus |
+--------------+ | | +--------------+
... | | ...
+--------------+ | +--------+ | +--------------+
| smartclient |--------+----| broker |----+--------| ERP Protheus |
+--------------+ | +--------+ | +--------------+
... | | ...
+--------------+ | | +--------------+
| smartclient |--------+ +--------| ERP Protheus |
+--------------+ +--------------+
Uso do broker torna mais resiliente a comunicação entre smartclients e servidores Protheus. Quando ocorrem problemas de comunicação entre o smartclient e o broker, o smartclient tenta restabelecer a conexão com o broker por algum tempo (por padrão 180 segundos). Caso a conexão seja restabelecida, o usuário poderá continuar a trabalhar normalmente, sem necessidade de fazer novo login no servidor Protheus.
Uso do broker em conexões seguras. O broker pode ser utilizado mesmo em conexões seguras configuradas entre o smartclient e os servidores Protheus.
Importante: Nunca deve se configurar o Protheus Master como um dos servidores Protheus que irão receber conexões pelo broker, pois o mecanismo de balanceamento do Protheus Master é incompatível com o broker.
Para se utilizar o broker é necessário configurar tanto o arquivo smartclient.ini do smartclient, quanto um novo arquivo appserver.ini específico para o broker. Não é necessário alterar o arquivo de configuração (appserver.ini) dos servidores Protheus.
Num exemplo hipotético, vamos supor que o servidor Protheus esteja atendendo nos endereços 172.16.50.42:5000
, 172.16.50.42:5001
e 172.16.50.42:5002
, e o broker esteja atendendo no endereço 172.16.50.42:4000
.
Neste cenário os servidores Protheus e o broker estão na mesma máquina. É uma configuração comum, mas não obrigatória. Em princípio o broker pode estar em execução qualquer máquina na rede, desde que haja rotas (na rede) entre os smartclients e o broker, e entre o broker e os servidores Protheus.
Abaixo, um exemplo de configuração possível para este cenário:
[GENERAL] ; configuracao recomendada para gravação de log ConsoleLog=1 ConsoleLogDate = 0 [BALANCE_SMART_CLIENT_DESKTOP] ; porta onde este broker server atende pedidos de conexão dos broker clients LOCAL_SERVER_PORT = 4000 ; hostname ou endereço ip, e porta TCP dos servidores Protheus ERP que serão destino ; das conexões vindas dos broker clients REMOTE_SERVER_01 = 172.16.50.42 5000 REMOTE_SERVER_02 = 172.16.50.42 5001 REMOTE_SERVER_03 = 172.16.50.42 5002 ; etc ; esta chave aceita letras e números para identificar servidores, ; por exemplo REMOTE_SERVER_0A, REMOTE_SERVER_XY, etc, e as chaves ; podem estar em qualquer ordem ; nome do serviço, pode ser qualquer nome que não contenha espaços ; só tem importância se o broker server for instalado como um serviço Window SERVICE_NAME = XXX_TOTVS_BALANCE_SC_001 ; opcional, "display name" do serviço Windows SERVICE_DISPLAY_NAME = "BROKER SERVICE"
No arquivo de configuração do SmartClient (smartclient.ini) deve-se indicar o hostname ou endereço IP do broker, a porta do broker, e a chave "BrokerProxy=1
"
; ------------------------ [config] lastmainprog=... envserver=... ; outras configurações ; --------------------- [sem_broker] ; para conexão direta do SmartClient com um ERP específico, ; ou usando o esquema de Protheus Master e Protheus Slave server=... port=... ; --------------------- [com_broker] ; para conexão SmartClient com o ERP via broker ; máquina onde o broker está rodando server=172.16.50.42 ; porta onde o broker está atendendo port=4000 ; importante!!! BrokerProxy = 1 ; --------------------- [drivers] ; opção ativa: conexão via proxy active=com_broker ; ------------------------ ; obs.: os nomes "com_broker" e "sem_broker" não possuem qualquer ; significado intrínseco, qualquer nome poderia ser utilizado, ; por exemplo "AAA" e "BBB" ; ------------------------
--- //---