segunda-feira, 3 de outubro de 2011

Balanceamento de carga entre serviços (LoadBalance)

Quando existe uma grande quantidade de usuários que utilizam o sistema, e o servidor (hardware) não possui uma configuração ideal para comportar todas as conexões simultaneamente, mas há mais de um servidor disponível, pode-se configurar balanceamento de carga de conexões, para permitir a escalabilidade da aplicação. Para que isto seja possível, "nomeamos" um servidor intitulado de "servidor Master" que será o responsável por administrar o balanceamento. Configurando o servidor Master O único arquivo de configuração (xxxsrv.ini) que será alterado com as configurações abaixo é o do servidor Master, pois é ele quem administrará o balanceamento de carga de conexões. Todos os usuários se conectarão inicialmente ao servidor Master, e é este quem efetuará o balanceamento de carga das conexões para os outros servidores. Nos arquivos de configuração (*.ini) dos outros servidores será alterado apenas a chave "RootPath", para que eles peguem a mesma base de dados do servidor Master. [ServerNetwork] Servers=SERVER2, SERVER3 --> NÃO INFORME O NOME DO SERVIDOR MASTER MasterConnection=0 --> O SERVIDOR MASTER NÃO RECEBE CONEXÃO [SERVER2] Type=TCPIP Server=172.16.77.42 Port=1234 Connections=1 [SERVER3] Type=TCPIP Server=172.16.75.62 Port=1235 Connections=1 Configuração dos outros servidores Conforme citado acima, nos demais servidores a única coisa que será alterada é a chave " RootPath" do arquivo de configuração do TOTVS Application Server. Para isso, o diretório raiz (P10), do servidor Master, deve ser compartilhado com direitos apenas para um usuário que será usado por todos os serviços. Assim, os outros usuários não conseguirão acesso a este diretório. Isto é necessário para que todos os servidores exerguem a mesma base de dados. Supondo que a base de dados esteja no servidor Master, os arquivos de configuração (*.ini) ficariam assim: [Environment] SourcePath=C:\XXX\APO RootPath=\\SIGAMASTER\XXX\AP_DATA\ --> Veja que a raiz está sendo apontada para o servidor Master. StartPath=\SIGAADV\ ou \SYSTEM\ (as demais configurações continuam iguais) Observações Cada servidor deverá ter o seu build e repositório, sendo que a base de dados fica centralizada no servidor Master ou no servidor de banco de dados. O balanceamento de carga de conexões é monoplataforma para o TOTVS Application Server. Isso significa que o MASTER e todos os SLAVES devem rodar no mesmo sistema operacional. Quando for realizada qualquer atualização de build e o repositório no servidor Master, a mesma alteração deverá ser feita nos outros servidores. Um mesmo usuário Windows deve ter direitos na pasta compartilhada (RootPath) e deverá ser um usuário Administrador, para que possa ser associado ao serviço de cada servidor. Para verificar onde os usuários estão conectados, basta utilizar a aplicativo TOTVS Monitor em cada servidor. Crie seções [TCP] no arquivo de configuração, do TOTVS Smart Client, para receber conexão dos slaves (TCP1, TCP2, TCP3 e TCPN). [TCP1] Server=Slave1 Port=1237 [TCP2] Server=Slave2 Port=1239 [TCP3] Server=Slave3 Port=1241 Ao abrir o TOTVS Monitor, informe qual comunicação [TCP] que deseja verificar as conexões. O nome do ambiente e portas de comunicação deve ser idêntico para todos os servidores. Separe em um servidor dedicado, um TOTVS Application Server para o ambiente de compilação: compilação é uma operação crítica, exclusiva, que não deve ser executada no mesmo serviço do TOTVS Application Server que está atendendo conexões de usuários do TOTVS Smart Client e ambiente de produção. No caso de balanceamento de carga de conexões em schedule, deve-se escolher um slave para receber a conexão. Lembre-se que o servidor Master NÃO recebe conexões. O valor da chave Connections determina a distribuição de conexões entre os slaves usando RAZÃO MATEMÁTICA (Exemplo: 1:2:1) O valor de RootPath=\\SIGAMASTER\XXX\AP_DATA\ deve ser a mesma para todas as instâncias para os ambientes [Environment] de mesmo nome. Para mais informações, consulte a documentação da seção [ServerNetwork]. Reserve 2 GB para cada TOTVS Application Server criado que pode ser na mesma máquina (desde que tenha capacidade para isso). No ambiente de balance cada ambiente deve ter seu RPO (todos iguais). NÃO compartilhe RPO em rede, pelos seguintes motivos: Em casos conhecidos os logs mostram que o sistema operacional está causando os erros de comunicação nos servidores de aplicação e não nas estações. As mensagens que as estações enviam no momento de uma nova conexão mostram que foi a parte servidora da operação que cortou a conexão de rede. Os servidores de aplicação fazem leitura intensiva dos RPOs quando executam o ERP, pois neles estão compiladas todas as regras de negócio, se o RPO é compartilhado em rede, tem como resultado: Degradação na performance de execução dos servidores de aplicação que utilizam o RPO compartilhado (tráfego de RPO em rede). O aumento do consumo de recursos de rede nos servidores que compartilham RPO, tipicamente, saturam o uso das interfaces de rede, criando uma concorrência de transmissão de dados com as estações que utilizam o TOTVS Smart Client.