Guía de despliegue

Alojar ClickHouse en un VPS

Desplegar en un VPS Cloud →

Tutorial

Alojar ClickHouse en un VPS

Bases de datos9 min de lectura6 pasos

ClickHouse es una base de datos analítica orientada a columnas, capaz de agregar miles de millones de filas en unos pocos milisegundos. Es la herramienta de referencia para el reporting, el análisis de logs y los dashboards en tiempo real, y se autoaloja muy bien en un VPS correctamente dimensionado. Veamos cómo desplegarlo con Docker, protegerlo y configurarlo para obtener un rendimiento óptimo.

Contenido· Por qué autoalojar ClickHouse en un VPS1/10
  1. 01Por qué autoalojar ClickHouse en un VPS
  2. 02Las ventajas concretas de autoalojar ClickHouse
  3. 03Requisitos de hardware y de software
  4. 04Desplegar ClickHouse paso a paso
  5. 05Configuración post-instalación: usuarios, base de datos y compresión
  6. 06Casos de uso concretos: logs de aplicación y métricas time-series
  7. 07Rendimiento: inserciones por lotes y monitorización de partes
  8. 08Resolución de errores frecuentes
  9. 09Instalarlo con un solo clic desde el Marketplace de ServOrbit
  10. 10ClickHouse vs Elasticsearch para logs: ¿qué base de datos elegir?

Por qué autoalojar ClickHouse en un VPS

ClickHouse destaca en las consultas analíticas (OLAP): gracias a su almacenamiento en columnas y a su compresión agresiva, puede escanear terabytes en hardware modesto allí donde una base de datos relacional clásica se hundiría. Autoalojarlo en un VPS le evita los costes por volumen de consultas de los servicios gestionados (ClickHouse Cloud, BigQuery) y le da el control completo del esquema, de los motores de tabla y de la retención. Resulta especialmente pertinente para ingerir sus propios logs de aplicación, métricas de producto o eventos de analítica sin enviar sus datos a un tercero. Como ClickHouse suele comprimir los datos en un factor de 5 a 10, un VPS con un disco SSD razonable puede almacenar cientos de millones de eventos. También conserva el control sobre la latencia: sus paneles consultan una instancia cercana a sus usuarios en lugar de un servicio remoto.

Las ventajas concretas de autoalojar ClickHouse

  • Consultas analíticas extremadamente rápidas: agregaciones sobre cientos de millones de filas en menos de un segundo.
  • Compresión en columnas de 5x a 10x que reduce drásticamente el coste de almacenamiento de sus logs y eventos.
  • Ingesta masiva: cientos de miles de filas por segundo en un solo nodo bien ajustado.
  • Compatible con SQL y con numerosos conectores (Grafana, Metabase, clientes HTTP y nativos).
  • Soberanía analítica: sus logs y métricas de producto permanecen en su infraestructura.
  • Sin facturación por consulta: un coste de VPS fijo para un volumen analítico elevado.

Requisitos de hardware y de software

A ClickHouse le gustan la RAM y el disco rápido. El mínimo absoluto es 2 GB de RAM para un entorno de pruebas o desarrollo, pero 4 GB es el umbral recomendado para cargas de producción ligeras, y 8 GB ofrecen un margen mucho más sano para agregaciones voluminosas y el mark cache. En cuanto a la CPU, 2 vCPU permiten a ClickHouse explotar el paralelismo en consultas sencillas; 4 vCPU se vuelven necesarias para agregaciones o joins en tablas densas. El disco es el factor más crítico: un SSD NVMe es obligatorio — ClickHouse genera una I/O intensa durante los merges de particiones. Los dos puertos clave son el 8123 para la interfaz HTTP y el 9000 para el protocolo TCP nativo. Nunca exponga el puerto 9000 directamente a Internet.

Desplegar ClickHouse paso a paso

  1. Preparar el VPS

    Instale Docker y aumente los límites del sistema (ulimit -n a 262144), porque ClickHouse abre muchos descriptores de archivo. Desactive el swap excesivo y compruebe que el disco es realmente SSD NVMe.

  2. Lanzar ClickHouse con Docker

    Utilice la imagen oficial clickhouse/clickhouse-server. Monte tres volúmenes persistentes: /var/lib/clickhouse (datos), /var/log/clickhouse-server (logs) y una carpeta de configuración /etc/clickhouse-server/config.d. Añada ulimits: nofile: 262144 en el compose.

  3. Crear un usuario y una contraseña

    Nunca deje al usuario default sin contraseña. Cree un archivo users.d/custom.xml con un usuario dedicado, una contraseña con hash (echo -n password | sha256sum) y cuotas. Restrinja <networks> a las IP autorizadas.

  4. Ajustar la memoria y el perfil

    En config.d, fije max_server_memory_usage_to_ram_ratio en 0.8 y defina un max_memory_usage por consulta adaptado a su VPS para evitar los OOM. Active la retención de particiones con un TTL en sus tablas (TTL date + INTERVAL 90 DAY).

  5. Exponer la interfaz HTTP detrás de un reverse proxy

    ClickHouse expone una API HTTP en el puerto 8123. Ponga Nginx o Caddy delante para el TLS y una autenticación adicional, y no abra el puerto nativo 9000 al público.

  6. Conectar una herramienta de visualización

    Conecte Grafana o Metabase al endpoint HTTPS para construir sus paneles. Cree sus tablas con el motor MergeTree, elija un ORDER BY pertinente y particione por mes para obtener consultas y purgas eficientes.

