Como executar o servidor de documentos ONLYOFFICE por trás de um balanceador de carga HAProxy

A regra mais importante é a seguinte: colocar o ONLYOFFICE Document Server atrás do HAProxy é simples para um único backend, mas um cluster de editores com vários nós exige mais do que um simples balanceamento de carga round-robin. A documentação atual da API do ONLYOFFICE afirma que as solicitações para o mesmo documento devem chegar ao mesmo nó do Document Server durante a edição colaborativa. Para integrações modernas, o mecanismo recomendado é o shardkeyparâmetro de consulta, que o balanceador de carga pode usar para garantir a afinidade com base no documento.

Se você tiver apenas um servidor de documentos e quiser usar o HAProxy para terminação HTTPS, um nome de host público estável ou verificações de integridade centralizadas, a configuração é mais simples. Se você tiver dois ou mais nós de servidor de documentos, use os mesmos fundamentos de proxy, mas adicione roteamento baseado em lógica de roteamento shardkeyem vez de assumir que o round-robin comum seja suficiente.

Os exemplos abaixo foram verificados em relação à documentação atual do proxy ONLYOFFICE , à documentação da chave de fragmentação ONLYOFFICE e às diretrizes atuais do HAProxy WebSocket .

Quando essa configuração for adequada

O HAProxy é uma interface adequada quando você precisa de uma única URL pública, como por exemplo https://docs.example.com, terminação TLS no balanceador de carga, verificações de integridade ativas ou vários nós do Document Server por trás de um único endpoint. Ele também é útil quando seu Nextcloud, ownCloud, DMS personalizado ou aplicativo nunca deve se conectar diretamente a um nó individual do Document Server.

Este guia pressupõe:

  • O HAProxy consegue alcançar cada servidor de documentos através da rede interna.
  • Cada servidor de documentos já funciona diretamente antes da introdução do balanceador de carga.
  • O nome de host público resolve para HAProxy.
  • Seu certificado TLS abrange o nome de host público.
  • Se você executar vários nós, eles serão implantados como uma arquitetura ONLYOFFICE com vários servidores, em vez de servidores independentes não relacionados que simplesmente compartilham um balanceador de carga.

Passo 1: Verifique todos os servidores de documentos antes de adicionar o HAProxy.

Não comece pelo balanceador de carga. Primeiro, verifique se todos os servidores de backend estão íntegros a partir do host do HAProxy. A documentação do ONLYOFFICE /healthcheckindica o endpoint para verificar a disponibilidade do editor. Um servidor íntegro retorna um resultado positivo true; a verificação abrange dependências essenciais como o banco de dados, o broker de mensagens, a conexão com o Redis e o armazenamento.

curl -sS http://10.0.10.21/healthcheck
curl -sS http://10.0.10.22/healthcheck

Resultado esperado:

true
true
Terminal do Ubuntu mostrando verificações de integridade em dois nós de backend do servidor de documentos ONLYOFFICE, retornando HTTP 200 e verdadeiro.
Verifique cada backend diretamente do host HAProxy antes de configurar o balanceamento de carga. Um balanceador de carga não pode compensar um nó do Document Server com problemas.

Se um dos servidores de backend falhar, solucione o problema desse nó primeiro. Causas comuns incluem regras de firewall, uma porta interna incorreta, serviços do Servidor de Documentos não em execução ou serviços de suporte indisponíveis.

Passo 2: Defina o modo HTTP e os tempos limite que tolerem conexões do editor.

O ONLYOFFICE é um aplicativo HTTP e utiliza conexões WebSocket de longa duração durante a edição. O HAProxy pode encaminhar WebSockets automaticamente após a atualização para HTTP, mas sua política de tempo limite ainda é importante. A própria documentação do HAProxy recomenda um timeout tunnelvalor para conexões WebSocket atualizadas.

Um ponto de partida prático é:

global
    log /dev/log local0
    log /dev/log local1 notice
    daemon
    maxconn 4096

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5s
    timeout client 60s
    timeout server 60s
    timeout tunnel 1h
Configuração do HAProxy em um terminal mostrando o modo HTTP, os tempos limite de conexão do cliente e do servidor e um tempo limite de túnel de uma hora para WebSockets.
O tempo limite do túnel WebSocket deve ser maior do que os tempos limite de requisição comuns, para que as sessões de edição colaborativa ociosas não sejam encerradas prematuramente.

