Descripción general
La funcionalidad Detección de clústeres de ClickHouse simplifica la configuración del clúster al permitir que los nodos se descubran y se registren automáticamente, sin necesidad de definirlos explícitamente en los archivos de configuración. Esto resulta especialmente útil cuando la definición manual de cada nodo se vuelve engorrosa.Detección de clústeres requiere tener configurado ClickHouse Keeper o ZooKeeper.
En versiones anteriores, era una funcionalidad experimental que debía habilitarse con la opción
allow_experimental_cluster_discovery en el archivo de configuración.
Esta opción ya está obsoleta y no tiene ningún efecto.Configuración de los servidores remotos
Configuración manual tradicional
Tradicionalmente, en ClickHouse, había que especificar manualmente en la configuración cada segmento y cada réplica del clúster:Uso de Detección de clústeres
Con Detección de clústeres, en lugar de definir explícitamente cada nodo, basta con especificar un path en ZooKeeper. Todos los nodos que se registren bajo este path en ZooKeeper se descubrirán automáticamente y se agregarán al clúster.<shard> dentro de la sección <discovery>:
para node1 y node2:
node3 y node4:
Modo observador
Los nodos configurados en modo observador no se registrarán como réplicas. Solo observarán y detectarán otras réplicas activas en el clúster sin participar activamente. Para habilitar el modo observador, incluye la etiqueta<observer/> en la sección <discovery>:
Detección de clústeres
A veces puede ser necesario añadir y eliminar no solo hosts de los clústeres, sino también los propios clústeres. Puede usar el nodo<multicluster_root_path> con la ruta raíz de varios clústeres:
/clickhouse/discovery/some_new_cluster, se añadirá un clúster llamado some_new_cluster.
Puede usar ambas funciones simultáneamente; el host puede registrarse en el clúster my_cluster y descubrir cualquier otro clúster:
- No se pueden usar
<path>y<multicluster_root_path>a la vez en el mismo subárbol deremote_servers. <multicluster_root_path>solo puede usarse con<observer/>.- La última parte de la ruta de Keeper se usa como nombre del clúster, mientras que durante el registro el nombre se toma de la etiqueta XML.
Casos de uso y limitaciones
A medida que se añaden o eliminan nodos de la ruta de ZooKeeper especificada, estos se detectan o se eliminan automáticamente del clúster sin necesidad de cambios en la configuración ni de reiniciar el servidor. Sin embargo, los cambios afectan solo a la configuración del clúster, no a los datos ni a las bases de datos y tablas existentes. Considere el siguiente ejemplo con un clúster de 3 nodos:remote_servers de un archivo de configuración:
event_table todavía existe solo en los tres primeros nodos: