Com balanceamento via Broker é possível dividir a carga com 2 ou mais AppServers, resolvendo assim problemas de lentidão causados por muitos acessos em um curto intervalo de tempo.
O MeuRH depende dos serviços de HTTP e REST, e é possível balancear ambos.
Nós vamos construir uma aplicação MeuRH exemplo com 5 AppServers: Broker HTTP, Broker REST, Worker 1, Worker 2, Worker 3.
Nossa aplicação funcionará com HTTPS na porta 4430 e REST na porta 9090.
Logo, o Broker HTTP é quem subirá a porta 4430 e o Broker REST é quem subirá a porta 9090, então repassam às portas HTTP e REST dos Workers.
Informações | ||
---|---|---|
| ||
Caso seja uma migração de um ambiente já existente, as portas utilizadas pelos usuários seguirão as mesmas. Não há necessidade de qualquer alteração nos aplicativos dos usuários. |
Para o Broker HTTP vamos utilizar como base o appserver.ini mostrado abaixo.
Bloco de código | ||||
---|---|---|---|---|
| ||||
[GENERAL]
ConsoleLog=1
ConsoleLogDate=0
[BALANCE_HTTP]
LOCAL_SERVER_PORT=4430
REMOTE_SERVER_01=192.168.0.50 4431
REMOTE_SERVER_02=192.168.0.50 4432
REMOTE_SERVER_03=192.168.0.50 4433
SSL_METHOD=SSL/TLS
SSL_CERTIFICATE=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data\certs\totvs.pem
SSL_KEY=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data\certs\totvs.key
SSL_PASSPHRASE=
SSL_ENCRYPT_UPSTREAM=1
SERVICE_NAME=AppServer-MeuRH-BrokerHTTP
SERVICE_DISPLAY_NAME="AppServer - MeuRH - Broker HTTP"
|
Para o Broker REST vamos utilizar como base o appserver.ini mostrado abaixo.
Bloco de código | ||||
---|---|---|---|---|
| ||||
[GENERAL]
ConsoleLog=1
ConsoleLogDate=0
[BALANCE_WEB_SERVICES]
LOCAL_SERVER_PORT=9090
REMOTE_SERVER_01=192.168.0.50 9091
REMOTE_SERVER_02=192.168.0.50 9092
REMOTE_SERVER_03=192.168.0.50 9093
SERVICE_NAME=AppServer-MeuRH-BrokerREST
SERVICE_DISPLAY_NAME="AppServer - MeuRH - Broker REST" |
Para os Workers vamos utilizar como base o appserver.ini do Worker 1 mostrado abaixo.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#------------------------------------#
# SERVICE #
#------------------------------------#
[SERVICE]
NAME=AppServer-MeuRH-Worker1
DISPLAYNAME=AppServer - MeuRH - Worker 1 (HTTP e REST)
#------------------------------------#
# LICENSE #
#------------------------------------#
[LICENSECLIENT]
SERVER=192.168.0.76
PORT=5555
#------------------------------------#
# NETWORK #
#------------------------------------#
[DRIVERS]
ACTIVE=TCP
SECURE=SSL
[TCP]
TYPE=TCPIP
PORT=1901
SECURECONNECTION=1
[SSL]
TYPE=TCPIP
PORT=19010
#------------------------------------#
# SSL #
#------------------------------------#
[SSLCONFIGURE]
SSL2=1
SSL3=1
TLS1_0=1
TLS1_1=1
TLS1_2=1
VERBOSE=1
BUGS=1
STATE=1
CACHESIZE=32
CERTIFICATESERVER=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data\certs\totvs.pem
KEYSERVER=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data\certs\totvs.key
#------------------------------------#
# HTTP\HTTPS #
#------------------------------------#
[HTTP]
ENABLE=0
PATH=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data\web\PortalMeuRH01
PORT=8081
COMPRESSION=1
[HTTPS]
ENABLE=1
PORT=4431
SECURECOOKIE=1
COMPRESSION=1
[tech.totvs.com.br:4430/01]
ENABLE=1
PATH=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data\web\PortalMeuRH01
DEFAULTPAGE=index.html
#------------------------------------#
# REST #
#------------------------------------#
[HTTPV11]
ENABLE=1
SOCKETS=HTTPREST
TIMEOUT=5000
[HTTPREST]
PORT=9091
URIS=HTTPENV
SECURITY=1
VERBOSE=1
SSL2=0
SSL3=1
TLS1=3
TLS1_0=1
TLS1_1=1
TLS1_2=1
BUGS=1
STATE=1
[HTTPENV]
URL=/rest01
PREPAREIN=All
INSTANCES=5,20,5,5
ENVIRONMENT=WS_MEURH
CORSENABLE=1
ALLOWORIGIN=*
PUBLIC=fwjwt/refresh_token,auth
STATELESS=1
ENABLEKEEPALIVE=0
INACTIVETIMEOUT=3600
[RESTCONFIG]
RESTPORT=9091
MEURHLOG=1
#------------------------------------#
# JOBS #
#------------------------------------#
[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=WS_MEURH
[ONSTART]
JOBS=HTTPJOB
REFRESHRATE=30
DEBUGMSG=1
#------------------------------------#
# DATABASE #
#------------------------------------#
[DBACCESS]
DATABASE=MSSQL
SERVER=192.168.0.50
ALIAS=protheus-12-1-27
PROTHEUSONLY=0
#------------------------------------#
# ENVIRONMENTS #
#------------------------------------#
[GENERAL]
INSTALLPATH=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\
MAXSTRINGSIZE=10
CONSOLELOG=1
ASYNCCONSOLELOG=1
CONSOLEMAXSIZE=104857600
ASYNCMAXFILES=3
[WS_MEURH]
SOURCEPATH=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\apo
ROOTPATH=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data
STARTPATH=\system\
X2_PATH=
RPODB=TOP
RPOLANGUAGE=Portuguese
RPOVERSION=120
LOCALFILES=CTREE
LOCALDBEXTENSION=.dtc
TOPMEMOMEGA=1
REGIONALLANGUAGE=BRA |
Para os demais Workers, copie o appserver.ini do Worker 1 e altere os trechos em negrito:
[SERVICE]
NAME=AppServer-MeuRH-Worker1
DISPLAYNAME=AppServer - MeuRH - Worker 1
[TCP]
PORT=1901 → 1902, 1903, ..., 190N
[SSL]
PORT=19010 → 19020, 19030, ..., 190N0
[HTTP]
PORT=8081 → 8082, 8083, ..., 808N
[HTTPS]
PORT=4431 → 4432, 443, ..., 443N
[HTTPREST]
PORT=9091 → 9092, 9093, ..., 909N
[RESTCONFIG]
RESTPORT=9091 → 9092, 9093, ..., 909N
Os AppServers configurados como Broker necessitam subir com um argumento adicional, descritos abaixo. Clique aqui para mais informações sobre os parâmetros do Broker.