TOTVS | DBAccess - Configuração distribuída
A topologia do TOTVS | DBAccess exige um serviço único para emular o controle de lock de registro ISAM. Para ser possível escalar a aplicação para atender a mais conexões simultâneas, o TOTVS | DBAccess pode ser configurado para trabalhar em uma configuração distribuída, onde um serviço do TOTVS | DBAccess é configurado como Master, que terá a função de centralizar o controle de acessos mutuamente exclusivos (locks), e os demais serviços devem ser configurados como Slaves, e através deles serão realizadas as conexões e operações com o SGBD.
Abrangência |
---|
ERP 10 e 11 |
A configuração distribuída não é diretamente responsável por fazer distribuição da carga ou das conexões. Deste modo, cada serviço do TOTVS | Application Server deve ser explicitamente configurado para realizar as conexões de dados em um TOTVS | DBAccess "Slave", onde o balanceamento efetivo das conexões já foi realizado pelo engine de balanceamento do TOTVS | Application Server, e cada TOTVS | DBAccess "Slave" é configurado para apontar para o "Master" para fazer as operações de lock.
Topologia sugerida
Partindo de um ambiente hipotético com 3 servidores, nomeados SRVDB, SRVAPP1 e SRVAPP2, onde o servidor de banco de dados possui um banco MSSQL Server e um TOTVS | DBAccess e os servidores APP1 e APP2 possuam cada um 4 serviços do TOTVS | Application Server, configurados em modo de balanceamento de carga, neste cenário os serviços do TOTVS | Application Server de todos os equipamentos apontam para um único TOTVS | DBAccess, instalando na máquina de banco (SRVDB), onde têm um ODBC configurado para o TOTVS | DBAccess.
sf
Procedimento
Para implementar a configuração distribuída do TOTVS | DBAccess, são necessários os seguintes passos:
- Instale um TOTVS | DBAccess em cada máquina que contém o TOTVS | Application Server (SRVAPP1 e SRVAPP2).
- Configure o ODBC para o banco de dados em cada uma das máquinas (SRVAPP1 e SRVAPP2).
- Configure cada TOTVS | DBAccess, instalado nas máquinas Slave, para o modo de acesso Slave.
- Pare o serviço do TOTVS | DBAccess da máquina de banco de dados (SRVDB).
- Configure o TOTVS | DBAccess, da máquina de banco de dados, para o modo de acesso Master.
- Execute o TOTVS | DBAccess da máquina de banco de dados (SRVDB).
- Execute o TOTVS | DBAccess das máquinas que contém o TOTVS | Application Server (SRVAPP1 e SRVAPP2).
- Teste as conexões, de cada um dos TOTVS | DBAccess, usando o TOTVS | DBMonitor.
- Altere os arquivos de configuração (appserver.ini), dos serviços da máquina SRVAPP1, para acessar o TOTVS | DBAccess da própria máquina.
- Altere os arquivos de configuração (appserver.ini), dos serviços da máquina SRVAPP2, para acessar o TOTVS | DBAccess da própria máquina.
Para configurar o TOTVS | DBAccess para modo de conexão Master, deve-se abrir o arquivo de configuração (dbaccess.ini), do TOTVS | DBAccess, e na seção [General] inserir a chave Mode.
Mode=Master
Para configurar os TOTVS | DBAccess para modo Slave, deve-se abrir o arquivo de configuração (dbaccess.ini) e configurar as seguintes chaves:
Mode=SlaveMasterServer=<IP>MasterPort=<Port>
Onde <IP> e <Port> correspondem ao IP e Porta do TOTVS | DBAccess Master que será utilizado como servidor de locks para os demais TOTVS | DBAccess Slave.
Características operacionais da configuração distribuída
Um TOTVS | DBAccess Slave somente consegue estabelecer conexão com o banco de dados, se conseguir conectar primeiro com o TOTVS | DBAccess Master. Caso o TOTVS | DBAccess Master não esteja no ar ou esteja configurado de forma incorreta, o TOTVS | DBAccess retornará erro de conexão -43 ao TOTVS | Application Server.
O TOTVS | DBAccess Master é uma aplicação crítica e deve estar sempre no ar. Se o TOTVS | DBAccess Master for derrubado durante a operação do sistema (ERP), as conexões dos Slaves serão derrubadas assim que qualquer recurso que dependa do Master (Lock de registro, controle de numeração de tabelas. virtual lock, table cache). Para o TOTVS | Application Server, será retornado o erro -2 (NO_CONNECTION), indicando que a conexão entre o TOTVS | Application Server e o TOTVS | DBAccess foi perdida, e nos logs do TOTVS | DBAccess será registrado que a causa do fechamento da conexão foi falha de comunicação como TOTVS | DBAccess Master.
A interface de monitoramento (TOTVS | DBMonitor) somente têm acesso às informações e conexões processadas naquele serviço. Logo, para localizar uma conexão no ambiente mencioando, deve-se abrir um TOTVS | DBMonitor para cada TOTVS | DBAccess Slave. Da mesma forma, os recursos de bloqueio de conexão e liberação de conexão ainda são individuais. Bloqueas novas conexões do TOTVS | DBAccess Master não bloqueia novas conexões do TOTVS | DBAccess Slave.
Além disso, outro ponto importante, é a respeito das configurações: As configurações devem ser replicadas, de modo que cada TOTVS | DBAccess esteja configurado apontando para uma configuração ODBC que aponte para o mesmo banco de dados, ou ainda apontar para o mesmo banco de dados um ou mais TOTVS | DBAccess configurados como Slaves e apontar também para o mesmo banco de dados um TOTVS | DBAccess configurado como StandAlone (Padrão sem distribuição). Discrepâncias desta natureza, não têm como serem detectadas pelo TOTVS | DBAccess, e caso sejam realizadas, podem causar comportamentos inesperados e fatalmente prejudiciais a aplicação.
Flexibilidade de Configuração
O TOTVS | DBAccess Master não precisa necessariamente ficar junto com a máquina de banco de dados. O TOTVS | DBAccess pode ser um serviço instalado em um servidor de aplicação, em uma porta diferente da 7890, e como o seu controle será exclusivamente para bloqueio de registros, seu consumo de memória será bem inferior aos serviços TOTVS | DBAccess Slaves. E, é possível configurar um TOTVS | DBAccess Master em uma plataforma diferente dos demais Slaves, por exemplo um Master em uma máquina Linux e os demais TOTVS | DBAccess Slaves em máquinas Windows. Além disso, podemos também colocar mais de um TOTVS | DBAccess Slave no mesmo equipamento, desde que configurado em outra porta.
Embora seja possível, não é recomendável, que sejam utilizados TOTVS | DBAccess Slaves para o mesmo banco de dados/ambiente em plataformas distintas, por exemplo um TOTVS | DBAccess Slave em Windows e outro em Linux.
Build do TOTVS | DBAccess para uso do recurso distribuído
A utilização do TOTVS | DBAcces em modo distribuído requer uma build com release igual ou superior a 20100510.