Configuración post-instalación: usuarios, base de datos y compresión

Una vez que ClickHouse está en marcha, tres pasos de configuración consolidan la seguridad y el rendimiento. Primero, cree una base de datos dedicada con CREATE DATABASE analytics;. Luego, defina sus usuarios en un archivo users.d/production.xml en lugar del users.xml principal: esta separación permite recargar los usuarios sin reiniciar el servidor (SYSTEM RELOAD USERS). Por último, active la compresión LZ4 en config.d/compression.xml: es el códec por defecto de ClickHouse para las columnas y ofrece un buen equilibrio entre tasa de compresión y velocidad de descompresión. Para un almacenamiento aún más compacto, ZSTD (niveles 1 a 3) es una alternativa viable para columnas con pocas consultas.

Casos de uso concretos: logs de aplicación y métricas time-series

ClickHouse es una alternativa natural a Elasticsearch para los pipelines de logs analíticos. Donde Elasticsearch indexa cada campo de cada documento JSON y requiere una memoria JVM significativa, ClickHouse almacena cada columna por separado y comprime los valores repetitivos de forma muy eficiente. Para un pipeline de logs, cree una tabla logs con el motor MergeTree particionado por día y ordenado por (service, timestamp). Ingiera datos a través de la API HTTP en INSERT por lotes, o mediante Vector.dev, Fluent Bit o Filebeat. Una consulta típica sobre 500 millones de filas filtradas por un intervalo de tiempo se ejecuta en 2 a 8 segundos en un VPS de 4 vCPU / 8 GB — de 10 a significativamente más rápido que las bases OLTP para análisis que una base de datos relacional estándar.

Rendimiento: inserciones por lotes y monitorización de partes

El comportamiento de escritura de ClickHouse es fundamentalmente diferente al de las bases OLTP. Cada INSERT crea una nueva parte en el disco, y ClickHouse fusiona estas partes en segundo plano. Si inserta fila por fila o en lotes pequeños (menos de 1.000 filas), inundará el sistema de partes pequeñas y obtendrá el error Too many parts. La regla de oro es insertar en lotes de 10.000 a 100.000 filas como mínimo. Monitorice el estado de las partes con SELECT table, count() as parts FROM system.parts WHERE active GROUP BY table ORDER BY parts DESC.

Resolución de errores frecuentes

Tres errores aparecen con regularidad al desplegar ClickHouse en un VPS. Too many parts: está insertando en lotes demasiado pequeños; agrupe sus inserts o use el motor Buffer. Error OOM: la consulta consumió más RAM de lo que permite max_memory_usage; añada LIMIT a sus consultas exploratorias o migre a un VPS con más RAM. Permission denied en /var/lib/clickhouse: el usuario de sistema clickhouse (UID 101 en la imagen Docker oficial) no tiene derechos de escritura sobre el volumen montado; ejecute chown -R 101:101 /su/ruta/clickhouse-data en el host antes de lanzar el contenedor.

Instalarlo con un solo clic desde el Marketplace de ServOrbit

Todo lo anterior se hace a mano, y es útil saber hacerlo. Si prefiere no hacerlo, ClickHouse figura en el Marketplace de ServOrbit y se instala en su VPS con un solo clic. La plantilla despliega la versión 26.3 LTS fijada, monta los volúmenes persistentes para los datos y los registros, eleva el límite de descriptores de archivo a 262144 tal como exige ClickHouse, y crea una base de datos analytics en el primer arranque. Sobre todo, cierra la trampa más habitual del despliegue manual: la imagen de origen incluye una cuenta default sin ninguna contraseña, y la instalación la retira en el arranque para sustituirla por una cuenta admin cuya contraseña se genera para su servidor y se muestra en su área de cliente.

ClickHouse vs Elasticsearch para logs: ¿qué base de datos elegir?

Desplace la tabla

Backendabverdict
Almacenamiento por GB de logsClickHouseElasticsearchClickHouse (compresión 5-10x vs 1-2x)
Consultas analíticas (agregados, tendencias)Segundos sobre 500M filasMinutos o degradaciónClickHouse
Búsqueda de texto completo en mensajesLimitada (LIKE, token BF)Nativa y eficienteElasticsearch
RAM requerida para arrancar2 GB mínimo4-8 GB mínimo (JVM)ClickHouse
Ingesta en tiempo real (streaming)Se recomienda por lotesNativa y optimizadaElasticsearch
Conectores Grafana / BIPlugin nativo ClickHousePlugin ElasticsearchEquivalente

La elección de la clave de ordenación (ORDER BY) del motor MergeTree es el factor decisivo del rendimiento: coloque primero las columnas más filtradas en sus consultas (a menudo una fecha y un identificador). Utilice tablas Buffer o inserciones por lotes de varios miles de filas en lugar de inserciones fila por fila, que crean multitud de particiones pequeñas y disparan merges costosos. Vigile system.merges y system.parts para detectar una fragmentación excesiva.

Despliegue ClickHouse con un solo clic en un VPS ServOrbit

Versión 26.3 LTS fijada, volúmenes persistentes, cuenta de administrador generada: el almacén analítico listo para recibir sus eventos.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva