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.O Cluster Discovery requer que o ClickHouse Keeper ou o ZooKeeper esteja configurado.
Em versões mais antigas, era um recurso experimental que precisava ser habilitado com a configuração
allow_experimental_cluster_discovery no arquivo de configuração.
Essa configuração agora está obsoleta e não tem mais efeito.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.shard para um nó específico, você pode incluir a tag <shard> na seção <discovery>:
para node1 e node2:
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:
/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:
- Você não pode usar
<path>e<multicluster_root_path>na mesma subárvore deremote_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:remote_servers de um arquivo de configuração:
event_table ainda existe apenas nos três primeiros nós: