Pular para o conteúdo principal

Visão geral

O recurso Cluster Discovery do ClickHouse simplifica a configuração do cluster, permitindo que os nós se descubram e se registrem automaticamente, sem precisar ser definidos explicitamente nos arquivos de configuração. Isso é especialmente útil quando a definição manual de cada nó se torna trabalhosa.
Cluster Discovery é um recurso experimental e pode ser alterado ou removido em versões futuras. Para habilitá-lo, inclua a configuração allow_experimental_cluster_discovery no seu arquivo de configuração:

Configuração dos servidores remotos

Configuração manual tradicional

Tradicionalmente, no ClickHouse, era necessário especificar manualmente, na configuração, cada shard e réplica do cluster:

Usando o Cluster Discovery

Com o Cluster Discovery, em vez de definir explicitamente cada nó, basta especificar um caminho no ZooKeeper. Todos os nós que se registrarem nesse caminho no ZooKeeper serão descobertos automaticamente e adicionados ao cluster.
Se quiser especificar um número de shard para um nó específico, você pode incluir a tag <shard> na seção <discovery>: para node1 e node2:
para node3 e node4:

Modo observador

Os nós configurados no modo observador não se registrarão como réplicas. Eles apenas observarão e detectarão outras réplicas ativas no cluster, sem participar ativamente. Para habilitar o modo observador, inclua a tag <observer/> na seção <discovery>:

Descoberta de clusters

Às vezes, pode ser necessário adicionar e remover não apenas hosts em clusters, mas também os próprios clusters. Você pode usar o nó <multicluster_root_path> com o caminho raiz de vários clusters:
Neste caso, quando outro host se registra com o caminho /clickhouse/discovery/some_new_cluster, um cluster chamado some_new_cluster será adicionado. Você pode usar os dois recursos simultaneamente; o host pode se registrar no cluster my_cluster e descobrir outros clusters:
Limitações:
  • Você não pode usar <path> e <multicluster_root_path> na mesma subárvore de remote_servers.
  • <multicluster_root_path> só pode ser usado com <observer/>.
  • A última parte do path no Keeper é usada como nome do cluster, enquanto, no registro, o nome é obtido da tag XML.

Casos de uso e limitações

À medida que nós são adicionados ou removidos do path do ZooKeeper especificado, eles são automaticamente descobertos ou removidos do cluster, sem a necessidade de alterações na configuração ou de reinicializar o servidor. No entanto, as alterações afetam apenas a configuração do cluster, não os dados nem os bancos de dados e as tabelas existentes. Considere o exemplo a seguir com um cluster de 3 nós:
Em seguida, adicionamos um novo nó ao cluster, iniciando-o com a mesma entrada na seção remote_servers de um arquivo de configuração:
O quarto nó participa do cluster, mas a tabela event_table ainda existe apenas nos três primeiros nós:
Se você precisar que as tabelas sejam replicadas em todos os nós, poderá usar o mecanismo de banco de dados Replicated como alternativa à Cluster Discovery.
Última modificação em 19 de junho de 2026