
- Libros y videos
- Alta disponibilidad en Linux - De la infraestructura a la orquestación de servicios (Heartbeat, Docker, Ansible, Kubernetes…)
Alta disponibilidad en Linux De la infraestructura a la orquestación de servicios (Heartbeat, Docker, Ansible, Kubernetes…)
Los puntos fuertes del libro:
- Un enfoque completo: de la infraestructura física a la orquestación de servicios,
- Aplicación práctica y aprendizaje contextualizado gracias a un ejemplo guía,
- Adopción de herramientas DevOps modernas para la alta disponibilidad
- Nivel Medio a Experto
- Publicación abril 2025
- Nivel Medio a Experto
- Publicación abril 2025
Más que nunca, en un mundo ultraconectado donde muchas cosas dependen de la informática y de Internet, es esencial contar con entornos altamente disponibles, redundantes y confiables. El objetivo de este libro es proporcionar a los ingenieros de sistemas todos los conceptos básicos para construir entornos de Alta Disponibilidad, tanto desde una perspectiva de infraestructura como de servicios, basados en el sistema operativo Linux.
Basándose en los principios y herramientas DevOps, los autores presentan un ejemplo de aplicación como hilo conductor para estudiar cómo evolucionan de la mano una aplicación y su infraestructura subyacente, para hacerlas lo más confiables y accesibles posible, apoyándose en las últimas tecnologías.
De esta forma se abordan todos los elementos de diseño de una plataforma y aplicación redundantes.
El lector puede así comprender concretamente la definición de una aplicación escrita en Java y funcionando en Tomcat, la implementación de una arquitectura de hardware funcional para soportarla, la redundancia de los servicios de sistema y de red básicos (RAID, agregados de red, DNS…), la automatización de la construcción y el despliegue de imágenes de aplicaciones con Docker y Ansible o alta disponibilidad de la red, repartidores de carga y direcciones IP con NGINX, HAProxy, el protocolo VRRP y Quagga.
En el resto del libro, los autores describen la transición a la orquestación con un clúster de Kubernetes, la implementación de un clúster con una solución de almacenamiento de red redundante basada en un clúster NFS y XFS, así como la creación de clústeres de bases de datos MariaDB y afinidades de sesión.
Prólogo
- Introducción
- Contenido de este libro
Aplicación standalone
- La aplicación principal
- 1. Arquitectura de aplicaciones web
- 2. El código
- a. El objeto TodoItem
- b. Nombres de clase
- c. El modelo MVC
- d. Gestión de los archivos cargados
- e. Configuración (Spring profile)
- 1. Instalación de la aplicación
- a. Apache Tomcat
- b. MariaDB
- c. Creación de la aplicación
- 1. Compartir recursos
- 2. Configuración de hardware no óptima
- 3. Todos los huevos en la misma cesta
Infraestructuras y servicios básicos
- ¿Qué es la alta disponibilidad?
- 1. Tolerancia a fallos
- 2. Tasa de disponibilidad
- 3. Factores que se deben tener en cuenta
- 4. Funciones y responsabilidades
- Infraestructura de alta disponibilidad
- 1. Ejemplo de arquitectura
- 2. Características del hardware del servidor
- 3. Distribución de servidores
- 4. Servidores físicos o virtuales
- 5. Pruebas sin servidores
- 6. Requisitos y plan de direccionamiento
- a. Servidores
- b. Red
- c. Detalles
- 1. Red VirtualBox
- 2. Red Hyper-V
- 3. UTM
- 4. Instalación estándar
- a. Imagen de Ubuntu
- b. Discos
- c. Red Netplan
- d. Usuarios
- e. Instalación de Ansible
- 1. Velocidad y tolerancia a fallos
- 2. Consideraciones materiales
- 3. Modos de funcionamiento
- 4. Configuración
- a. Configuración manual
- b. Utilizar Netplan
- c. Estado del agregado
- 1. ¿Cómo resuelve Linux las direcciones?
- 2. DNS primarios y secundarios
- 3. Configuración
- a. DNS primario
- b. DNS secundario
- c. Prueba
- d. Resolver Systemd
- e. Automatización
Los contenedores
- Especificaciones
- Aislamiento y contenedores
- 1. Principio
- 2. Contenedor y máquina virtual
- 3. Namespace
- 4. cgroup
- 5. Montaje en unión
- 6. Imagen de la aplicación
- 7. Capas de imágenes
- 8. Docker
- 9. El proyecto OCI
- Preparar el entorno
- 1. Instalar Docker
- 2. Instalar un registry Docker
- a. Crear almacenamiento
- b. Obtener una clave y un certificado
- c. Iniciar el registro
- d. Probar
- e. Automatizar
- 1. Adaptar el código
- 2. Dockerfiles
- a. Builder
- b. Tomcat
- c. Imagen de la aplicación
- a. Imagen para MariaDB
- b. Imagen h2
- 1. MariaDB
- a. Almacenamiento
- b. Inicio
- a. Ubicación de los archivos descargados
- b. Arranque manual
- a. Configuración YAML
- b. Despliegue
Exposición y reparto
- Exponer sus servicios
- 1. Problemática
- 2. Arquitectura básica
- Reverse proxy
- 1. ¿Por qué utilizar un reverse proxyreverseproxy?
- 2. Elección del reverse proxy
- 3. Instalación
- 4. Configuración
- a. nginx.conf
- b. Certificados
- 5. Automatización
- a. Configuración YAML
- b. Certificados
- c. Despliegue
- d. Prueba
- e. Reboot
- 1. Presentación
- 2. Objetivos
- 3. Arquitectura de alta disponibilidad
- 1. Elección de productos
- 2. HAProxy
- a. Presentación
- b. Arquitectura
- c. Ejemplo
- a. Presentación de Keepalived
- b. Presentación de VRRP
- c. Ejemplo
- a. Instalación de los paquetes
- b. Fijar el núcleo y los límites
- c. Configuración del firewall
- a. Instalación y configuración de componentes
- b. Comprobación de estructuras arborescentes
- c. Control de los servicios
- d. Configuración de las VIP
- e. Prueba final
- 1. Implementación
- 2. Instalación y configuración
- 3. Prueba
- 4. Automatización
Orquestración
- Introducción
- Abstracciones de orquestación
- 1. Abstracción del servidor
- 2. Abstracción de aplicaciones
- 3. Abstracción de la red
- 4. Abstracción del almacenamiento
- 5. Una mirada a la realidad
- ¿Automatización u orquestación?
- Batalla de orquestadores
- Mecanismos de entornos distribuidos
- 1. Consenso
- 2. Paxos
- 3. Raft
- Scheduler
- Introducción a Kubernetes
- 1. Arquitectura
- 2. Versión más ligera: Minikube
- a. Instalación
- b. Add-ons
- c. minikube dashboard
- d. minikube docker-env
- e. minikube logs
- f. minikube IP
- g. minikube service
- h. minikube update-context
- 1. kubectl
- 2. Llamadas al API
- 3. Configuración del cliente
- 4. Gestión de recursos
- 5. Trazas del pod
Despliegue con Kubernetes
- Introducción
- Del pod al despliegue
- 1. Pod
- a. Sensores y control de estado
- b. Clases de calidad de servicio, límites ypeticiones
- 1. Pod
- 2. ReplicaSet
- 3. Despliegue
- 1. Servicio de tipo ClusterIP
- 2. Servicio NodePort
- 3. Endpoints
- 1. Montaje de los ConfigMaps y secretos
- 2. Uso de ConfigMap y Secret en las variables de entorno
- 1. El controlador del flujo entrante
- 2. Objeto ingress
Almacenamiento y alta disponibilidad
- Disponibilidad del almacenamiento
- 1. Problemática
- 2. Especificaciones
- 3. Solución
- 4. Arquitectura
- a. DRBD y clúster
- b. XFS, cuotas y NFSv4
- 1. Aspectos principales
- 2. RAID por hardware frente a RAID por software
- 3. RAID-0, RAID-1 y RAID-5
- 4. Manejo de un RAID-5
- 1. Instalación de paquetes
- 2. Configuración de la red
- 3. Creación de clústeres
- 4. Verificación
- 5. Configuración de almacenamiento
- a. LVM
- b. DRBD
- c. Ampliar el volumen DRBD
- a. DRBD
- b. LVM
- c. Sistema de archivos
- d. NFS
- e. Dirección IP
- 1. Adición manual
- 2. Prueba NFS
- 3. Split-brain
- 4. Automatización
Implementar un cluster Kubernetes
- Introducción
- Topología
- 1. Componentes básicos
- 2. Elección de un runtime
- 3. Reparto
- a. Cuórum y rendimiento
- b. Control-plane o masters
- c. Workers o nodos
- d. Posicionamiento
- e. Topología para eni-todo
- 1. Recordatorios
- 2. HAProxy
- 3. Preparación de los servidores
- a. Configuración del sistema
- b. Configuración del firewall
- c. Automatización
- 1. Imágenes de Kubernetes
- 2. Primer master
- a. Bootstrap
- b. Franela
- c. Listar los contenedores
- d. Comprobar ETCD
- a. Primer despliegue
- b. Primera exposición
- c. Añadir los pods
- d. Resolución DNS interna
- a. Aspectos principales
- b. Instalación
- c. Primer ingress
- d. Modo host network
- 1. Crash o apagado sucio de un nodo
- 2. Parada del nodo limpio
- 3. Destruir un clúster
Integración final
- Introducción
- Volúmenes persistentes
- 1. Clúster NFS-HA
- 2. Suministro de volúmenes persistentes
- Registry Docker
- 1. Arquitectura
- 2. Generar un secreto
- 3. Despliegue
- a. Demanda de volumen persistente
- b. Creación de un despliegue
- c. Crear un servicio
- 4. Exposición
- a. Añadir una ruta ingress
- b. Exposición a través de HAProxy
- c. Prueba
- 5. Configuración de los workers para el registry
- 1. Problemática
- 2. Galera
- 3. Despliegue
- 4. Acceso a db-todo
- 1. Adaptaciones
- 2. Construcción de la imagen
- 3. Crear una cuenta de servicio
- 4. Despliegue
- a. Demanda de volumen persistente
- b. Creación del servicio
- c. Despliegue
- a. Afinidad y persistencia
- b. Creación de una configuración ingress
- c. Configuración de HAProxy
Ir más lejos
- Introducción
- Plan de recuperación en caso de catástrofe
- 1. En caso de catástrofe
- 2. Definición
- 3. Medidas
- 4. Prácticas DevOps
- Copias de seguridad
- 1. Redundancia frente a copia de seguridad
- 2. Qué guardar
- 3. GitOps
- 4. SaaS
- Seguridad
- 1. Contenedor y root
- a. Ejemplo de explotación
- b. Soluciones
- c. El contexto de seguridad (securityContext)
- 1. Contenedor y root
- 2. Red Kubernetes
- 3. Usuarios y permisos
- a. RBAC
- b. Usuarios
- 4. Actualizaciones
- 5. Firewalls, proxies, routeres y segmentación
- 6. Aplicaciones
- 1. Métrica
- 2. Trazas