Um tempo limite de túnel de uma hora é apenas um exemplo, não um requisito universal. Escolha um valor que se adeque ao comportamento de edição, à política de segurança e aos limites de recursos da sua organização. Se os editores se desconectarem em intervalos muito regulares, compare esse intervalo com os tempos limite de inatividade do HAProxy e de qualquer firewall ou proxy reverso upstream.

Etapa 3: Encerrar o HTTPS e preservar o contexto da solicitação original

O ONLYOFFICE exige explicitamente cabeçalhos encaminhados quando executado por trás de um proxy. Em particular, o cabeçalho `<hostname> X-Forwarded-Proto` informa ao Document Server se o cliente original usou HTTP ou HTTPS, enquanto X-Forwarded-Hosto cabeçalho `<hostname>` preserva o nome do host solicitado pelo cliente.

Um frontend HAProxy limpo pode ter esta aparência:

frontend onlyoffice_http
    bind *:80
    mode http
    http-request redirect scheme https code 301

frontend onlyoffice_https
    bind *:443 ssl crt /etc/haproxy/certs/docs.example.com.pem
    mode http
    option httplog

    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Forwarded-Host %[req.hdr(Host)]

    default_backend onlyoffice_docs
Configuração do frontend HAProxy mostrando HTTPS na porta 443, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-For e o backend ONLYOFFICE.
Encerre o TLS no HAProxy e encaminhe o esquema e o host originais para que o ONLYOFFICE possa gerar URLs externamente corretas.

Normalmente, não é necessário recriar manualmente as regras de cabeçalho Upgradee estilo NGINX Connectionno modo HTTP moderno do HAProxy. O HAProxy reconhece a atualização de HTTP para WebSocket e alterna a conexão para o modo túnel. O importante é não inserir regras que removam ou interrompam a solicitação de atualização.

Para obter visibilidade do IP do cliente, adicione isso option forwardforno backend. Isso gera um X-Forwarded-Forcabeçalho a partir do endereço de origem do cliente.

Passo 4: Adicione verificações de saúde e escolha a regra de balanceamento adequada.

Servidor de Documentos Únicos

Se o HAProxy estiver na frente de um servidor de documentos, o backend pode ser simples:

backend onlyoffice_docs
    mode http
    option forwardfor
    option httpchk GET /healthcheck
    http-check expect status 200
    timeout tunnel 1h

    server ds1 10.0.10.21:80 check

Nesse projeto, o HAProxy funciona principalmente como um proxy reverso, um ponto de extremidade TLS e um mecanismo de verificação de integridade (health gate).

Vários nós do servidor de documentos

Para uma implementação real com vários nós, não confie no simples esquema round-robin para edição colaborativa. A documentação atual do ONLYOFFICE afirma que todas as solicitações referentes ao mesmo documento devem chegar ao mesmo servidor. As solicitações de edição do navegador para o servidor incluem automaticamente uma chave de fragmentação, e os aplicativos devem adicioná-la ?shardkey=<document-key>às solicitações de comando, conversão e do Construtor de Documentos, conforme documentado.

O HAProxy suporta hashing em parâmetros de consulta de URL, portanto, um backend adequado para a API padrão de documentação do ONLYOFFICE é:

backend onlyoffice_docs
    mode http
    option forwardfor
    option httpchk GET /healthcheck
    http-check expect status 200
    timeout tunnel 1h

    balance url_param shardkey

    server ds1 10.0.10.21:80 check
    server ds2 10.0.10.22:80 check
Configuração do backend HAProxy com dois nós ONLYOFFICE, verificações de integridade, tempos limite e uma observação de que a edição colaborativa em vários nós requer afinidade com reconhecimento de documentos.
As verificações de integridade impedem que nós com falha entrem em rotação, enquanto a afinidade com reconhecimento de documentos é necessária para a edição colaborativa em vários nós. Use shardkeyroteamento baseado em critérios específicos para a API Docs padrão, em vez de um simples roteamento round-robin.

