2. Objetivos
Instalación
Creación de un cluster
Añadir nodos al anillo
Cluster distribuido en multiples datacenter
Configuración de virtual nodes
3. Apache Cassandra
Base de datos NoSQL
Descentralizada
Replicación en multiples datacenter
Tolerante a fallos
Escalabilidad lineal
7. Instalación Cassandra DSE (Redhat)
Registro
http://www.datastax.com/download/register
Configuración repositorio
# vi /etc/yum.repos.d/datastax.repo
[datastax]
name = DataStax Repo for DataStax Enterprise
baseurl=http://username:password@rpm.datastax.com/enterprise
enabled=1
gpgcheck=0
Instalación
# sudo yum install dse-full
# sudo yum install opscenter
8. Gossip
Comunicación entre los nodos
Protocolo peer to peer
Descubrir nodos y su estado
Detección de nodos caídos o de bajo rendimiento …
… y reconectados
11. Calculo de tokens
Valores entre -2^63 hasta 2^63
python -c
'print [str(((2**64 / number_of_nodes) * i) - 2**63)
for i in range(number_of_nodes)]‘
['-9223372036854775808',
'-3074457345618258603',
'3074457345618258602']
12. Calculo de tokens
http://www.geroba.com/cassandra/cassandra-token-calculator/
13. Iniciar primer nodo
#sudo /etc/init.d/dse start
Ver su estado
# nodetool status
Datacenter: Cassandra
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Token Owns (effective) Host ID
Rack
UN 192.168.0.200 107.55 KB -923… 100% 8f3254d4-3823-…
14. Insertar datos
# cassandra-stress
# nodetool status
Datacenter: Cassandra
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Token Owns (effective) Host ID
Rack
UN 192.168.0.200 188.01MB -923… 100% 8f3254d4-3823-…
15. Replication factor
Consola de CQL
# cqlsh 192.168.0.200
Cambiar Replication factor
cqlsh> ALTER KEYSPACE "Keyspace1‚
WITH replication =
{'class': 'SimpleStrategy',
'replication_factor': 2};
16. Iniciar el 2º nodo
Configurar Cassandra.yaml
Iniciar el nodo
Ver el estado
# nodetool status
Datacenter: Cassandra
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Owns Token
UN 192.168.0.200 188.01 MB 100.0% -9223372036854775808
UN 192.168.0.201 38.35 KB 100.0% -3074457345618258603
17. nodetool repair
Recuperación de un nodo que ha estado caído
Mantenimiento periódico
Nuevos nodos en el cluster
# nodetool repair
# nodotool status
Datacenter: Cassandra
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Owns Token
UN 192.168.0.200 188.01 MB 100.0% -9223372036854775808
UN 192.168.0.201 188.01 MB 100.0% -3074457345618258603
22. Virtual nodes
256 tokens en cada nodo (num_tokens)
No es necesario calcular tokens ni asignarlos manualmente
La carga se divide homogeneamente en caso de fallo o un nuevo nodo
No es necesario rebalancear el anillo
El proceso de repair implica menos carga en cada nodo individual
Permite un cluster con máquinas de distinto hardware al asignar distinto
número de virtual nodes a cada nodo
25. Múlti - datacenter
NetworlTopologyStrategy
SimpleSnitch, pruebas y desarrollo
DynamicSnitch, en función del rendimiento y latencia de red
PropertyFileSnitch, asignación IP => Datacenter y rack
GossippingPropertyFileSnitch
EC2Snitch
EC2MultiRegionSnitch
26. Configurar keyspace
cqlsh> alter keyspace KEYSPACE_NAME with replication = {
‘class’: ‘NetworkTopologyStrategy’,
and strategy_options:Madrid = 3,
and strategy_options:Barcelona=3,
and strategy_options:Paris=6
}