Repositorio del servidor del sistema de medición y estudios de rios realizado como parte del trabajo profesional de los alumnos Agustina Barbetta y Manuel Porto.
Dentro del servidor se encuentra:
La replicación del servidor es invisible al usuario, lo que se expone es un load balancer. Tanto los nodos de medición como el panel harán requests contra el load balancer que este último redirigirá hacia algún servidor.
Para ejecutar el servidor se deben realizar los siguientes pasos:
docker network create hydromon-net
.docker run --name hydromon-cassandra-1 --net hydromon-net -d cassandra
. Esto
solo es necesario la primera vez, luego puede simplemente correrse docker start hydromon-cassandra
.
También puede exponerse el puerto 9042 para poder conectarse con el servidor sin que esté corriendo en Docker.cqlsh
: docker run -it --network hydromon-net --rm cassandra cqlsh hydromon-cassandra
.CREATE KEYSPACE hydromon WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
make web-api-linux
.docker build -t hydromon-server .
.docker run --net hydromon-net -p 8080:8080 -d hydromon-server
.
sudo docker run --name hydromon-server-2 --net hydromon-net -p 443:443 -e SCOPE=prod -d hydromon-server
docker run --name hydromon-cassandra-1 --net hydromon-net -d cassandra
.docker run --name hydromon-cassandra-2 -d -net hydromon-net -e CASSANDRA_SEEDS=hydromon-cassandra-1 cassandra
CREATE KEYSPACE hydromon WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
nodetool status
. Registrar la ip del nodo que falló.docker rm hydromon-cassandra-x
donde x es el número del nodo que falló.docker run --name hydromon-cassandra-2 -d -net hydromon-net -e CASSANDRA_SEEDS=hydromon-cassandra-1 cassandra -Dcassandra.replace_address_first_boot=<dead_node_ip>
docker network create hydromon-net
.docker run -v /my/own/datadir:/var/lib/cassandra --name hydromon-cassandra-1 --net hydromon-net -d cassandra
.docker run -v /my/own/datadir-2:/var/lib/cassandra --name hydromon-cassandra-2 -d --net hydromon-net -e CASSANDRA_SEEDS=hydromon-cassandra-1 cassandra
CREATE KEYSPACE hydromon WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
Solo es necesario identificar el nodo que se detuvo y reiniciarlo con docker start hydromon-cassandra-<node-number>
.
docker run
.docker run -v /my/own/datadir-<number>:/var/lib/cassandra --name hydromon-cassandra-<number> -d -net hydromon-net -e CASSANDRA_SEEDS=hydromon-cassandra-1 cassandra -Dcassandra.replace_address=<dead_node_ip>
.Si todos los nodos de un cluster se detuvieron se deben reiniciar los mismos en el siguiente orden:
Este escenario tiene como requisito preliminar que todas las máquinas virtuales o instancias puedan comunicarse entre sí en todos los puertos que Cassandra necesita.
El cluster se inicia de forma similar a lo explicado en puntos anteriores con la salvedad de que ahora cada nodo del cluster deberá anunciar en que IP está escuchando. Esto es porque al correr en Docker tienen su dirección detrás del Docker bridge.
Suponiendo un cluster de tres nodos con las IPs 10.41.41.41, 10.42.42.42, 10.43.43.43, se deben seguir los pasos indicados a continuación:
docker run --name hydromon-cassandra-1 --net hydromon-net -e CASSANDRA_BROADCAST_ADDRESS=10.41.41.41 -p 7000:7000 -p 9042:9042 -d cassandra
.docker run --name hydromon-cassandra-2 --net hydromon-net -e CASSANDRA_BROADCAST_ADDRESS=10.42.42.42 -p 7000:7000 -p 9042:9042 -e CASSANDRA_SEEDS=10.41.41.41 -d cassandra
.docker run --name hydromon-cassandra-3 --net hydromon-net -e CASSANDRA_BROADCAST_ADDRESS=10.43.43.43 -p 7000:7000 -p 9042:9042 -e CASSANDRA_SEEDS=10.41.41.41 -d cassandra
.