Introducción
Apache Cassandra es una base de datos NoSQL gratuita distribuida bajo una licencia de código abierto y optimizada para manejar grandes cantidades de datos. Proporciona escalabilidad lineal y alta disponibilidad sin comprometer el rendimiento. Apache Cassandra es utilizado por varias empresas que tienen grandes conjuntos de datos activos, incluidos Reddit, NetFlix, Instagram y Github.
En este artículo, explicaremos cómo instalar Apache Cassandra en Ubuntu.
Prerrequisitos
Las instrucciones asumen que ha iniciado sesión como root o usuario con privilegios de sudo.
Si su intención es instalar Apache Cassandra en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conectarse al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Instalar Java
En el momento de escribir este artículo, la última versión estable de Apache Cassandra es 3.11
y requiere OpenJDK 8, que no está disponible en los repositorios oficiales de Ubuntu 18.04 LTS.
Habilitamos el repositorio AdoptOpenJDK e instalamos java.
Actualice la lista de paquetes e instale las dependencias necesarias para agregar un nuevo repositorio a través de HTTPS:
sudo apt update
sudo apt install apt-transport-https ca-certificates wget curl dirmngr gnupg software-properties-common
Importe la clave GPG del repositorio y agregue el repositorio APT AdoptOpenJDK a su sistema:
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
Instale Java 8 ejecutando estos comandos:
sudo apt update
sudo apt install adoptopenjdk-8-hotspot
Una vez completado, verifíquelo imprimiendo la versión de Java:
java -version
La salida debería verse así:
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode)
Instalar Apache Cassandra
Instalaremos Apache Cassandra usando el paquete deb del repositorio del proveedor. Para hacer esto, debe habilitar el repositorio de Apache Cassandra.
Agregue el repositorio de Cassandra a la lista de fuentes del sistema ejecutando el siguiente comando, actualmente la última versión estable es 311:
echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
Importe la clave pública del repositorio con el siguiente curl
curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
El comando anterior debería responder con OK
. Esto significa que la clave se importó correctamente y los paquetes de este repositorio serán de confianza.
Actualice el índice del paquete e instale el paquete Apache Cassandra:
sudo apt update
Si encuentra un mensaje de error similar al siguiente:
GPG error: http://www.apache.org 311x InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A278B781FE4B2BDA
Agregue la clave pública Apache Cassandra así:
sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA
Luego actualice la lista de paquetes nuevamente:
sudo apt update
En este punto puede instalar Cassandra:
sudo apt install cassandra
Una vez que se complete el proceso de instalación, el servicio Cassandra se iniciará automáticamente, de lo contrario, puede iniciar Cassandra con el siguiente comando:
sudo service cassandra start
Para verificar que Cassandra se esté ejecutando, escriba:
nodetool status
Debería ver un mensaje de salida similar al siguiente:
Datacenter: datacenter1
=======================
Status=Up/Down
|/State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 103.67 KiB 256 100.0% 1d7218c2-6c7f-4287-9695-3d957572cdcf rack1
Si recibe un mensaje de error de conexión, abra el siguiente archivo:
sudo nano /etc/cassandra/cassandra-env.sh
Busque la siguiente línea:
...
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>"...
Quite el comentario y agregue la dirección IP pública de su servidor en lugar de <nombre público>.
Guarde y cierre el archivo presionando CTRL + X, seguido de Y para guardar los cambios y luego ENTER si está usando nano.
Reinicie Cassandra con el siguiente comando:
sudo service cassandra restart
Para verificar que Cassandra se esté ejecutando, escriba:
nodetool status
Eso es todo. Apache Cassandra se instaló correctamente.
Configurar Apache Cassandra
Los datos de Apache Cassandra se almacenan en el /var/lib/cassandra
. Los archivos de configuración se encuentran en /etc/cassandra
y las opciones de inicio de Java se pueden configurar en el /etc/default/cassandra
.
De forma predeterminada, Cassandra solo escucha en el host local. Si el cliente que se conecta a la base de datos se ejecuta en la misma computadora, no es necesario cambiar la interfaz de enlace.
Para interactuar con Cassandra a través de la línea de comandos, use la cqlsh
proporcionada con el paquete Cassandra.
cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.5 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>
Para salir de cassandra shell escriba exit:
exit
Cambiar el nombre del clúster de Apache Cassandra
De forma predeterminada, el clúster de Cassandra se denomina "Clúster de prueba". Si desea cambiarlo, siga estos pasos:
Acceda a la terminal Cassandra CQL con cqlsh
:
cqlsh
Ingrese el siguiente comando para cambiar el nombre del clúster a "Noviello Cluster":
UPDATE system.local SET cluster_name = 'Noviello Cluster' WHERE KEY = 'local';
Cuando termine, escriba exit
para salir de la terminal:
exit
Ahora necesita editar el cassandra.yaml
ingresando el nombre del nuevo clúster, luego abra el archivo:
sudo nano /etc/cassandra/cassandra.yaml
Cambie el parámetro cluster_name por el nombre deseado:
cluster_name: 'Noviello Cluster'
Limpiar la caché del sistema:
nodetool flush system
Reinicie el servicio Cassandra ejecutando:
sudo systemctl restart cassandra
O con el siguiente comando:
sudo service cassandra restart
Habilite las funciones de seguridad
Habilite la autenticación para el inicio de sesión del usuario.
Primero haga una copia de seguridad del archivo de configuración de Cassandra cassandra.yaml:
cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.backup
Abra el archivo de configuración de Cassandra:
sudo nano /etc/cassandra/cassandra.yaml
Haga coincidir las siguientes variables en el archivo con los valores que se muestran a continuación. Si alguno de los siguientes valores está comentado, descomente. Las propiedades restantes en el archivo de configuración deben establecerse de acuerdo con los requisitos específicos del proyecto y cómo planea usar Cassandra. La configuración predeterminada debería funcionar bien para el desarrollo.
...
authenticator: org.apache.cassandra.auth.PasswordAuthenticator
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 0
permissions_validity_in_ms: 0...
Después de editar el archivo, reinicie Cassandra:
sudo service cassandra restart
nodetool status
Agregar un superusuario administrativo
Atención, esta configuración solo funciona si se ha seguido la configuración del párrafo anterior.
Inicie sesión en el terminal de comando de Cassandra con las credenciales que se muestran a continuación para el usuario predeterminado "cassandra":
cqlsh -u cassandra -p cassandra
Cree un nuevo superusuario (superusuario). Reemplace new_user y YOUR_PASSWORD con la información deseada:
CREATE ROLE nuovo_utente WITH PASSWORD = 'TUA_PASSWORD' AND SUPERUSER = true AND LOGIN = true;
Salga escribiendo exit:
exit
Vuelva a iniciar sesión con la nueva cuenta de superusuario con las nuevas credenciales y elimine los permisos elevados de la cuenta de Cassandra:
cqlsh -u nuovo_utente -p TUA_PASSWORD
ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;
Otorgue todos los permisos a la nueva cuenta de superusuario. Reemplaza new_user con el nombre del usuario que creaste:
GRANT ALL PERMISSIONS ON ALL KEYSPACES TO nuovo_utente;
Salga escribiendo exit:
exit
Conclusión
Le mostramos cómo instalar Apache Cassandra en Ubuntu 18.04 LTS y, opcionalmente, cambiar el nombre del clúster predeterminado. Para obtener más información sobre cómo comenzar con Cassandra, visite la página de documentación oficial.