O algoritmo do HAProxy url_paramaplica um hash ao parâmetro de consulta selecionado. Se esse parâmetro estiver ausente, o HAProxy utiliza o comportamento padrão de balanceamento de carga. Isso torna especialmente importante que sua integração envie a chave de fragmentação (shard key) nas solicitações em que a ONLYOFFICE recomenda.

WOPI é diferente. A ONLYOFFICE afirma que as integrações WOPI usam o WOPISrcparâmetro de consulta para a mesma finalidade de roteamento. Não copie a balance url_param shardkeylinha sem alterações para um projeto WOPI e assuma que ela fornece a afinidade necessária.

Valide e recarregue o HAProxy com segurança.

Antes de recarregar o serviço, valide a configuração:

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Recarregar somente após a validação da sintaxe ser bem-sucedida:

sudo systemctl reload haproxy
sudo systemctl status haproxy

Se a sua distribuição usa um gerenciador de serviços ou caminho de configuração diferente, adapte esses comandos de acordo. Uma recarga é preferível a uma reinicialização forçada desnecessária quando o seu pacote HAProxy oferece suporte a recarregamentos de configuração controlados.

Teste através do URL público, não apenas de dentro da rede de back-end.

Agora teste o que os usuários e sua plataforma de gerenciamento de documentos realmente alcançarão:

curl -sS https://docs.example.com/healthcheck

O corpo esperado é:

true

Em seguida, verifique o certificado TLS:

openssl s_client -connect docs.example.com:443   -servername docs.example.com </dev/null 2>/dev/null   | openssl x509 -noout -subject -issuer -dates

Por fim, abra um documento real por meio do aplicativo de integração. Uma verificação de integridade apenas comprova que o endpoint do Servidor de Documentos está pronto; ela não comprova se os URLs de retorno de chamada, a configuração JWT, os downloads de documentos, os retornos de chamada de salvamento ou a afinidade de vários nós estão todos corretos.

O que verificar quando o editor carrega, mas desconecta ou não consegue salvar?

SintomaProvavelmente camada a ser inspecionadaAção útil
O público /healthcheckfalhaRoteamento HAProxy, TLS ou integridade do backendTeste cada backend diretamente e, em seguida, inspecione o status e os logs do HAProxy.
O painel do editor carrega e, em seguida, desconecta.Caminho do WebSocket ou tempo limite de inatividadeVerifique timeout tunnelse há algum firewall ou proxy entre o navegador e o HAProxy.
Os URLs gerados usam HTTP em vez de HTTPS.Cabeçalhos encaminhadosVerifique X-Forwarded-Proto: httpse X-Forwarded-Host.
A edição de múltiplos nós apresenta comportamento inconsistente.Afinidade de documentosConfirme shardkeyse está presente e se o HAProxy o calcula de forma consistente.
A verificação de saúde funciona, mas o salvamento falha.Retorno de chamada/caminho de rede de integraçãoVerifique se o servidor de documentos consegue acessar os URLs de retorno de chamada e de documentos do aplicativo de armazenamento.
Alguns nós saem repetidamente da rotação.verificação de dependência ou integridade do backendConsulte /healthcheckdiretamente o nó afetado e inspecione os registros do servidor de documentos.

Você precisa de sessões persistentes?

A persistência tradicional de IP de origem não é a melhor solução padrão para o ONLYOFFICE. Vários usuários editando o mesmo arquivo podem ter endereços IP de cliente diferentes, e um usuário pode abrir documentos diferentes que não precisam estar no mesmo nó. A afinidade com reconhecimento de documento baseada na chave de fragmentação do ONLYOFFICE é mais precisa porque a chave de roteamento representa o documento em edição, e não o endereço de rede do usuário.

Essa mesma distinção explica por que uma sessão persistente baseada em cookies não deve ser tratada como substituta do comportamento de roteamento documentado pelo ONLYOFFICE. Use a chave de fragmentação documentada do aplicativo ao criar uma implantação da API de Documentação em vários nós.

