Instalar Apache Cassandra en CentOS 7
Introducción
Apache Cassandra es un sistema de gestión de bases de datos NoSQL distribuido, libre y de código abierto. Se utiliza para almacenar grandes volúmenes de datos en clústeres descentralizados y altamente disponibles. Cassandra distribuye datos entre muchos servidores para evitar puntos únicos de fallo.
Definición rápida: Cassandra es una base de datos distribuida orientada a columnas pensada para alta disponibilidad y escalado horizontal.
Antes de empezar: requisitos y modelo mental
- Requisitos mínimos: servidor CentOS 7 con acceso root o sudo, conexión a Internet para descargar paquetes, al menos 2 GB de RAM (más para producción).
- Modelo mental: piensa en Cassandra como un anillo de nodos que comparten datos y responsabilidad por particiones. Cada nodo puede atender lecturas y escrituras.
Importante: Cassandra requiere Java; la versión de Java afecta la compatibilidad. Esta guía muestra la instalación con Oracle JDK 8 como en el ejemplo original, pero existe la alternativa de usar OpenJDK (ver sección Alternativas).
Paso 1 - Instalar JAVA
Actualiza los paquetes y repositorios antes de instalar software:
yum -y updateDescarga el RPM de Oracle Java (ejemplo). Si no tienes wget, instala wget primero:
yum -y install wgetEjemplo de descarga del RPM (comando tal cual):
wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"Instala el RPM descargado:
yum -y localinstall jdk-8u131-linux-x64.rpmVerifica la versión de Java:
java -versionSalida esperada (ejemplo):
[root@liptan-pc ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Comprueba la variable de entorno JAVA_HOME:
echo $JAVA_HOMESi la salida está vacía, añade las variables al perfil del usuario. Edita el fichero ~/.bash_profile con tu editor preferido (aquí usamos nano):
nano ~/.bash_profileAñade estas líneas al final del archivo (mantén las rutas según tu instalación):
export JAVA_HOME=/usr/java/jdk1.8.0_131/
export JRE_HOME=/usr/java/jdk1.8.0_131/jre
Aplica los cambios cargando el perfil:
source ~/.bash_profileVerifica nuevamente:
[root@liptan-pc ~]# echo $JAVA_HOME
/usr/java/jdk1.8.0_131/
Nota: si instalas otra versión de JDK, ajusta las rutas JAVA_HOME/JRE_HOME.
Paso 2 - Añadir el repositorio e instalar Cassandra
Crea un archivo de repositorio para Cassandra:
nano /etc/yum.repos.d/cassandra.repoAñade el siguiente contenido al archivo:
[cassandra]
name=Apache Cassandra
baseurl=https://www.apache.org/dist/cassandra/redhat/311x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.apache.org/dist/cassandra/KEYS
Instala Cassandra usando yum:
yum -y install cassandraDespués de la instalación, recarga los daemons del sistema:
systemctl daemon-reloadInicia Cassandra:
systemctl start cassandraActiva el inicio automático con el sistema:
systemctl enable cassandraVerifica el estado del clúster con nodetool:
nodetool statusSalida ejemplo cuando todo está bien:
[root@ip-172-31-7-136 ~]# nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 136.29 KiB 256 100.0% b3d26649-9e10-4bee-9b3c-8e81c4394b2e rack1
Solución de problemas comunes
Si nodetool devuelve un error de conexión, por ejemplo:
nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.es posible que debas ajustar la configuración de RMI en el fichero de entorno de Cassandra. Edita el archivo:
nano /etc/cassandra/default.conf/cassandra-env.shBusca la línea con java.rmi.server.hostname:
# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname="
Descomenta y establece la IP de localhost (o la IP pública según tu despliegue):
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"
Guarda, cierra el editor y reinicia Cassandra:
systemctl restart cassandraVuelve a ejecutar:
nodetool statusSi nodetool muestra el estado, la comunicación JMX está funcionando.
Usar cqlsh para ejecutar consultas
Cassandra incluye cqlsh, una consola interactiva para CQL (Cassandra Query Language). Inicia cqlsh con:
cqlshSalida ejemplo:
[root@liptan-pc ~]# cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.0 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
Desde cqlsh puedes crear keyspaces, tablas y ejecutar consultas CQL.
Alternativas y notas sobre Java
- OpenJDK: en muchos entornos es preferible usar OpenJDK 8 (paquetes openjdk) por licencia y compatibilidad. Para producción, verifica la compatibilidad de la versión de Java con la versión de Cassandra que vas a usar.
- Distribuciones de Cassandra: además del repositorio oficial, existen paquetes proporcionados por terceros o contenedores Docker para despliegues más reproducibles.
Seguridad y puertos importantes
- Puertos por defecto:
- 7000: internode (sin SSL)
- 7001: internode (SSL)
- 7199: JMX (nodetool)
- 9042: cliente CQL nativo
- 9160: Thrift (obsoleto en versiones modernas)
Asegura el acceso a estos puertos mediante firewall o reglas de red. No expongas JMX (7199) directamente a Internet.
Verificación y criterios de aceptación
- Cassandra está activo y habilitado: systemctl status cassandra muestra active (running).
- nodetool status muestra al menos un nodo UP y en estado Normal (UN).
- cqlsh permite conectar y ejecutar una consulta simple: SELECT release_version FROM system.local;
Ejemplo de validación rápida desde la terminal:
nodetool status
cqlsh -e "SELECT release_version FROM system.local;"Role-based checklists
Administrador de sistemas (Ops):
- Actualizar sistema y repositorios.
- Instalar Java y configurar JAVA_HOME.
- Añadir repo y desplegar Cassandra.
- Configurar firewall y JMX seguro.
- Monitorizar logs en /var/log/cassandra/.
Desarrollador:
- Conectarse con cqlsh y probar consultas.
- Crear keyspace y tablas de prueba.
- Validar latencia y consistencia con CL (Consistency Level).
Comprobaciones rápidas (cheat sheet)
- Reiniciar Cassandra: systemctl restart cassandra
- Ver logs: tail -f /var/log/cassandra/system.log
- Estado del clúster: nodetool status
- Conexión CQL: cqlsh 127.0.0.1
Cuándo este procedimiento puede fallar
- Java incompatible o ruta JAVA_HOME incorrecta.
- Firewall bloqueando puertos JMX o CQL.
- Repositorio inaccesible (problemas de red o cambios en la URL del proyecto).
- Versiones de Cassandra y Java no compatibles.
Buenas prácticas para producción
- Ejecuta Cassandra en múltiples nodos para tolerancia a fallos.
- Mantén sincronizadas las versiones y realiza pruebas en un entorno de staging.
- Habilita copias de seguridad regulares y monitorización (por ejemplo con Prometheus/Grafana).
- Protege JMX y la interfaz CQL con TLS/VPN en entornos públicos.
Resumen
Apache Cassandra ya debería estar instalado y funcionando en tu servidor CentOS 7. Instalaste Java, añadiste el repositorio oficial, instalaste Cassandra, resolviste problemas de conexión JMX y comprobaste la instalación con nodetool y cqlsh.
Puntos clave:
- Asegurar la versión de Java y JAVA_HOME.
- Configurar correctamente cassandra-env.sh para JMX.
- Proteger los puertos y monitorizar el clúster.
Notas finales: visita el sitio oficial de Apache Cassandra para documentación detallada y guías de arquitectura si vas a desplegar en producción.
Materiales similares
Podman en Debian 11: instalación y uso
Apt-pinning en Debian: guía práctica
OptiScaler: inyectar FSR 4 en casi cualquier juego
Dansguardian + Squid NTLM en Debian Etch
Arreglar error de instalación Android en SD