Cómo instalar Apache Cassandra en AlmaLinux / Rocky Linux 8
Apache Cassandra es un sistema de gestión de bases de datos distribuidas NoSQL de código abierto. Cassandra puede escalarse horizontalmente añadiendo más nodos en los que los datos se replican automáticamente. Los nodos pueden añadirse o eliminarse sin ningún tiempo de inactividad. Los nodos pueden organizarse lógicamente como un clúster o un anillo y establecerse en varios centros de datos para mejorar la velocidad y la fiabilidad de las aplicaciones de alto rendimiento.
En este tutorial, aprenderemos a instalar Apache Cassandra en los sistemas operativos AlmaLinux y Rocky Linux 8. Los comandos para ambos sistemas operativos serán idénticos a menos que se especifique lo contrario.
Requisitos previos
-
Un servidor que ejecute AlmaLinux o Rocky Linux con un mínimo de 2GB de RAM.
-
Un usuario no-sudo con privilegios de root.
-
Todo actualizado.
$ sudo dnf update
Paso 1 – Instalar Java
Apache Cassandra requiere Java 8 para funcionar. La última versión de Cassandra incluye soporte experimental para Java 11, pero para nuestro tutorial, nos ceñiremos a utilizar Java 8.
$ sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel
Confirma la instalación de Java.
$ java -version openjdk version "1.8.0_312" OpenJDK Runtime Environment (build 1.8.0_312-b07) OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
Paso 2 – Instalar Apache Cassandra
El primer paso es añadir el repositorio oficial de Cassandra.
Ejecuta el siguiente comando para crear el archivo del repositorio /etc/yum.repos.d/cassandra.repo
e introduce los detalles.
$ sudo tee /etc/yum.repos.d/cassandra.repo <<EOF > [cassandra] > name=Apache Cassandra > baseurl=https://www.apache.org/dist/cassandra/redhat/40x/ > gpgcheck=1 > repo_gpgcheck=1 > gpgkey=https://www.apache.org/dist/cassandra/KEYS > EOF
Ahora que el archivo repo está creado instala, Cassandra.
$ sudo dnf install cassandra -y
Paso 3 – Instalar Cqlsh
Utilizaremos la herramienta CQL Shell(cqlsh) para interactuar con Cassandra. La herramienta es compatible con Python 2.7 o Python 3.6+. Para nuestro tutorial, utilizaremos Python 3.8. Instala Python 3.8.
$ sudo dnf install python38
Establece Python 3.8 como la versión de Python por defecto.
$ sudo update-alternatives --config python There are 3 programs which provide 'python'. Selection Command ----------------------------------------------- *+ 1 /usr/libexec/no-python 2 /usr/bin/python3 3 /usr/bin/python3.8 Enter to keep the current selection[+], or type selection number: 3
Se te presentarán varias opciones. Elegiremos la número 3 para establecer Python 3.8 como versión por defecto en nuestro caso.
Confirma la instalación de Python.
$ python --version Python 3.8.8
Después de utilizar la utilidad update-alternatives
, no necesitas utilizar el comando python3
.
Instala cqlsh utilizando el gestor de paquetes pip Python.
$ pip3 install --user cqlsh
Confirma la instalación de cqlsh.
$ cqlsh --version cqlsh 6.0.0
Paso 4 – Crear un archivo de unidad Systemd para Cassandra
Crea y abre el archivo /etc/systemd/system/cassandra.service
para editarlo.
$ sudo nano /etc/systemd/system/cassandra.service
Pega en él el siguiente código.
[Unit] Description=Apache Cassandra After=network.target [Service] PIDFile=/var/run/cassandra/cassandra.pid User=cassandra Group=cassandra ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid Restart=always [Install] WantedBy=multi-user.target
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.
Recarga el demonio de servicio.
$ sudo systemctl daemon-reload
Activa e inicia el servicio Cassandra.
$ sudo systemctl enable cassandra --now
Comprueba el estado del servicio.
$ sudo systemctl status cassandra ? cassandra.service - Apache Cassandra Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2021-12-30 11:07:43 UTC; 12s ago Main PID: 4679 (java) Tasks: 48 (limit: 23696) Memory: 1.3G CGroup: /system.slice/cassandra.service ??4679 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256>
También puedes verificar el estado mediante el comando nodetool
.
$ 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 69.09 KiB 16 100.0% 2fe7ccae-2af9-4841-9bff-bffa29f10dc5 rack1
Paso 5 – Configurar Cassandra
La ubicación por defecto de los archivos de configuración de Cassandra está en /etc/cassandra
. La ubicación por defecto de los directorios de registro y datos es /var/log/cassandra
y /var/lib/cassandra
.
Los ajustes a nivel de la JVM, como el tamaño de la pila, pueden establecerse a través del archivo /etc/cassandra/conf/cassandra-env.sh
. Puedes pasar argumentos adicionales de la línea de comandos de la JVM a la variable JVM_OPTS
. Los argumentos se pasan a Cassandra cuando se inicia.
5.1 Activar la autenticación de usuario
Para activar la autenticación de usuario, primero haz una copia de seguridad del archivo /etc/cassandra/conf/cassandra.yaml
.
$ sudo cp /etc/cassandra/conf/cassandra.yaml /etc/cassandra/conf/cassandra.yaml.backup
Abre el archivo cassandra.yaml
para editarlo.
$ sudo nano /etc/cassandra/conf/cassandra.yaml
Localiza los siguientes parámetros en este archivo.
authenticator: AllowAllAuthenticator authorizer: AllowAllAuthorizer roles_validity_in_ms: 2000 permissions_validity_in_ms: 2000
Cambia los valores de los parámetros como se indica a continuación.
. . . authenticator: org.apache.cassandra.auth.PasswordAuthenticator authorizer: org.apache.cassandra.auth.CassandraAuthorizer roles_validity_in_ms: 0 permissions_validity_in_ms: 0 . . .
Puedes configurar otros parámetros en función de tus necesidades. Si están comentados, deshazlo.
Una vez que hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Reinicia Cassandra para activar los ajustes modificados.
$ sudo systemctl restart cassandra
5.1.1 – Añadir un superusuario administrador
Ahora que hemos habilitado la autenticación, necesitamos crear un usuario. Para ello, utilizaremos la utilidad Cassandra Command Shell. Entra con las credenciales del usuario por defecto cassandra
.
$ cqlsh -u cassandra -p cassandra
Crea un nuevo superusuario. Sustituye [username]
y [yourpassword]
por tus credenciales.
cassandra@cqlsh> CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;
Cierra la sesión.
cassandra@cqlsh> exit
Vuelve a entrar con la nueva cuenta de superusuario.
$ cqlsh -u username -p yourpassword
Elimina los permisos elevados de la cuenta por defecto cassandra
.
username@cqlsh> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false; username@cqlsh> REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;
Concede todos los permisos a la cuenta de superusuario.
username@cqlsh> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';
Cierra la sesión.
username@cqlsh> exit
5.2 – Editar el archivo de configuración de la consola
Si quieres personalizar la consola Cassandra, puedes hacerlo editando el archivo cqlshrc
. La ubicación por defecto del archivo es en el directorio ~/.cassandra
. Si quieres cargarlo desde un directorio diferente, puedes pasar el argumento --cqlshrc /customdirectory
a la herramienta cqlsh
mientras se ejecuta.
Puedes encontrar un archivo de ejemplo en /etc/cassandra/conf/cqlshrc.sample
que contiene todos los ajustes que puedes configurar en relación con la Shell Cassandra.
Copia y cambia el nombre del archivo de ejemplo al directorio ~/.cassandra
.
$ sudo cp /etc/cassandra/conf/cqlshrc.sample ~/.cassandra/cqlshrc
Actualiza el archivo cqlshrc
con los permisos necesarios.
$ sudo chmod 600 ~/.cassandra/cqlshrc $ sudo chown $USER:$USER ~/.cassandra/cqlshrc
Abre el archivo para editarlo.
$ nano ~/.cassandra/cqlshrc
Configuraremos el shell para que se registre automáticamente con las credenciales de superusuario. Busca la siguiente sección y rellénala con tu nombre de usuario y contraseña.
.... [authentication] ;; If Cassandra has auth enabled, fill out these options username = [superuser] password = [password] ....
Edita cualquier otra configuración que quieras cambiar. Algunos de los ajustes están comentados usando ;;
. Descoméntalos eliminando el doble punto y coma y realiza el cambio.
Una vez que hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Accede al shell de Cassandra con tus nuevos cambios.
$ cqlsh Connected to Test Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. username@cqlsh>
5.3 – Cambiar el nombre del clúster
Por último, cambiaremos el nombre del clúster de Prueba a tu nombre elegido.
Entra en el terminal cqlsh
.
$ cqlsh
Sustituye el [clustername]
por tu nuevo nombre de clúster en el comando que aparece a continuación.
username@cqlsh> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
Sal del intérprete de comandos
username@cqlsh> exit
Abre el archivo /etc/cassandra/conf/cassandra.yaml
para editarlo.
$ sudo nano /etc/cassandra/conf/cassandra.yaml
Sustituye el valor de la variable cluster_name
por el nombre que elijas.
... # The name of the cluster. This is mainly used to prevent machines in # one logical cluster from joining another. cluster_name: '[new_name]' ...
Una vez terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Borra la caché del sistema Cassandra.
$ nodetool flush system
Reinicia Cassandra.
$ sudo systemctl restart cassandra
Accede al shell para ver el nuevo nombre.
$ cqlsh Connected to HowtoForge Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. username@cqlsh>
Conclusión
En este tutorial has aprendido a instalar Apache Cassandra en un servidor AlmaLinux o Rocky Linux. También has aprendido a añadir la autenticación de usuarios y a realizar algunas configuraciones básicas. Para saber más, visita la documentación oficial de Cassandra. Si tienes alguna pregunta, publícala en los comentarios de abajo.