Transferência avançada de alta disponibilidade com Hermes

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 3 min. de leitura
  • Saiba como as mensagens são produzidas e consumidas no Hermes durante a operação normal, transferência de alta disponibilidade avançada (AHA) e cenários de failover.

    As instâncias de produção da ServiceNow operam em datacenters geograficamente separados. Cada datacenter é emparelhado com outro datacenter para fornecer redundância com suporte a failover. Um datacenter é designado como o lado ativo e o outro como standby. Por exemplo, sua instância pode ser configurada nos datacenters DC1 e DC2, com DC1 como o lado ativo.

    Com a ativação do StreamConnect, LES ou IDR, um novo cluster Hermes Kafka é provisionado em ambos os datacenters. Para garantir alta disponibilidade e fornecer suporte a failover, o Hermes usa um par de clusters Kafka ativos/ativos, um em cada datacenter.

    Próximo ao cluster
    O cluster Hermes Kafka localizado no mesmo datacenter da instância é o cluster NEAR.
    Cluster distante
    O cluster em execução no outro datacenter é o cluster distante. O oposto é verdadeiro para a outra instância. Seu cluster NEAR está em seu datacenter e seu cluster distante está em execução no outro datacenter.
    Figura 1. Clusters Hermes Kafka próximos e distantes
    Os clusters Hermes Kafka próximos e distantes são relativos à instância.

    Operação normal

    Em condições operacionais normais, as mensagens são produzidas pela instância ou por um cliente externo para o cluster Near Hermes. Por exemplo, se sua instância estiver em execução no datacenter DC1, as mensagens serão produzidas para o cluster Near Hermes no DC1. As mensagens enviadas de um cliente externo são produzidas para o cluster usando uma porta no intervalo 400x, conforme definido na URL de inicialização do produtor.

    Quando um tópico é criado no Hermes, é criado em ambos os clusters. Dois processos de consumidor são usados para consumir mensagens de ambos os clusters, mas somente um único consumidor está consumindo ativamente em circunstâncias normais. Cada consumidor deve usar URLs de inicialização distintos, um no intervalo de 410x e outro no intervalo de 410x.

    Processo de failover

    Nas seguintes circunstâncias, o cluster em que as mensagens são produzidas pode mudar.

    Transferência de alta disponibilidade avançada da instância (AHA)
    Quando uma instância é submetida a uma transferência do AHA, a instância de reserva se torna ativa e a instância ativa anteriormente se torna de espera. Nesse cenário, a instância alterna para o uso do cluster Hermes no lado recém-ativo.

    Por exemplo, se a instância estiver em execução em datacenters DC1 e DC2 com DC1 como o lado ativo atual e ocorrer uma transferência AHA, a instância alternará para o uso do cluster Hermes no DC2.

    Failover do Hermes
    A instância monitora ativamente a integridade do cluster Hermes. Se ele detectar algum problema com o cluster, ele entrará no modo de failover. Nesse caso, até que a instância detecte que o cluster Near Hermes foi recuperado, ela usa o cluster Hermes próximo à instância de reserva.

    Por exemplo, se a instância estiver sendo executada em datacenters DC1 e DC2 com DC1 como o lado ativo, ela usará o cluster Hermes no DC1. Se ele detectar um problema com o cluster Hermes no DC1, ele entrará no modo de failover Hermes e começará a produzir mensagens para o cluster DC2 até que o cluster DC1 esteja íntegro novamente. Após a recuperação, ele retoma o uso do cluster Hermes no DC1.

    Quando ocorre failover, se os consumidores estiverem atrasados, ambos os consumidores poderão consumir mensagens até que um dos consumidores conclua o processamento. Por exemplo, se o lado ativo atual for DC1, o consumidor que consome do DC1 estará processando mensagens ativamente. Se ocorrer um problema no cluster DC1 resultando em failover para o cluster DC2, o consumidor que consome do cluster DC2 começará a processar mensagens. Se o consumidor que consome do cluster DC1 estiver atrasado, ambos os consumidores continuarão a consumir mensagens até que o consumidor DC1 o alcance.

    Mantendo a ordem

    Se a manutenção da ordem da mensagem for necessária, será responsabilidade da aplicação do consumidor gerenciar isso. Observe que a ordenação global das mensagens depende de como o tópico no Kafka é definido.