REBELION_EN_LA_GRANJA/assets/arquitectura.svg
s1to 7caa240c2e Ajustar al manual del M1000e, añadir diagramas y docs de operación
Especificaciones tomadas del manual del propietario del gabinete
PowerEdge M1000e (Dell, modelo BMX01, rev. A06, oct. 2019), que corrige
el spec sheet comercial usado hasta ahora.

Hardware:

- Peso máximo 200,5 kg, no 179. Profundidad 75,5 cm
- Seis fuentes y nueve ventiladores obligatorios, se usen 3 blades o 16.
  Toda bahía vacía necesita relleno
- Conector CEI/IEC C20 a 16 A. La fuente de 3.000 W exige 200-240 V
- Irrupción de 55 A por fuente durante 10 ms: un magnetotérmico de curva
  C salta, hace falta curva D
- Temperatura de funcionamiento continuo 10-35 °C
- ECM obligatorio con blades M630 de 120 W o más, o por encima de 30 °C

Red:

- Fabric A (ranuras A1/A2) es la Ethernet integrada de cada blade, así
  que no hacen falta tarjetas intermedias. Fabrics B y C sí las
  exigirían y no se usan
- Pendiente saber si en A1/A2 hay un switch o un módulo de paso a
  través: cambia el montaje de red por completo

Costes recalculados: el suelo fijo del chasis sube de 350 a ~500 W al
contar los nueve ventiladores, los módulos de I/O y las pérdidas de las
seis fuentes. 360 €/mes a 24/7, 59 €/mes por ventanas. Que las fuentes y
los ventiladores sean obligatorios convierte en hecho documentado lo que
antes era estimación: los pilotos parciales en el chasis son el peor
caso posible.

Documentación:

- assets/ con cuatro diagramas SVG propios: arquitectura, chasis, stack
  de software y modos de red
- docs/usabilidad.md: órdenes, flujos de trabajo, problemas conocidos y
  ergonomía del hardware
- Diagramas ASCII del panel frontal, el posterior y la topología de
  fabrics en hardware_m1000e.md
- Eliminada la parte de charla y divulgación, fuera del alcance del repo
2026-08-08 20:04:00 +02:00

