LINUX

Cómo configurar la replicación de Cassandra en Ubuntu 16.04

Si tiene datos que no son adecuados para una base de datos relacional, es probable que esté buscando una solución NoSQL. Las opciones de NoSQL son diversas, Aerospike, MongoDB, Redis y muchos otros intentan resolver el problema de Big Data de diferentes maneras. En este artículo nos concentraremos en la replicación con cassandra. Esta base de datos en realidad obtuvo el nombre de la mitología griega, cassandra era la vidente que siempre predijo correctamente el futuro, pero todos no la creyeron. Entonces, los creadores de esta base de datos predicen que NoSQL suplantará en el futuro a las bases de datos relacionales, pero no esperan que la gente de RDBMS les crea.

Requisitos

Para seguir este artículo, debe tener 3 nodos configurados uno por uno utilizando nuestra guía de configuración de cassandra anterior. Debe tener los tres nodos en funcionamiento y tres ventanas de terminal con sesión ssh en cada uno. Después de que tenga eso, comenzamos a conectar los nodos de Cassandra en un clúster.

Construyendo un clúster

Al iniciar sesión como usuario de Cassandra, debe editar la configuración de Cassandra en cada uno de los tres nodos. El archivo se llama cassandra.yaml

nano ~/conf/cassandra.yaml

Esto debe configurarse en los 3 servidores. La línea de semillas puede ingresarse en un servidor y luego copiarse, pero las direcciones IP de cada servidor deben ingresarse genuinas.

cluster_name: 'Test Cluster'

seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "your-server-ip,your-server-ip-2,your-server-ip-3"

listen_address: your-server-ip

rpc_address: your-server-ip

Para configurar entpoint snitch, pegue este delineador en los tres nodos:

sed -i 's/endpoint_snitch: SimpleSnitch/endpoint_snitch: GossipingPropertyFileSnitch/g' ~/conf/cassandra.yaml

Y use este comando para agregar una línea de arranque al final del archivo.

echo 'auto_bootstrap: false' >> ~/conf/cassandra.yaml

El snitch que configuramos tiene un nombre de centro de datos incompatible, dc1 en lugar de datacenter1, así que solucionemos eso en los tres nodos:

sed -i 's/dc=dc1/dc=datacenter1/g' ~/conf/cassandra-rackdc.properties

Reinicie los tres nodos si es necesario, y después de eso, el estado de sh bin / nodetool debería obtener algo como esto:

Cassandra-cluster-running

Lo siguiente que debemos hacer es conectarnos a la consola desde uno de los nodos al otro nodo. Necesitamos escribir la dirección del servidor y el puerto 9042 después de cqlsh así:

cqlsh ip.addr.of.node 9042

El inicio de sesión del host local solo con cqlsh no funcionará.

Configuración de la replicación

Si se pregunta por qué cambiamos la configuración predeterminada del snitch, ahora se lo explicaré. En general, hay dos estrategias de replicación con Cassandra. SimpleStrategy y NetworkTopologyStrategy. Primero usa el snitch predeterminado, el segundo usa el snitch que hemos establecido. Necesitamos esta estrategia avanzada si queremos escalar fácilmente el clúster. Con esta estrategia, puede agregar más nodos en otro centro de datos y expandir el clúster por todo el mundo.

Entonces, dentro de la consola cqlsh, debemos escribir esto:

CREATE KEYSPACE linoxide WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1' : 3};

Creará un nuevo espacio de claves llamado linoxide, con replicación configurada con NetworkTopologyStrategy y hará 3 réplicas en datacenter1.

Ok, veamos entonces lo que creamos. El comando está en negrita, se emite el resto.

SELECT * FROM system_schema.keyspaces;
 keyspace_name | durable_writes | replication
--------------------+----------------+---------------------------------------------------------------------------------------
linoxide | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'datacenter1': '3'}
system_auth | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '1'}
system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'}
system_distributed | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'}
system_traces | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'}

Salgamos de cqlsh y emitamos el comando nodetool una vez más, para ver el cambio en el clúster.

nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 45.33.77.49 250.7 KiB 256 100.0% 34689c1e-939c-4bd3-8774-ac4534880744 rack1
UN 45.56.109.42 188.02 KiB 256 100.0% 7542e062-d6d3-473a-b79c-4f5e11547c1f rack1
UN 45.33.69.15 236.58 KiB 256 100.0% 2f10690c-1e6e-4297-bda6-c3fb36279495 rack1

Tenga en cuenta que cada nodo ahora tiene el 100% de los datos, en comparación con el 66 por ciento anterior. Eso se debe al factor de replicación 3 que establecimos, ahora tenemos una copia de los datos en cada nodo.

Conclusión

Ahí, hemos configurado el clúster de Cassandra con replicación. Desde aquí, puede agregar más nodos, racks y centros de datos, puede importar una cantidad arbitraria de datos y cambiar el factor de replicación en todos o algunos de los centros de datos. Para conocer las formas de hacer esto, puede consulte la documentación oficial de Cassandra. Espero que esta guía le haya ayudado a sumergirse en el futuro de la tecnología de bases de datos y que haya decidido creer en Cassandra. Gracias por leer y que tengas un buen día.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar