Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CNS Storage Cluster

Sistema distribuido de monitoreo de almacenamiento con:

  1. Servidor central TCP + API REST.
  2. Dashboard web en tiempo real.
  3. Clientes regionales que reportan métricas de disco.

1. Arquitectura

  1. server: recibe métricas por socket TCP, guarda estado/historial y expone API.
  2. frontend: dashboard React + Vite para visualizar nodos y capacidad consolidada.
  3. client: nodo regional en Python o Node.js.

Puertos por defecto:

  1. 5000 TCP para clientes.
  2. 3001 HTTP para API backend.
  3. 5173 HTTP para dashboard en desarrollo.

2. Requisitos

En laptop servidor:

  1. Node.js 18+.
  2. MongoDB local o remota.

En laptops cliente:

  1. Python 3.10+.
  2. psutil instalado.

3. Instalacion inicial

3.1 Servidor (backend)

cd server
npm install

Opcional: crear archivo .env en server.

MONGO_URI=mongodb://127.0.0.1:27017/storage_cluster
TCP_PORT=5000
TCP_HOST=0.0.0.0
HTTP_PORT=3001
FAULT_TIMEOUT=30000

3.2 Frontend

cd frontend
npm install

3.3 Cliente Python

cd client
py -m pip install -r requirements.txt

4. Ejecucion local (misma laptop)

Abrir 3 terminales separadas.

Terminal 1, backend:

cd server
npm start

Terminal 2, frontend:

cd frontend
npx vite --host 0.0.0.0

Terminal 3, cliente de prueba:

cd client
py client.py --id regional-1 --host 127.0.0.1 --port 5000 --interval 5

5. Conexion de otras laptops cliente

5.1 Obtener IP del servidor

En la laptop servidor:

ipconfig

Usar la direccion IPv4 de la red local, por ejemplo 192.168.1.4.

5.2 Abrir firewall en la laptop servidor (PowerShell como administrador)

netsh advfirewall firewall add rule name="StorageCluster TCP 5000" dir=in action=allow protocol=TCP localport=5000
netsh advfirewall firewall add rule name="StorageCluster API 3001" dir=in action=allow protocol=TCP localport=3001
netsh advfirewall firewall add rule name="StorageCluster Frontend 5173" dir=in action=allow protocol=TCP localport=5173

5.3 Ejecutar cliente en otra laptop

Copiar carpeta client a la otra laptop e instalar dependencias.

cd client
py -m pip install -r requirements.txt
py client.py --id regional-2 --host 192.168.1.4 --port 5000 --interval 5

Puedes levantar varias terminales con IDs distintos para simular multiples nodos:

  1. regional-1 Oruro
  2. regional-2 La Paz
  3. regional-3 Santa Cruz
  4. regional-4 Beni
  5. regional-5 Tarija
  6. regional-6 Pando
  7. regional-7 Cochabamba
  8. regional-8 Chuquisaca
  9. regional-9 Potosi

6. Verificacion de funcionamiento

Dashboard:

  1. Local: http://localhost:5173
  2. Desde otra laptop: http://IP_DEL_SERVIDOR:5173

API:

  1. Estado cluster: http://IP_DEL_SERVIDOR:3001/api/status
  2. Historial nodo: http://IP_DEL_SERVIDOR:3001/api/history/regional-2?hours=1

Validaciones esperadas:

  1. El nodo aparece como Activo al conectarse.
  2. Si cierras cliente, pasa a No Reporta despues del timeout.
  3. Al conectar o desconectar USB/disco externo en una laptop cliente, la capacidad total del nodo y del cluster se actualiza sin reiniciar.

7. Prueba rapida de almacenamiento dinamico

  1. Inicia backend, frontend y al menos un cliente.
  2. Abre dashboard.
  3. Conecta un pendrive o disco externo en la laptop donde corre el cliente.
  4. Espera el siguiente envio de metricas.
  5. Verifica incremento de Unidades Detectadas y Capacidad Total.
  6. Desconecta el dispositivo y valida que disminuya nuevamente.

8. Solucion de problemas

Error WinError 10061 en cliente:

  1. Verifica que backend este corriendo.
  2. Verifica IP y puerto 5000.
  3. Revisa reglas de firewall.
  4. Confirma que ambas laptops estan en la misma red.

Dashboard no carga:

  1. Asegura que frontend este levantado con npx vite --host 0.0.0.0.
  2. Prueba http://localhost:5173 en servidor.
  3. Prueba http://IP_DEL_SERVIDOR:5173 en clientes.

No llegan metricas al dashboard:

  1. Revisa logs del backend.
  2. Confirma conectividad de MongoDB.
  3. Verifica que cada cliente use --id unico.

9. Comandos utiles

Backend en modo desarrollo:

cd server
npm run dev

Frontend en modo desarrollo:

cd frontend
npm run dev

Cliente con host remoto:

cd client
py client.py --id regional-3 --host IP_DEL_SERVIDOR --port 5000 --interval 5

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages