Engenharia

Durabilidade da Busca em GHES com CCR

Introdução: A Essência da Busca no GitHub Enterprise Server

A funcionalidade de busca é fundamental para a experiência no GitHub, estendendo-se além das barras de pesquisa para incluir páginas de Issues, Releases, Projects e contadores de Pull Requests. Dada essa importância, a AITY, como parceira e especialista em soluções de infraestrutura, entende que a durabilidade da busca no GitHub Enterprise Server (GHES) é crucial para nossos clientes. Nosso foco está em garantir que a gestão do GHES consuma menos tempo, permitindo que as equipes se concentrem no que realmente agrega valor aos seus clientes.

Historicamente, administradores de GHES, especialmente em configurações de Alta Disponibilidade (HA), enfrentavam desafios significativos com os índices de busca. Erros na sequência de manutenção ou atualização poderiam danificar os índices, exigir reparos ou travá-los, causando problemas durante upgrades.

Desafios Históricos com Elasticsearch e Alta Disponibilidade

Em configurações de HA, o GHES opera com um nó primário que lida com todas as escritas e tráfego, e nós de réplica que permanecem sincronizados e podem assumir em caso de falha. A dificuldade surgia da integração de versões anteriores do Elasticsearch, nosso banco de dados de busca.

Por anos, tentou-se estabilizar este modo, implementando verificações de saúde do Elasticsearch e processos para corrigir estados instáveis, chegando a desenvolver um sistema de "espelhamento de busca". Contudo, a replicação de bancos de dados é complexa e exigia consistência.

A Virada: Cross Cluster Replication (CCR) do Elasticsearch

A solução para esses desafios veio com a adoção do recurso Cross Cluster Replication (CCR) do Elasticsearch para suportar o HA do GitHub Enterprise.

Mecanismo Interno do CCR

A implementação do CCR no GHES envolve fluxos de trabalho personalizados, pois o Elasticsearch's auto-follow API se aplica apenas a índices criados após a política existir. Instalações HA do GHES possuem índices de longa duração, exigindo um passo de bootstrap.

function bootstrap_ccr(primary, replica):
    # Fetch the current indexes on each
    primary_indexes = list_indexes(primary)
    replica_indexes = list_indexes(replica)

    # Filter out the system indexes
    managed = filter(primary_indexes, is_managed_ghe_index)

    # For indexes without follower patterns we need to
    # initialize that contract
    for index in managed:
        if index not in replica_indexes:
            ensure_follower_index(replica, leader=primary, index=index)
        else:
            ensure_following(replica, leader=primary, index=index)

    # Finally we will setup auto-follower patterns
    # so new indexes are automatically followed
    ensure_auto_follow_policy(
        replica,
        leader=primary,
        patterns=[managed_index_patterns],
        exclude=[system_index_patterns]
    )

Este é apenas um dos novos fluxos de trabalho criados. O GitHub também desenvolveu lógicas personalizadas para failover, exclusão de índices e upgrades, pois o Elasticsearch lida apenas com a replicação de documentos, sendo o restante do ciclo de vida do índice responsabilidade da plataforma.

Como Começar com o Modo CCR

Para usufruir do novo modo CCR, siga os passos abaixo:

Embora o novo método HA seja opcional por enquanto, ele será o padrão nos próximos dois anos. Este período permite que os administradores forneçam feedback valioso, tornando este o momento ideal para experimentá-lo.

Impacto Prático e Futuro

A adoção do Cross Cluster Replication do Elasticsearch representa um avanço significativo para a durabilidade e estabilidade da busca no GitHub Enterprise Server. Para administradores, isso significa menos tempo gasto com gerenciamento de índices, diagnósticos de problemas de HA e manutenções complexas. A AITY está entusiasmada com o potencial de uma experiência de gerenciamento mais fluida, permitindo que nossas equipes e clientes foquem na inovação e no desenvolvimento de produtos, em vez de na manutenção de infraestrutura. A busca mais robusta e confiável diretamente impacta a produtividade e a satisfação do usuário.

Quer maximizar a eficiência da busca em seu ambiente GitHub Enterprise Server de Alta Disponibilidade? Entre em contato com o suporte para configurar nossa nova arquitetura de busca e liberte o potencial de sua equipe!

Comentários

Interações
Seu Perfil

Aguardando Login...