Balanceamento de carga para interface WebSocket/REST¶
Quando o limite de processamento de uma instância do servidor WebSocket/REST do CPQD Texto Fala é atingido e não é suficiente para atender a demanda das aplicações clientes, é necessário aumentar a capacidade do sistema, adicionando novas instâncias ao ambiente de execução. Com isso, é necessário utilizar um software para realizar a distribuição e balanceamento de carga das aplicações clientes entre as instâncias do servidor.
Este guia considera uma topologia bastante simples para criar um cluster de Síntese de Fala, utilizando o Apache HTTP Server como balanceador de carga. Ela pode ser alterada, utilizando esquemas mais complexos de balanceamento, a fim de prover alta disponibilidade, eliminando pontos de falha (single point of failure).
Nota
Este guia é apenas uma sugestão de configuração para uma arquitetura utilizando balanceamento de carga. O suporte ao produto do CPQD Texto Fala não contempla a configuração de balanceamento de carga, podendo ser contratada separadamente. Além disso, o CPQD não dá suporte para produtos de terceiros, como o Apache HTTP Server.
Requisitos¶
A instalação do Apache HTTP Server em uma máquina dedicada para fazer o balanceamento de carga requer a seguinte configuração mínima:
- Hardware:
- 1 GB livres de RAM
- 100 MB livres de HD
- 2 vCPU’s @ 2.20 GHz
- Interface de rede 100 Mpbs
- Software:
- Linux Red Hat 7.2 ou CentOS 7.2
- Apache HTTP Server 2.4.6 (ou superior)
Instalação do Apache¶
Nosso exemplo foi baseado no Apache HTTP Server 2.4.6
. Para instalar o Apache, execute:
$ sudo yum -y groupinstall "Web Server"
Configuração¶
Configure o cluster de balanceamento de carga, criando o arquivo /etc/httpd/conf.d/tts-balancer.conf
com o seguinte conteúdo:
<VirtualHost *:80> ProxyRequests off <Proxy balancer://ttscluster_ws> BalancerMember ws://<IP do TTS 1>:9090 BalancerMember ws://<IP do TTS 2>:9090 ProxySet lbmethod=bybusyness </Proxy> ProxyPass /tts-server/ws balancer://ttscluster_ws/tts-server/ws <Proxy balancer://ttscluster_rest> BalancerMember http://<IP do TTS 1>:9090 BalancerMember http://<IP do TTS 2>:9090 ProxySet lbmethod=bybusyness </Proxy> ProxyPass /tts-server/rest balancer://ttscluster_rest/tts-server/rest <Location "/tts-balancer"> SetHandler balancer-manager </Location> </VirtualHost>
Execução¶
Para iniciar o Apache HTTP Server:
$ sudo systemctl start httpd
Para verificar se o Apache HTTP Server está executando corretamente:
$ sudo systemctl status httpd
Para parar o Apache HTTP Server:
$ sudo systemctl stop httpd
Acesso¶
O servidor com balanceador de carga deve ser endereçado usando as mesmas URLs das APIs WebSocket e REST do CPQD Texto Fala. Mude apenas o IP para o balanceador, e a porta de acesso para 80
(neste caso nem é preciso escrevê-la).
API REST:
http://<IP_Balanceador>/tts-server/rest
API WebSocket:
ws://<IP_Balanceador>/tts-server/ws
A página Web do Monitor de Balanceamento pode ser acessada com:
http://<IP_Balanceador>/tts-balancer