Páginas filhas
  • Balanceamento de carga com Totvs Broker para requisições HTTP Rest - LGX

Configuração para balanceamento de carga Appserver Logix X Requisições HTTP Rest usando TOTVS Broker


O TOTVS | Application Server pode ser utilizado como um proxy transparente de balanceamento para acionamento de requisições API REST a um TOTVS | Application Server, usando um serviço TOTVS Broker, para equilibrar a quantidade de requisições API REST que uma aplicação Web ou Serviço externo possa vir a solicitar para o Logix.

Um exemplo prático onde isso pode ser bem útil é a execução de uma Aplicação Web Logix onde a tela pode ser composta por informações onde cada uma pode ser resultado de uma requisição API REST enviada para o AppServer Logix.
Imagine então se uma tela faz 15 ou 20 requisições simultâneas para preencher os dados em tela. Isso tende a sobrecarregar o Appserver, caso apenas um único serviço de AppServer venha a receber todas estas 15 a 20 requisições API REST. Com isso a melhor alteranativa é fazer com que estas 15 a 20 requisições sejam distribuidas de forma inteligente para um grupo de AppServers Logix, com indicação de apenas um endereço HOST e PORT fixo do AppServer TOTVS Broker para balanceamento de serviços Webservices para a porta do serviço HTTP REST, que faz o redirecionamento das requisições API REST para um grupo de AppServers Logix que tenham o serviço HTTP REST ativo em todos eles, gerenciando a quantidade de requisições HTTP REST de forma equilibrada, evitando assim a sobrecarga e consequentemente melhorando a performance do produto.


Instalação e configuração do Appserver Broker


Para instalação do Appserver Broker, deve-se utilizar o mesmo binário AppServer 64 bits utilizado para executar o produto Logix.

Lembrando que, mesmo que o produto Logix ainda esteja utilizando AppServer 32 bits, o serviço do TOTVS Broker pode ser utilizado na arquitetura 64 bits, pois não apresenta conflitos para gerenciar requisições para AppServer com arquitetura 32 bits. O TOTVS Broker funciona como um serviço de proxy, redirecionando requisições entre serviços.

As configurações de um AppServer Broker são mais simples do que um AppServer que processa os dados para o produto Logix.

De forma resumida, para cada tipo protocolo de serviço que desejar configurar um balanceamento de carga usando o TOTVS Broker, você deverá ter:

  • 2 ou mais AppServers com o protocolo do serviço HTTP REST devidamente disponibilizado para uso.
  • 1 AppServer principal que será o Broker para gerenciar as requisições para os serviços dos demais AppServers que farão parte do balanceamento de carga, que podemos chamar de serviços AppServers "Escravos".


Veja exemplo de configuração básica de dois AppServers com o protocolo HTTP REST ativado, onde se deseja configurar posteriomente o balanceamento de carga de requisições:


[ONSTART]
REFRESHRATE=30
JOBS=HTTPJOB

