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.