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.

También te podría gustar...