[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=logix_prd

[Logix_prd]
outputdir=c:\publico\lst\
SOURCEPATH=c:\totvs\apo64\logix
ROOTPATH=c:\totvs\
STARTPATH=\totvs_data\
RPOCUSTOM=C:\totvs\apo64\custom.rpo
RPODB=Top
RegionalLanguage=BRA
RPOVERSION=120
RPOPREFIX=lgx
LOCALFILES=SQLITE
SCROLLCURSORSIZE=100000000
DBALIAS=logixprd
DBDATABASE=ORACLE

[SERVICE]
NAME=TOTVS_SERVER_LOGIX_REST_01
DISPLAYNAME=Totvs Server BIN_SERVER_LOGIX_REST_01

[HTTP]
ENABLE=1
PORT=9193
ENVIRONMENT=logix_prd
DEFAULTPAGE=wsindex.apw
PATH=c:\totvs\http
UPDLOADPATH=\upload

[HTTPS]
ENABLE=1
PORT=9194
ENVIRONMENT=logix_prd
DEFAULTPAGE=wsindex.apw
PATH=c:\totvs\http
UPDLOADPATH=\upload

[<HOST>:9193/apps]
ENVIRONMENT=logix_prd
INSTANCES=3,15,2,5
RESPONSEJOB=JOBWEB
DEFAULTPAGE=index.html
PATH=c:\totvs\web\apps
UPDLOADPATH=\upload
CACHE-CONTROL=no-store
PRAGMA=no-cache

[<HOST>:9194/apps]
ENVIRONMENT=logix_prd
INSTANCES=3,15,2,5
RESPONSEJOB=JOBWEB
DEFAULTPAGE=index.html
PATH=c:\totvs\web\apps
UPDLOADPATH=\upload
CACHE-CONTROL=no-store
PRAGMA=no-cache

[JOBWEB]
TYPE=WEBEX
ENVIRONMENT=logix_prd
INSTANCES=3,15,2,5
ONSTART=LOGIXWSTART
ONCONNECT=LOGIXWCONNECT

[WEBSERVICES]
Enable=1
SECURITY=1
Environment=logix_prd
NameSpace=http://www.totvs.com
URLLocation=https://[HOST]:9194
UserID=admlog

[SSLCONFIGURE]
SSL2 = 0
SSL3 = 1
TLS1_0 = 1
TLS1_1 = 1
TLS1_2 = 1
TLS1_3 = 1
HSM=0
BUGS=1
STATE=1
CERTIFICATESERVER=c:\totvs\bin\appserver\totvs_certificate.crt
KEYSERVER=c:\totvs\bin\appserver\totvs_certificate_key.pem
VERBOSE=0
timeout=60000

[HTTPV11]
ENABLE=1
SOCKETS=HTTPREST

[HTTPREST]
PORT=9131
URIS=URIAPPS
SECURITY=1
SSL2=0
SSL3=1
TLS1_0 = 1
TLS1_1 = 1
TLS1_2 = 1
HSM=0
BUGS=1
STATE=1
VERBOSE=0
CERTIFICATE=c:\totvs\bin\appserver\totvs_certificate.crt
KEY=c:\totvs\bin\appserver\totvs_certificate_key.pem

[URIAPPS]
URL=/
INSTANCES=7,30,3,5
ONSTART=LOGIXRESTSTART
ONCONNECT=LOGIXRESTCONNECT
ONEXIT=LOGIXRESTEXIT
CORSEnable=1
AllowOrigin=*

[MAIL]
Protocol=SMTP
extendSMTP=1
AUTHLOGIN=1
AUTHPLAIN=1
TLSVersion=3

[General]
MONITORKEY=LOGIX
CONSOLELOG=1
CONSOLEMAXSIZE=100000000
ConsoleLogDate=0
SERVERTYPE=4GL
MAXSTRINGSIZE=300
FGLPROFILE=c:\totvs\bin\totvsprofile.pro

[WEBMONITOR]
ENABLE=0

[APP_MONITOR]
enable=0

[LICENSECLIENT]
SERVER=[HOST LS SERVICE]
PORT=[PORT LS SERVICCE]

[Drivers]
ACTIVE=TCP
MultiProtocolPortSecure=1
MultiProtocolPort=1
Secure=SSL

[TCP]
TYPE=TCPIP
PORT=6087
SecureConnection=1

[MPP]
SSL_Default=0
 
[ONSTART]
REFRESHRATE=30
JOBS=HTTPJOB

[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=logix_prd

[Logix_prd]
outputdir=c:\publico\lst\
SOURCEPATH=c:\totvs\apo64\logix
ROOTPATH=c:\totvs\
STARTPATH=\totvs_data\
RPOCUSTOM=C:\totvs\apo64\custom.rpo
RPODB=Top
RegionalLanguage=BRA
RPOVERSION=120
RPOPREFIX=lgx
LOCALFILES=SQLITE
SCROLLCURSORSIZE=100000000
DBALIAS=logixprd
DBDATABASE=ORACLE

[SERVICE]
NAME=TOTVS_SERVER_LOGIX_REST_02
DISPLAYNAME=Totvs Server BIN_SERVER_LOGIX_REST_02

[HTTP]
ENABLE=1
PORT=9293
ENVIRONMENT=logix_prd
DEFAULTPAGE=wsindex.apw
PATH=c:\totvs\http
UPDLOADPATH=\upload

[HTTPS]
ENABLE=1
PORT=9294
ENVIRONMENT=logix_prd
DEFAULTPAGE=wsindex.apw
PATH=c:\totvs\http
UPDLOADPATH=\upload

[<HOST>:9293/apps]
ENVIRONMENT=logix_prd
INSTANCES=3,15,2,5
RESPONSEJOB=JOBWEB
DEFAULTPAGE=index.html
PATH=c:\totvs\web\apps
UPDLOADPATH=\upload
CACHE-CONTROL=no-store
PRAGMA=no-cache

[<HOST>:9294/apps]
ENVIRONMENT=logix_prd
INSTANCES=3,15,2,5
RESPONSEJOB=JOBWEB
DEFAULTPAGE=index.html
PATH=c:\totvs\web\apps
UPDLOADPATH=\upload
CACHE-CONTROL=no-store
PRAGMA=no-cache

[JOBWEB]
TYPE=WEBEX
ENVIRONMENT=logix_prd
INSTANCES=3,15,2,5
ONSTART=LOGIXWSTART
ONCONNECT=LOGIXWCONNECT

[WEBSERVICES]
Enable=1
SECURITY=1
Environment=logix_prd
NameSpace=http://www.totvs.com
URLLocation=https://[HOST]:9294
UserID=admlog

[SSLCONFIGURE]
SSL2 = 0
SSL3 = 1
TLS1_0 = 1
TLS1_1 = 1
TLS1_2 = 1
TLS1_3 = 1
HSM=0
BUGS=1
STATE=1
CERTIFICATESERVER=c:\totvs\bin\appserver\totvs_certificate.crt
KEYSERVER=c:\totvs\bin\appserver\totvs_certificate_key.pem
VERBOSE=0
timeout=60000

[HTTPV11]
ENABLE=1
SOCKETS=HTTPREST

[HTTPREST]
PORT=9132
URIS=URIAPPS
SECURITY=1
SSL2=0
SSL3=1
TLS1_0 = 1
TLS1_1 = 1
TLS1_2 = 1
HSM=0
BUGS=1
STATE=1
VERBOSE=0
CERTIFICATE=c:\totvs\bin\appserver\totvs_certificate.crt
KEY=c:\totvs\bin\appserver\totvs_certificate_key.pem

[URIAPPS]
URL=/
INSTANCES=7,30,3,5
ONSTART=LOGIXRESTSTART
ONCONNECT=LOGIXRESTCONNECT
ONEXIT=LOGIXRESTEXIT
CORSEnable=1
AllowOrigin=*

[MAIL]
Protocol=SMTP
extendSMTP=1
AUTHLOGIN=1
AUTHPLAIN=1
TLSVersion=3

[General]
MONITORKEY=LOGIX
CONSOLELOG=1
CONSOLEMAXSIZE=100000000
ConsoleLogDate=0
SERVERTYPE=4GL
MAXSTRINGSIZE=300
FGLPROFILE=c:\totvs\bin\totvsprofile.pro

[WEBMONITOR]
ENABLE=0

[APP_MONITOR]
enable=0

[LICENSECLIENT]
SERVER=[HOST LS SERVICE]
PORT=[PORT LS SERVICCE]

[Drivers]
ACTIVE=TCP
MultiProtocolPortSecure=1
MultiProtocolPort=1
Secure=SSL

[TCP]
TYPE=TCPIP
PORT=6088
SecureConnection=1

[MPP]
SSL_Default=0
 


Agora veja como é feita a configuração no AppSever Broker que irá administrar as requisições para os dois AppServers apresentados acima:


[GENERAL]
CONSOLELOG=1
ConsoleLogDate=0

[BALANCE_WEB_SERVICES]
; Porta onde este broker server atende pedidos de conexão dos broker appservers 
LOCAL_SERVER_PORT = 9130
; Chave REMOTE_SERVER_?? = [Hostname ou endereço IP] [Porta TCP appserver] [Número de conexões]
; Lista dos Appserver de destino das conexões vindas dos broker clients.
; O sufixo da chave (??) aceita letras e números para identificar os servidores. A ordem em que
; os appservers são registrados é livre.
; Por exemplo: REMOTE_SERVER_0A, REMOTE_SERVER_XY, etc.
REMOTE_SERVER_01 = [HOSTNAME] 9131
REMOTE_SERVER_02 = [HOSTNAME] 9132
SESSION_TIMEOUT = 600
; Chave SERVICE_NAME = [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 no Windows
SERVICE_NAME = TOTVS_BROKER_APPSERVER_REST

; Chave SERVICE_DISPLAY_NAME (opcional)
; Descrição do serviço (Display Name) para exibição na lista de Serviços do Windows.
SERVICE_DISPLAY_NAME = "TOTVS BROKER HTTP REST"

SORT_METHOD = ROUND_ROBIN

; Tempo em segundos que o Totvs Server Broker armazena informações sobre uma conexão perdida,
; para possibilitar a retomada da conexão pelo broker server. 90 segundos é o tempo máximo,
; pois o Totvstec, por padrão, derruba qualquer conexão que fique sem atividade após este intervalo.
STANDBY_TIME = 90
  


Substitua os valores HOSTNAME e o número das portas pelas respectivas portas configuradas no Appserver Broker.


ATENÇÃO


As configurações acima apenas é uma sugestão de uso, sendo que algumas chaves adicionais podem ser informadas e o valor de chaves podem ser alteradas, conforme houver necessidade.  Para mais detalhes sobre configurações para o TOTVS Broker acessse:


Instalação Appserver Broker como serviço no Windows


Para instalar o Appserver Broker como serviço do Windows é um pouco diferente da instalação de serviço de um Appserver para ERP Logix. No caso do Appserver como Broker é preciso que, via linha de comando no Windows, usando permissão de acesso como administrador, execute uma instrução a partir da pasta onde está o binário do Appserver Broker, com um parâmetro indicando o tipo de protocolo de balanceamento de carga que o Broker irá gerenciar.
Para mais detalhes a respeito de como realizar esta instalação e configuração acesse Balanceamento de carga com broker.


ATENÇÃO

A configuração das chaves SERVICE_DISPLAY_NAME e SERVICE_NAME devem ter sido previamente registradas no arquivo de configuração .INI do AppServer Totvs Broker antes de executar o comando de instalação como serviço no Windows.

Em caso de instalação como serviço do Windows, confirme a criação do serviço do Appserver Broker após realizar o procedimento acima e configure o serviço como automático se desejar inicialização automática, juntamente com o servidor/máquina local onde foi realizada a instalação, não esquecendo que para não haver restrições durante o uso do AppServer, é preciso configurar neste serviço uma conta de usuário administrador para evitar bloqueios de acessos do serviço no uso do Logix.


Utilizando os serviços após configurados


Após configurados os serviços AppServers REST "Escravos" e o AppServer Broker REST, basta iniciar todos serviços e fazer com que as requisições REST utilizem a URL base do REST com o número da porta REST configurada no appserver REST Broker para que as requisições sejam automaticamente redirecionadas para os AppServers REST "Escravos".


Qualquer requisição de API Rest enviada para o Logix pode ser direcionada para a URL Base REST considerando o número da porta REST configurada no AppServer REST Broker.

Já para a execução das Aplicações WEB Logix, como a exemplo da aplicação GTR10000, será necessário configurar no arquivo de Profile do Logix a seguinte chave para que todas requisições API REST realizadas a partir das Aplicações WEB Logix sejam direcionadas para o AppServer REST Broker que irá então realizar a devida distribuição das requisições API REST respeitando as configurações indicadas para o Totvs AppServer REST Broker em relação a lista dos AppServers "Escravos" e a forma configurada para realizar a distribuição de processos.

Chave de configuração para direcionar as requisições API REST das aplicações WEB Logix para o TOTVS | AppServer REST Broker
#Chave para indicar um endereço URL fixo para direcionar todas requisicoes HTTP REST das aplicações WEB Logix iniciadas com auxílio do componente FreeForme LWebDialog.
logix.app.baseRestURL = "https://[HOSTNAME]:9030"


(informação) O [HOSTNAME] deve ser o nome ou IP do servidor onde foi disponibilizado o serviço do AppServer Broker para atender o balanceamento de carga de requisições API REST.



PARABÉNS! (grande sorriso) Agora você já pode executar as aplicações WEB Logix com mais tranquilidade e rapidez.

Mas calma, caso você não tenha configurado ainda os serviços dos AppServers para permitir executar as telas das aplicações Web Logix, clique AQUI e siga todas orientações. 

Em caso de dificuldades ou problemas para configurar ou executar os procedimentos acima, faça abertura de um ticket na página de suporte da Totvs para o time de atendimento do Framework Logix, enviando as seguintes informações:

  • Resumo do problema
  • Arquivos de LOG/DEBUG do problema
  • Versões de builds TOTVS Client e TOTVS Server em uso
  • Arquivos de configuração .INI dos AppServers envolvidos, indicando 
  • Informações sobre o sistema operacional utilizado no servidor de aplicação e também na maquina local do usuário.