Lista de verificação da configuração final

  • Cada servidor de documentos retorna trueo estado /healthcheckanterior à sua adição ao HAProxy.
  • O HAProxy é executado em modo HTTP para o frontend e backend do ONLYOFFICE.
  • O HTTPS é encerrado com um certificado válido para o nome de host público do Servidor de Documentos.
  • X-Forwarded-Protoe X-Forwarded-Hostsão encaminhadas corretamente.
  • O tempo limite do túnel WebSocket é suficientemente longo para sessões de edição reais.
  • As verificações de integridade do backend removem os nós com falha do serviço.
  • O tráfego da API Docs em vários nós usa shardkeyafinidade baseada em , e não apenas o método round-robin simples.
  • As implementações WOPI usam roteamento apropriado para WOPISrc.
  • A verificação de saúde pública funciona e um documento real pode ser aberto, editado e salvo por meio da integração.

Para um único servidor de documentos, o HAProxy funciona principalmente como um proxy reverso limpo e uma camada TLS. Para vários nós de servidor de documentos, a diferença crucial reside no roteamento orientado a documentos. Construa o proxy em torno desse requisito primeiro e, em seguida, adicione verificações de integridade, HTTPS e ajustes de tempo limite.

Deixar um comentário

O que é o Microsoft Access? Como funcionam suas ferramentas de banco de dados?

O que é o Microsoft Access? Como funcionam suas ferramentas de banco de dados?

O Microsoft Access é um aplicativo de banco de dados para Windows que permite armazenar registros relacionados, criar consultas, elaborar formulários de entrada de dados e gerar relatórios. Saiba como ele funciona e quando é adequado para você.

Alterar a altura e a largura das linhas de grade no Word 2010

Alterar a altura e a largura das linhas de grade no Word 2010

Aprenda como ajustar a altura e a largura das linhas de grade no Word 2010, alterar a frequência das linhas visíveis e definir o espaçamento horizontal e vertical da grade de desenho subjacente.

Importação e exportação do Office Outlook 2010: Mova dados com um arquivo PST

Importação e exportação do Office Outlook 2010: Mova dados com um arquivo PST

Aprenda como importar um arquivo PST para o Outlook 2010 ou exportar emails, contatos, calendário e tarefas. Siga os menus corretos e evite pastas ausentes ou duplicadas.

Recupere a senha de um arquivo PST do Outlook com o Nucleus Kernel

Recupere a senha de um arquivo PST do Outlook com o Nucleus Kernel

Recupere uma senha esquecida de um arquivo PST do Outlook seguindo os passos atuais do Kernel, incluindo como identificar o arquivo correto, fazer um backup e verificar as limitações da ferramenta.

Como inserir uma página da web em um slide do PowerPoint

Como inserir uma página da web em um slide do PowerPoint

Use o suplemento LiveWeb para inserir um site em um slide do PowerPoint, definir seu tamanho e comportamento de atualização e verificar a compatibilidade antes da apresentação.

Contatos do Outlook 2010: Adicionar pessoas e usar a agenda de endereços

Contatos do Outlook 2010: Adicionar pessoas e usar a agenda de endereços

Aprenda como criar e organizar contatos no Outlook 2010, criar um grupo de contatos e selecionar pessoas salvas na Agenda de Endereços ao endereçar um e-mail.

Como criar um campo de hiperlink no Access 2010

Como criar um campo de hiperlink no Access 2010

Crie um campo de Hiperlink no Access 2010 no Modo de Exibição de Design e, em seguida, adicione e teste links para sites, e-mails ou arquivos compartilhados com os detalhes de destino corretos.

Como remover metadados e conteúdo ocultos de um documento do Word

Como remover metadados e conteúdo ocultos de um documento do Word

Use o Inspetor de Documentos do Word para revisar detalhes do autor, comentários, alterações controladas, texto oculto e outros dados antes de compartilhar, e descubra o que a verificação pode não detectar.

Exportar e importar configurações da Faixa de Opções e da Barra de Ferramentas de Acesso Rápido no Office 2010

Exportar e importar configurações da Faixa de Opções e da Barra de Ferramentas de Acesso Rápido no Office 2010

Mova guias personalizadas da Faixa de Opções e comandos da Barra de Ferramentas de Acesso Rápido no Office 2010 com um arquivo .exportedUI e proteja as configurações já existentes no seu computador de destino.

Converter uma planilha do Excel em papel quadriculado imprimível

Converter uma planilha do Excel em papel quadriculado imprimível

Crie papel quadriculado imprimível no Excel ajustando as dimensões das células, definindo uma área de impressão, escolhendo papel A4 e ativando a impressão de linhas de grade no Excel para desktop.