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:
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>:
À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