Com balanceamento via Broker é possível dividir a carga com 2 ou mais appserversAppServers, resolvendo assim problemas de lentidão causados por muitos acessos em um curto intervalo de tempo.
O MeuRH depende dos serviços de http HTTP e rest REST, e é possível balancear ambos.
Nós vamos construir uma aplicação exemplo com 2 Brokers (1 para o http, 1 para o rest), mais 3 workers. Como na imagem abaixo.Temos então 5 appservers: broker http, broker rest, worker 1, worker 2, worker 3.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 DESCRIPTION=AppServer - MeuRH - Worker 1 (rest(HTTP e httpREST) #------------------------------------# # LICENSE # #------------------------------------# [LICENSECLIENT] SERVER=192.168.0.76 PORT=5555 #------------------------------------# # NETWORK # #------------------------------------# [DRIVERS] ACTIVE=TCP SECURE=SSL [TCP] TYPE=TCPIP PORT=19111901 SECURECONNECTION=1 [SSL] TYPE=TCPIP PORT=1919119010 #------------------------------------# # 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\protheustotvs.cloudtotvs-withBundle.pem KEYSERVER=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data\certs\protheus.cloudtotvs.comtotvs.key #------------------------------------# # HTTP\HTTPS # #------------------------------------# [HTTP] ENABLE=0 PATH=D:\totvs\ambientes-protheus\12-1-27-meurh\protheus\protheus_data\web\PortalMeuRH01 PORT=80198081 COMPRESSION=1 [HTTPS] ENABLE=1 PORT=443194431 SECURECOOKIE=1 COMPRESSION=1 [tech.protheustotvs.cloudtotvs.com.br:443194430/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=90199091 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=90199091 MEURHLOG=01 #------------------------------------# # 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-exp-com-dic 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 FWTRACELOG=0 TRACE=0 REGIONALLANGUAGE=BRAREGIONALLANGUAGE=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.