Cómo instalar la base de datos NoSQL Apache Cassandra en CentOS 8

Apache Cassandra es un sistema de gestión de bases de datos NoSQL de alto rendimiento y de código abierto, sin un único punto de fallo. Apache Cassandra utiliza un modelo de clúster en lugar de utilizar el modelo de tablas visto en MySQL/PostgreSQL. Cassandra es adecuado para aplicaciones que no pueden permitirse perder datos. Los datos se replican automáticamente en varios nodos para la tolerancia a fallos. Los nodos que fallan pueden ser reemplazados automáticamente sin tiempo de inactividad.

Apache Cassandra es la mejor opción para ti si buscas escalabilidad, alta disponibilidad y alto rendimiento.

En este tutorial, te mostraremos cómo instalar Apache Cassandra en CentOS 8.

Requisitos

  • Un servidor que ejecute CentOS 8 con un mínimo de 2 GB de RAM.
  • Una contraseña de root configurada en tu sistema.

Cómo empezar

Antes de empezar, se recomienda actualizar tu servidor a la última versión estable. Puedes actualizar tu servidor con el siguiente comando:

dnf update

Una vez actualizado tu servidor, reinícialo para aplicar los cambios.

Instalar Java

Apache Cassandra requiere la instalación de OpenJDK 8 y Python2 en el sistema. Puedes instalar OpenJDK 8 y Python2 con el siguiente comando:

dnf install java-1.8.0-openjdk-devel python2

Una vez instalados ambos paquetes, puedes verificar la versión de Java con el siguiente comando:

java -version

Deberías ver la siguiente salida:

openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

Instalar Apache Cassandra

Por defecto, Apache Cassandra no está disponible en el repositorio por defecto de CentOS 8. Así que tendrás que crear un repositorio para ello. Puedes crear un nuevo archivo repo /etc/yum.repos.d/cassandra.repo como se muestra a continuación:

nano /etc/yum.repos.d/cassandra.repo

Añade las siguientes líneas:

[cassandra]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0

Guarda y cierra el archivo y luego instala Apache Cassandra con el siguiente comando:

dnf install dsc20

Una vez que hayas terminado con la instalación, puedes pasar al siguiente paso

Crea un archivo de unidad Systemd para Cassandra

Por defecto, el paquete Apache Cassandra no es capaz de generar un archivo de servicio para sí mismo. Así que tendrás que crear un archivo de servicio systemd para gestionar el servicio Cassandra. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/cassandra.service

Añade las siguientes líneas:

[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 y cierra el archivo. A continuación, recarga el demonio systemd con el siguiente comando

systemctl daemon-reload

A continuación, inicia el servicio Cassandra y permite que se inicie tras el reinicio del sistema con el siguiente comando:

systemctl start cassandra
systemctl enable cassandra

También puedes comprobar el estado del servicio Cassandra con el siguiente comando:

systemctl status cassandra

Deberías ver la siguiente salida:

? cassandra.service - Apache
   Loaded: loaded (/etc/systemd/system/cassandra.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-12-07 01:25:26 EST; 1min 51s ago
 Main PID: 1888 (java)
    Tasks: 53 (limit: 25044)
   Memory: 272.7M
   CGroup: /system.slice/cassandra.service
           ??1888 java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.2.5.jar -XX:+CMSClassUnloadingEnabled -XX:+UseThreadPriorities -XX:Threa>

Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,054 Writing Memtable-local@1642973315(10104/101040 serialized/live bytes, 259 ops)
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,118 Completed flushing /var/lib/cassandra/data/system/local/system-local-jb-4-Data.db >
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,124 Compacting [SSTableReader(path='/var/lib/cassandra/data/system/local/system-local->
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,169 Node localhost/127.0.0.1 state jump to normal
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,294 Compacted 4 sstables to [/var/lib/cassandra/data/system/local/system-local-jb-5,].>
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,322 Starting listening for CQL clients on localhost/127.0.0.1:9042...
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,376 Using TFramedTransport with a max frame size of 15728640 bytes.
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,378 Binding thrift service to localhost/127.0.0.1:9160
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,391 Using synchronous/threadpool thrift server on localhost : 9160
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,422 Listening for thrift clients...

Prueba de la instalación de Apache Cassandra

Ahora Apache Cassandra está instalado y funcionando en tu servidor. Puedes comprobar si se está ejecutando o no con el siguiente comando:

nodetool status

Deberías ver el siguiente comando:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns (effective)  Host ID                               Rack
UN  127.0.0.1  46.11 KB   256     100.0%            2a680007-8c30-4bde-9a3f-9fa212b96d11  rack1

Configurar Apache Cassandra

Por defecto, Cassandra está configurado para aceptar la conexión sólo desde el localhost.

También puedes conectarte a Cassandra a través del Lenguaje de Consulta Cassandra. Para acceder al shell CQL, ejecuta el siguiente comando:

cqlsh

Deberías ver la siguiente salida:

Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh> 

En la salida anterior, deberías ver que el cluster de Cassandra se llama «Cluster de prueba». También puedes cambiar este nombre de clúster por defecto.

Para ello, entra en el shell CQL con el siguiente comando:

cqlsh

A continuación, ejecuta el siguiente comando para cambiar el nombre del clúster a «Clúster HowtoForge», como se muestra a continuación:

cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';

A continuación, sal del shell con el siguiente comando:

cqlsh>exit;

A continuación, también tendrás que editar el archivo de configuración cassandra.yaml y definir tu nuevo nombre de clúster:

nano /etc/cassandra/default.conf/cassandra.yaml

Cambia la siguiente línea:

cluster_name: 'HowtoForge Cluster'

Guarda y cierra el archivo cuando hayas terminado. A continuación, borra la caché del sistema con el siguiente comando

nodetool flush system

Por último, reinicia el servicio Apache Cassandra para aplicar la nueva configuración:

systemctl restart cassandra

Ahora, entra en el shell de CQL con el siguiente comando:

cqlsh

Deberías ver que el nombre del cluster ha cambiado a «HowtoForge Cluster»:

Connected to HowtoForge Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh> 

Conclusión

Enhorabuena! has instalado y configurado con éxito Apache Cassandra en CentOS 8. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...