Balanceamento de carga¶
Quando o limite de processamento de uma instância do servidor WebSocket/REST/GRPC do 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 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:
Ubuntu 22.04 LTS
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 *:9090>
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/ws/v3/synthesize balancer://ttscluster_ws/tts/ws/v3/synthesize
<Proxy balancer://ttscluster_rest>
BalancerMember http://<IP do TTS 1>:9090
BalancerMember http://<IP do TTS 2>:9090
ProxySet lbmethod=bybusyness
</Proxy>
ProxyPass /tts/rest/v2/synthesize balancer://ttscluster_rest/tts/rest/v2/synthesize
<Location "/tts-balancer"> SetHandler balancer-manager </Location>
</VirtualHost>
<VirtualHost *:9091>
<Proxy balancer://ttscluster_grpc>
BalancerMember http://<IP do TTS 1>:9091
BalancerMember http://<IP do TTS 2>:9091
ProxySet lbmethod=bybusyness
</Proxy>
</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, REST e GRPC do 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 GRPC:
http://<IP_Balanceador>/tts-server/grpc
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