103 lines
7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 620" width="960" height="620" font-family="ui-monospace, 'DejaVu Sans Mono', Menlo, monospace">
<rect width="960" height="620" fill="#0f1720"/>
<text x="32" y="44" fill="#e6edf3" font-size="22" font-weight="bold" font-family="system-ui, sans-serif">Arquitectura de la granja</text>
<text x="32" y="68" fill="#7d8590" font-size="13">Dell PowerEdge M1000e · 16 blades Debian · ~45 Android en contenedor</text>
<!-- Chasis -->
<rect x="32" y="92" width="590" height="490" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1.5"/>
<text x="52" y="118" fill="#58a6ff" font-size="13" font-weight="bold">CHASIS M1000e · 10U · 200,5 kg · 2,63,6 kW</text>
<!-- Coordinador -->
<rect x="52" y="134" width="550" height="72" rx="6" fill="#1c2128" stroke="#d29922" stroke-width="1.5"/>
<text x="68" y="158" fill="#d29922" font-size="13" font-weight="bold">blade-01 · COORDINADOR</text>
<text x="68" y="178" fill="#adbac7" font-size="11.5">Debian 12 · adb · fleet.sh · devices.txt</text>
<text x="68" y="196" fill="#7d8590" font-size="11">No corre Android. Único punto de control de la flota.</text>
<!-- Nodos de carga: header -->
<text x="52" y="238" fill="#3fb950" font-size="13" font-weight="bold">blade-02 … blade-16 · NODOS DE CARGA (15)</text>
<!-- Detalle de un blade -->
<rect x="52" y="252" width="270" height="240" rx="6" fill="#1c2128" stroke="#3fb950" stroke-width="1.5"/>
<text x="68" y="274" fill="#3fb950" font-size="12" font-weight="bold">blade-NN · 8 GB RAM</text>
<rect x="68" y="286" width="238" height="38" rx="4" fill="#22272e" stroke="#444c56"/>
<text x="80" y="303" fill="#adbac7" font-size="11">Debian 12 · sobre el hierro</text>
<text x="80" y="317" fill="#7d8590" font-size="9.5">binder · hwbinder · vndbinder</text>
<rect x="68" y="330" width="238" height="26" rx="4" fill="#22272e" stroke="#444c56"/>
<text x="80" y="347" fill="#adbac7" font-size="11">Docker CE + Compose v2</text>
<rect x="80" y="364" width="214" height="26" rx="4" fill="#1f6feb" fill-opacity="0.18" stroke="#1f6feb"/>
<text x="92" y="381" fill="#79c0ff" font-size="10.5">redroid-NN-01 · Android 13</text>
<rect x="80" y="394" width="214" height="26" rx="4" fill="#1f6feb" fill-opacity="0.18" stroke="#1f6feb"/>
<text x="92" y="411" fill="#79c0ff" font-size="10.5">redroid-NN-02 · Android 13</text>
<rect x="80" y="424" width="214" height="26" rx="4" fill="#1f6feb" fill-opacity="0.18" stroke="#1f6feb"/>
<text x="92" y="441" fill="#79c0ff" font-size="10.5">redroid-NN-03 · Android 13</text>
<text x="68" y="472" fill="#7d8590" font-size="10">Sin VM ni LXC anidado: cada capa</text>
<text x="68" y="485" fill="#7d8590" font-size="10">se comería una instancia entera.</text>
<!-- Los otros blades apilados -->
<g fill="#1c2128" stroke="#2d5a3d">
<rect x="342" y="252" width="260" height="34" rx="5"/>
<rect x="342" y="292" width="260" height="34" rx="5"/>
<rect x="342" y="332" width="260" height="34" rx="5"/>
<rect x="342" y="372" width="260" height="34" rx="5"/>
</g>
<text x="356" y="274" fill="#7d8590" font-size="11">blade-03 → 3 Android</text>
<text x="356" y="314" fill="#7d8590" font-size="11">blade-04 → 3 Android</text>
<text x="356" y="354" fill="#7d8590" font-size="11">blade-05 → 3 Android</text>
<text x="356" y="394" fill="#7d8590" font-size="11"></text>
<text x="356" y="428" fill="#7d8590" font-size="11">blade-16 → 3 Android</text>
<rect x="342" y="444" width="260" height="48" rx="5" fill="#1f6feb" fill-opacity="0.12" stroke="#1f6feb"/>
<text x="356" y="464" fill="#79c0ff" font-size="13" font-weight="bold">15 × 3 = 45 Android</text>
<text x="356" y="482" fill="#7d8590" font-size="10.5">con RAM a 32 GB → 15 × 14 = 210</text>
<!-- Fabric A -->
<rect x="52" y="504" width="550" height="60" rx="6" fill="#1c2128" stroke="#a371f7" stroke-width="1.5"/>
<text x="68" y="526" fill="#a371f7" font-size="12" font-weight="bold">FABRIC A · ranuras A1 / A2 · Ethernet integrada (LOM) de cada blade</text>
<text x="68" y="546" fill="#7d8590" font-size="10.5">Conmutación interna entre blades, sin tarjetas intermedias. Hace posible macvlan.</text>
<text x="68" y="559" fill="#7d8590" font-size="10.5">Fabrics B y C (FC / InfiniBand) no se usan aquí.</text>
<!-- Flechas hacia el control -->
<path d="M 622 170 L 700 170" stroke="#d29922" stroke-width="2" fill="none" marker-end="url(#a)"/>
<path d="M 622 534 L 700 534" stroke="#a371f7" stroke-width="2" fill="none" marker-end="url(#p)"/>
<defs>
<marker id="a" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto">
<path d="M0,0 L9,4.5 L0,9 z" fill="#d29922"/>
</marker>
<marker id="p" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto">
<path d="M0,0 L9,4.5 L0,9 z" fill="#a371f7"/>
</marker>
</defs>
<!-- Panel derecho: control -->
<rect x="700" y="92" width="228" height="200" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1.5"/>
<text x="716" y="118" fill="#e6edf3" font-size="13" font-weight="bold" font-family="system-ui, sans-serif">Nodo de control</text>
<text x="716" y="142" fill="#adbac7" font-size="11">Ansible (solo builtin)</text>
<text x="716" y="162" fill="#7d8590" font-size="10.5">preflight.yml → reconocer</text>
<text x="716" y="178" fill="#7d8590" font-size="10.5">site.yml → desplegar</text>
<text x="716" y="194" fill="#7d8590" font-size="10.5">apk.yml → instalar APK</text>
<text x="716" y="210" fill="#7d8590" font-size="10.5">status.yml → comprobar</text>
<text x="716" y="234" fill="#adbac7" font-size="11">SSH → los 16 blades</text>
<text x="716" y="256" fill="#7d8590" font-size="10.5">forks = 20: la flota entera</text>
<text x="716" y="272" fill="#7d8590" font-size="10.5">en paralelo</text>
<rect x="700" y="308" width="228" height="130" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1.5"/>
<text x="716" y="332" fill="#e6edf3" font-size="13" font-weight="bold" font-family="system-ui, sans-serif">Control de flota</text>
<text x="716" y="356" fill="#79c0ff" font-size="11">fleet connect</text>
<text x="716" y="374" fill="#79c0ff" font-size="11">fleet list</text>
<text x="716" y="392" fill="#79c0ff" font-size="11">fleet install app.apk</text>
<text x="716" y="410" fill="#79c0ff" font-size="11">fleet shell '&lt;cmd&gt;'</text>
<text x="716" y="428" fill="#79c0ff" font-size="11">fleet ip</text>
<rect x="700" y="454" width="228" height="110" rx="8" fill="#161b22" stroke="#f85149" stroke-width="1.5"/>
<text x="716" y="478" fill="#f85149" font-size="12" font-weight="bold" font-family="system-ui, sans-serif">Sin móviles físicos</text>
<text x="716" y="500" fill="#7d8590" font-size="10.5">Cada dispositivo es un</text>
<text x="716" y="515" fill="#7d8590" font-size="10.5">contenedor redroid sobre</text>
<text x="716" y="530" fill="#7d8590" font-size="10.5">el kernel del blade.</text>
<text x="716" y="551" fill="#7d8590" font-size="10.5">Detectables como emulador.</text>
</svg>