Apache Cassandra es un sistema de administración de bases de datos distribuidas NoSQL gratuito y de código abierto creado por Facebook (ahora Meta). La naturaleza distribuida de Cassandra permite alta disponibilidad y alto rendimiento sin un único punto de falla.
Debido a su escalabilidad, Cassandra es adecuada para conjuntos de datos críticos y activos masivos. Organizaciones grandes y famosas como Apple, Bloomberg, BestBuy, eBay, Netflix, Spotify y muchas más. Y si estás interesado en conocer Apache Cassandra, estás en el lugar correcto.
En este artículo, aprenderá cómo instalar y configurar un Apache Cassandra Cluster en sistemas Linux. También aprenderá cómo interactuar con Cassandra utilizando sus herramientas de línea de comandos.
Requisitos
Para seguir los ejemplos de este tutorial, asegúrese de cumplir los siguientes requisitos.
- Necesitará dos servidores Linux en la misma red. Este tutorial usará dos servidores Rocky Linux (v8.5) con los siguientes detalles.
Nombre de host | Dirección IP |
casandra01 | 172.16.1.10 |
casandra02 | 172.16.1.15 |
La documentación de Apache Cassandra no proporciona una lista prescriptiva de distribuciones de Linux compatibles, pero menciona que Cassandra puede ejecutarse en CentOS, RHEL, Debian y SUSE Enterprise Linux.
- Debe tener privilegios sudo o acceso a la cuenta raíz.
- Editor de texto Nano o cualquier editor de texto basado en Linux.
Instalación de Java OpenJDK y Python
Antes de comenzar con la instalación de Apache Cassandra, primero instale las dependencias del software. Cassandra es una aplicación basada en Java, y la última versión (v4.0 a partir de este escrito) requiere Java OpenJDK 1.8 y Python 3.6.
Este tutorial utiliza el administrador de paquetes DNF para distribuciones de Linux basadas en RPM. También puede usar Yum o Apt en distribuciones basadas en DEB como Ubuntu y Debian. Consulte la documentación de su distribución para determinar qué administrador de paquetes usar.
Siga los pasos a continuación para instalar Java OpenJDK 1.8 y Python 3.6 en cada servidor.
1. Abra su cliente SSH, conéctese a su servidor y ejecute sudo su
comando para convertirse en root.
ssh [email protected]_name_or_IP
sudo su
2. A continuación, ejecute el dnf
comando a continuación para instalar los paquetes Java OpenJDK 1.8 y Python 3.6. Espere a que se complete la instalación.
dnf install java-1.8.0-openjdk python36 -y
3. Ahora, verifique la versión de Java ejecutando el siguiente comando.
java -version
A continuación puede ver que la versión actual de Java OpenJDK es 1.8.0_312.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445152.png)
4. A continuación, configure el intérprete de Python predeterminado en sus servidores para Python 3.6. Para hacerlo, ejecute el alternatives
comando como se muestra a continuación.
alternatives --config python
Escriba el número correspondiente a su versión de Python en el indicador de selección de comandos. El siguiente ejemplo muestra que Python3 es la opción 2.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445199.png)
5. Por último, ejecute el siguiente comando para verificar la versión de Python.
python --version
Debería ver que Python 3.x.x es el valor predeterminado, similar a la captura de pantalla a continuación.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445258.png)
Instalación de la base de datos Apache Cassandra NoSQL
Ha instalado las dependencias y se ha asegurado de que sean versiones adecuadas. ¡Ahora es el momento de instalar Apache Cassandra!
Si bien hay muchas formas de instalar Cassandra, la forma más conveniente es a través del repositorio oficial. Pero hay algunos pasos rápidos que debe realizar primero. Para instalar Cassandra NoSQL Database en sistemas Linux, proceda de la siguiente manera.
1. Ejecute el siguiente comando para crear un nuevo archivo de repositorio para Cassandra.
nano /etc/yum.repos.d/cassandra.repo
2. Copie la siguiente configuración del repositorio de Cassandra. Este repositorio está disponible para la mayoría de las distribuciones de Red Hat, incluido Rocky Linux.
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
3. Después de editar, guarde y cierre el archivo presionando Ctrl+X
, Y
y Enter
.
4. A continuación, ejecute el dnf
Comando a continuación para verificar todos los repositorios disponibles en su sistema.
dnf repolist
Debería ver el repositorio de Apache Cassandra en la lista de repositorios, como se muestra a continuación.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445258.png)
5. Ahora, instale Cassandra NoSQL Database ejecutando el siguiente comando.
dnf install cassandra -y
Debería ver un mensaje de confirmación después de instalar Apache Cassandra, similar a la captura de pantalla a continuación.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445226.png)
Configuración del clúster de Apache Cassandra
Una vez que haya instalado Cassandra, deberá editar la configuración /etc/cassandra/conf/cassandra.yaml
y configurar el clúster de Cassandra.
Para que el clúster de Cassandra funcione, deberá cambiar la configuración predeterminada de Cassandra en todos los servidores, como:
- Cambiar el
cluster_name
predeterminado . - Agregue direcciones IP del servidor al
seeds
opción. - Cambiar el
listen_address
predeterminado a la dirección IP local. - Habilite el
rpc_address
para conexiones de clientes.
Ahora, continúe con los siguientes pasos para configurar el clúster de Cassandra.
1. En cassandra01
, ejecute el siguiente comando para abrir la configuración de Cassandra cassandra.yaml para editar
nano /etc/cassandra/conf/cassandra.yaml
2. Cambie el valor predeterminado de cluster name
con el nuevo nombre. Este tutorial usa el nuevo nombre de clúster ATA Cluster
.
cluster_name: 'ATA Cluster'
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445309.png)
3. Ahora, agregue la dirección IP de cada servidor con el puerto Cassandra TCP predeterminado 7000 al seeds
opción a continuación. El formato sigue el patrón IP:Port,IP:Port
y el puerto predeterminado es 7000
.
seeds: "172.16.1.10:7000,172.16.1.15:7000"
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445302.png)
4. A continuación, cambie el listen_address
predeterminado a la dirección IP del servidor, no servidor local. La opción listen_address
define qué dirección IP se ejecutará Cassandra.
# for cassandra01
listen_address: 172.16.1.10
# for cassandra02
listen_address: 172.16.1.15
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445431.png)
5. A continuación, cambie la opción predeterminada rpc_address
con la dirección IP del servidor, el mismo valor que el listen_address
opción. En el entorno del clúster de Cassandra, todas las conexiones de los clientes pasan por la dirección IP del servidor local en TCP
predeterminado. puerto 9042
.
# for cassandra01
rpc_address: 172.16.1.10
# for cassandra02
rpc_address: 172.16.1.15
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445453.png)
6. Guarde y cierre el archivo de configuración presionando Ctrl+X
, Y
y Enter
.
7. Después de editar la configuración de Cassandra, ejecute el siguiente comando para iniciar el servicio de Cassandra. Este comando iniciará automáticamente el clúster y llegará a otros servidores cuyas direcciones IP están en el seeds
opción.
service cassandra start
8. Ahora, confirme el estado del servicio Cassandra ejecutando el siguiente comando.
service cassandra status
Obtendrá un resultado similar a la captura de pantalla a continuación. Como puede ver, el servicio Cassandra está activo (en ejecución) .
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445566.png)
Asegurar el clúster de Apache Cassandra con firewall
Configurar un firewall para asegurar los servicios es una tarea esencial en el entorno de producción. Hacerlo le permite limitar el acceso al clúster de Cassandra solo desde direcciones IP o rangos de red específicos.
En las distribuciones genéricas de Red Hat Linux, firewalld es el software de firewall predeterminado.
De forma predeterminada, Cassandra requiere que dos puertos TCP estén abiertos. El puerto 7000 es el puerto de clúster predeterminado y el puerto 9042 es el puerto de transporte predeterminado nativo para las conexiones de clientes.
Siga estos pasos para asegurar la implementación del clúster de Cassandra con un firewall.
1. Primero, confirma si ya tienes firewalld
en sus servidores ejecutando el siguiente comando.
dnf search firewalld
Si
firewalld
no existe, siga los pasos #2 y #3. Pero sifirewalld
ya existe en el servidor, salte al paso 4 en su lugar.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445636.png)
2. Si no tienes firewalld
en su sistema, ejecute el siguiente comando para instalarlo.
dnf install firewalld -y
3. Ahora, inicie el firewalld
servicio ejecutando el siguiente comando. Este comando iniciará el firewalld
servicio con reglas predeterminadas, abriendo puertos y servicios esenciales como clientes SSH y DHCP.
systemctl start firewalld
De forma predeterminada, firewalld proporciona una interfaz de línea de comandos
firewall-cmd
para gestionar y mantener las reglas del cortafuegos.
4. Ejecute el siguiente firewall-cmd
comando para crear una nueva zona para el clúster de Cassandra y recargar el firewalld
normas.
# add firewalld zone cassandra-cluster
firewall-cmd --new-zone=cassandra-cluster --permanent
# reload firewalld
firewall-cmd --reload
Verá el mensaje de salida éxito , lo que significa que la operación se ha realizado correctamente. La opción --permanent
hace que las nuevas reglas de firewall sean permanentes.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445617.png)
5. A continuación, agregue la red CIDR de su servidor al cassandra-cluster
zona. Esta regla permite cualquier servidor o cliente en el CIDR 172.16.1.0/24
para hablar y conectar. Para agregar una sola dirección IP, ingrese la dirección IP 172.16.1.20
.
firewall-cmd --zone=cassandra-cluster --add-source=172.16.1.0/24 --permanent
6. Ahora, ejecute el siguiente comando para agregar los puertos de servicio de Cassandra 7000
y 9042
al cassandra-cluster
zona.
# add storage_port Apache Cassandra to the zone cassandra_cluster
firewall-cmd --zone=cassandra-cluster --add-port=7000/tcp --permanent
# add Apache Cassandra port for client connections
firewall-cmd --zone=cassandra-cluster --add-port=9042/tcp --permanent
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445732.png)
7. Por último, recarga firewalld
reglas para aplicar una nueva configuración ejecutando el siguiente comando.
firewall-cmd --reload
Ahora solo se puede acceder al clúster de Cassandra a través del 172.16.1.0/24
y eliminará todas las conexiones de otras redes.
Comprobación del estado del clúster de Apache Cassandra
Nodetool es una utilidad de comando nativa para administrar y monitorear el clúster de Cassandra. Esta herramienta le permite mostrar el estado de las métricas del clúster de Cassandra, como tablas y espacios de claves, métricas de servidor, aplicaciones, métricas de conexión de clientes, etc.
En general, los administradores ejecutan el nodetool
comando directamente en el servidor Cassandra operativo que realiza el mantenimiento y la supervisión de la base de datos de rutina.
Siga los pasos a continuación para aprender los conceptos básicos para monitorear el clúster de Cassandra usando el nodetool
utilidad.
1. Verifique el estado del clúster de Cassandra ejecutando el siguiente comando.
nodetool status
Obtendrá un resultado similar a la captura de pantalla a continuación.
- T significa que el nodo está ARRIBA o corriendo.
- N significa que el nodo es NORMAL .
- La dirección puede ser la dirección IP o URL del nodo.
- Cargar es el tamaño de los archivos en el directorio de datos de Cassandra. Este valor se actualiza cada 90 segundos.
- La ficha es el número de tokens disponibles en el nodo.
- El ID de host es el ID de red del nodo. Cada nodo tiene un id diferente.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445781.png)
2. Ahora, ejecute el siguiente comando para obtener información detallada sobre el nodo único.
nodetool info
A continuación, puede ver información detallada sobre el nodo, como:
- Tiempo de actividad
- Información de la memoria del montón
- Cargar
- Caché de claves y caché de contadores
- Ubicación del centro de datos
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445745.png)
3. A continuación, muestre los detalles del clúster de Cassandra ejecutando el siguiente comando.
nodetool describecluster
Puede ver a continuación el clúster Cassandra detallado.
- Información del clúster contiene información básica sobre el clúster de Cassandra, incluido el nombre, el particionador predeterminado de Cassandra y la versión del esquema.
- Estadísticas de todos los nodos indicar el estado actual de todos los nodos en el clúster de Cassandra.
- Si ha creado el clúster de Cassandra en varios centros de datos, verá todos sus centros de datos en los Centros de datos sección.
- Las versiones de la base de datos La sección muestra la versión de Cassandra en cada nodo del clúster.
- La lista de todos los espacios de claves o bases de datos disponibles en el clúster de Cassandra está disponible en Keyspaces sección.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445897.png)
Conexión al clúster de Apache Cassandra
La instalación del paquete Apache Cassandra en el servidor también instala Cassandra Query Language Shell (CQLSH). Esta herramienta permite a los administradores conectarse a Apache Cassandra y administrar bases de datos o espacios de claves y usuarios.
Siga los pasos a continuación para conectarse al clúster de Cassandra usando la línea de comando cqlsh
.
1. Ejecute el cqlsh
Comando a continuación para conectarse al clúster de Cassandra. Especifique la dirección IP de Cassandra y el puerto predeterminado para las conexiones del cliente es 9042
.
cqlsh 172.16.1.10 9042
Una vez que se conecte al clúster de Cassandra, verá un resultado similar al de la siguiente captura de pantalla. Este ejemplo utiliza el nombre de clúster ATA Cluster en la dirección IP del servidor 172.16.1.10
.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445909.png)
2. Ahora, ejecute las siguientes consultas CQL para verificar a qué servidor se conectó, verifique el nombre del clúster y verifique todos los espacios de claves disponibles en Cassandra.
# show detailed host
SHOW HOST
# show cluster name
DESCRIBE CLUSTER
# list all available keyspaces (databases)
DESCRIBE KEYSPACES
Verá un resultado similar a la captura de pantalla a continuación. El SHOW HOST
consulta le muestra dónde está conectado, la consulta DESCRIBE CLUSTER
muestra el nombre del clúster de Cassandra y la consulta DESCRIBE KEYSPACES
le muestra la lista de espacios clave en su nodo Cassandra.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110215445908.png)
3. Finalmente, escriba el exit
para salir del cqlsh
entorno.
Conclusión
A lo largo de este tutorial, ha aprendido a instalar y configurar Apache Cassandra en Linux. También configuró el clúster de Apache Cassandra con dos servidores Linux y aseguró la implementación con Firewalld.
En este punto, está listo para agregar más servidores y escalar sus implementaciones, brindando alta disponibilidad, consistencia y redundancia para sus datos.
¿Qué sigue para ti? Tal vez comience configurando la autenticación y la autorización en su clúster de Cassandra, luego configure la replicación de espacio de claves/base de datos para sus aplicaciones. Y mientras lo hace, ¿por qué no aprender a mantener el clúster de Apache Cassandra con nodetool?