Apache Cassandra es un sistema de gestión de bases de datos distribuidas NoSQL de código abierto. Cassandra se puede escalar horizontalmente agregando más nodos a través de los cuales los datos se replican automáticamente. Los nodos se pueden agregar o eliminar sin ningún tiempo de inactividad. Los nodos pueden organizarse lógicamente como un clúster o un anillo y configurarse en varios centros de datos para mejorar la velocidad y la confiabilidad de las aplicaciones de alto rendimiento.
En este tutorial, aprenderemos cómo instalar Apache Cassandra en AlmaLinux y Rocky Linux 8 OS. Los comandos para ambos sistemas operativos serán idénticos a menos que se especifique lo contrario.
Requisitos
-
Un servidor que ejecute AlmaLinux o Rocky Linux con un mínimo de 2 GB de RAM.
-
Un usuario que no sea sudo con privilegios de root.
-
Todo está 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 limitaremos a usar Java 8.
$ sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel
Confirme 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 agregar el repositorio oficial de Cassandra.
Ejecute el siguiente comando para crear el archivo de repositorio /etc/yum.repos.d/cassandra.repo
e ingrese 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 se creó el archivo de repositorio, instale Cassandra.
$ sudo dnf install cassandra -y
Paso 3:instalar Cqlsh
Usaremos el CQL Shell (cqlsh ) herramienta para interactuar con Cassandra. La herramienta es compatible con Python 2.7 o Python 3.6+. Para nuestro tutorial, usaremos Python 3.8. Instale Python 3.8.
$ sudo dnf install python38
Establezca Python 3.8 como la versión predeterminada de Python.
$ 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 múltiples opciones. Elegiremos el número 3 para configurar Python 3.8 como la versión predeterminada en nuestro caso.
Confirme la instalación de Python.
$ python --version Python 3.8.8
Después de usar las update-alternatives
utilidad, no necesita usar python3
comando.
Instalar cqlsh usando el administrador de paquetes pip Python.
$ pip3 install --user cqlsh
Confirme el cqlsh instalar.
$ cqlsh --version cqlsh 6.0.0
Paso 4:crea un archivo de unidad Systemd para Cassandra
Cree y abra el /etc/systemd/system/cassandra.service
para editar.
$ sudo nano /etc/systemd/system/cassandra.service
Pegue el siguiente código en él.
[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
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Vuelva a cargar el demonio de servicio.
$ sudo systemctl daemon-reload
Habilite e inicie el servicio Cassandra.
$ sudo systemctl enable cassandra --now
Consulta 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 puede verificar el estado usando la nodetool
comando.
$ 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 predeterminada de los archivos de configuración para Cassandra es /etc/cassandra
. La ubicación predeterminada para los directorios de registro y datos es /var/log/cassandra
y /var/lib/cassandra
.
La configuración del nivel de JVM, como el tamaño del almacenamiento dinámico, se puede establecer a través de /etc/cassandra/conf/cassandra-env.sh
expediente. Puede pasar argumentos de línea de comandos de JVM adicionales a JVM_OPTS
variable. Los argumentos se pasan a Cassandra cuando se inicia.
5.1 Habilitar autenticación de usuario
Para habilitar la autenticación de usuario, primero, haga una copia de seguridad de /etc/cassandra/conf/cassandra.yaml
archivo.
$ sudo cp /etc/cassandra/conf/cassandra.yaml /etc/cassandra/conf/cassandra.yaml.backup
Abra el cassandra.yaml
archivo para editar.
$ sudo nano /etc/cassandra/conf/cassandra.yaml
Localice los siguientes parámetros en este archivo.
authenticator: AllowAllAuthenticator authorizer: AllowAllAuthorizer roles_validity_in_ms: 2000 permissions_validity_in_ms: 2000
Cambie 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 . . .
Puede configurar otros ajustes según sus requisitos. Si están comentados, elimínelos.
Una vez terminado, guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Reinicie Cassandra para habilitar la configuración modificada.
$ sudo systemctl restart cassandra
5.1.1 - Agregar un superusuario administrador
Ahora que hemos habilitado la autenticación, necesitamos crear un usuario. Para hacer eso, usaremos la utilidad de shell Cassandra Command. Inicie sesión con las credenciales del usuario predeterminado cassandra
.
$ cqlsh -u cassandra -p cassandra
Crear un nuevo superusuario. Reemplazar [username]
y [yourpassword]
con sus credenciales.
[email protected]> CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;
Cerrar sesión.
[email protected]> exit
Vuelva a iniciar sesión con la nueva cuenta de superusuario.
$ cqlsh -u username -p yourpassword
Eliminar los permisos elevados de la cassandra
predeterminada cuenta.
[email protected]> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false; [email protected]> REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;
Otorgue todos los permisos a la cuenta de superusuario.
[email protected]> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';
Cerrar sesión.
[email protected]> exit
5.2 - Editar el archivo de configuración de la consola
Si desea personalizar Cassandra Shell, puede hacerlo editando el cqlshrc
expediente. La ubicación predeterminada para el archivo es ~/.cassandra
directorio. Si desea cargarlo desde un directorio diferente, puede pasar el argumento --cqlshrc /customdirectory
al cqlsh
herramienta mientras se ejecuta.
Puede encontrar un archivo de muestra en /etc/cassandra/conf/cqlshrc.sample
que contiene todos los ajustes que puede configurar con respecto a Cassandra Shell.
Copie y cambie el nombre del archivo de ejemplo a ~/.cassandra
directorio.
$ sudo cp /etc/cassandra/conf/cqlshrc.sample ~/.cassandra/cqlshrc
Actualice el cqlshrc
archivo con los permisos requeridos.
$ sudo chmod 600 ~/.cassandra/cqlshrc $ sudo chown $USER:$USER ~/.cassandra/cqlshrc
Abra el archivo para editarlo.
$ nano ~/.cassandra/cqlshrc
Configuraremos el shell para iniciar sesión automáticamente con las credenciales de superusuario. Busque la siguiente sección y complétela con su nombre de usuario y contraseña.
.... [authentication] ;; If Cassandra has auth enabled, fill out these options username = [superuser] password = [password] ....
Edite cualquier otra configuración que desee cambiar. Algunas de las configuraciones se comentan usando ;;
. Descoméntelos eliminando los puntos y comas dobles y luego realice el cambio.
Una vez terminado, guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Inicie sesión en el shell de Cassandra con sus 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. [email protected]>
5.3 - Cambiar el nombre del clúster
Finalmente, cambiaremos el nombre del clúster de Test Cluster a su nombre elegido.
Inicie sesión en cqlsh
terminal.
$ cqlsh
Reemplace el [clustername]
con su nuevo nombre de clúster en el siguiente comando.
[email protected]> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
Salir del caparazón
[email protected]> exit
Abra el archivo /etc/cassandra/conf/cassandra.yaml
para editar.
$ sudo nano /etc/cassandra/conf/cassandra.yaml
Reemplace el valor de la variable cluster_name
con 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, guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Borra la memoria caché del sistema de Cassandra.
$ nodetool flush system
Reinicia Cassandra.
$ sudo systemctl restart cassandra
Inicie sesión en el 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. [email protected]>
Conclusión
En este tutorial, aprendió a instalar Apache Cassandra en un servidor AlmaLinux o Rocky Linux. También aprendió cómo agregar autenticación de usuario y realizar algunas configuraciones básicas. Para obtener más información, visite la documentación oficial de Cassandra. Si tiene alguna pregunta, publíquela en los comentarios a continuación.