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.
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.
[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.
[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.
#------------------------------------# # 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.