-25% de remise sur nos livres en ligne et vidéos, avec le code : VITE25. Jusqu'au mercredi 30 juin 2021 seulement. Hors webpro *
En raison d’une maintenance technique, la boutique Editions ENI sera inaccessible ce mercredi soir à compter de 21h, jusqu’à 2h jeudi matin. Nous vous invitons à passer votre commande avant 20h30. Merci pour votre compréhension. L’équipe des Editions ENI
  1. Supports de cours
  2. Haute disponibilité sous Linux - De l'infrastructure à l'orchestration de services (Heartbeat, Docker, Ansible, Kubernetes...)

Haute disponibilité sous Linux De l'infrastructure à l'orchestration de services (Heartbeat, Docker, Ansible, Kubernetes...)

  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • Version en ligne offerte pendant 1 an
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement
  • Version HTML
  • Accès illimité 24h/24, 7J/7
  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne

Présentation

Plus que jamais, dans un monde ultraconnecté où tant de choses dépendent de l'informatique et d'Internet, il est primordial de disposer d'environnements hautement disponibles, redondants et fiables. L'objectif de ce livre est de fournir aux ingénieurs système toutes les bases permettant de construire des environnements de Haute Disponibilité, tant du point de vue de l'infrastructure que du point de vue des services, basés sur le système d'exploitation Linux.

Selon les principes et les outils DevOps, les auteurs présentent un exemple d'application fil rouge permettant d'étudier la façon de faire évoluer de concert une application et l'infrastructure sous-jacente, pour les rendre les plus fiables et les plus accessibles possibles, en s'appuyant sur les dernières technologies.

Tous les éléments de conception d'une plateforme et d'une application redondantes sont ainsi abordés.

Le lecteur peut ainsi appréhender concrètement la définition d'une application écrite en Java et tournant sous Tomcat, la mise en place d'une architecture matérielle fonctionnelle pour la supporter, la redondance des services système et réseau de base (RAID, agrégats réseau, DNS…), l'automatisation de la construction et du déploiement des images de l'application avec Docker et Ansible ou encore la haute disponibilité du réseau, des répartiteurs de charge et des adresses IP avec NGINX, HAProxy, le protocole VRRP et Quagga.

Dans la suite du livre, les auteurs décrivent le passage à l'orchestration avec un cluster Kubernetes, le déploiement d'un cluster avec une solution de stockage réseau redondant basée sur un cluster NFS et XFS, ainsi que la création de clusters de bases de données MariaDB et les affinités de sessions.

Chaque chapitre du livre est agrémenté d'exemples pratiques dont l'ensemble du code est proposé en téléchargement sur l'espace GitHub des auteurs.



Quizinclus dans
la version en ligne !
  • Testez vos connaissances à l'issue de chaque chapitre
  • Validez vos acquis

Table des matières

  • Avant-propos
    • 1. Introduction
    • 2. Contenu de ce livre
  • Application standalone
    • 1. L’application fil rouge
      • 1.1 L’architecture de l'application web
      • 1.2 Le code
        • 1.2.1 L’objet TodoItem
        • 1.2.2 Les noms des classes
        • 1.2.3 Le modèle MVC
        • 1.2.4 La gestion des fichiers téléchargés
        • 1.2.5 La configuration (Spring profile)
    • 2. Construction du serveur tout-en-un
      • 2.1 Installation de l'application
        • 2.1.1 Apache Tomcat
        • 2.1.2 MariaDB
        • 2.1.3 Construction de l'application
      • 2.2 Exposition Internet
      • 2.3 Critique du design applicatif
    • 3. Quelques problèmes de ce modèle tout-en-un
      • 3.1 Partage des ressources
      • 3.2 Configuration hardware non optimale
      • 3.3 Tous ses œufs dans le même panier
  • Infrastructure et services de base
    • 1. Qu'est-ce que la haute disponibilité ?
      • 1.1 Tolérance aux pannes
      • 1.2 Taux de disponibilité
      • 1.3 Éléments à prendre en compte
      • 1.4 Rôles et responsabilités
    • 2. Infrastructure en haute disponibilité
      • 2.1 Exemple d'architecture
      • 2.2 Caractéristiques matérielles d’un serveur
      • 2.3 Répartition des serveurs
      • 2.4 Serveurs physiques ou virtuels
      • 2.5 Tester sans serveurs
      • 2.6 Besoins et plan d'adressage
        • 2.6.1 Serveurs
        • 2.6.2 Réseau
        • 2.6.3 Détails
    • 3. Installation de base
      • 3.1 Réseau VirtualBox
      • 3.2 Installation standard
        • 3.2.1 Image Ubuntu
        • 3.2.2 Disques
        • 3.2.3 Réseau Netplan
        • 3.2.4 Utilisateurs
        • 3.2.5 Installation d'Ansible
      • 3.3 Clonage
    • 4. Agrégats réseau
      • 4.1 Vitesse et tolérance aux pannes
      • 4.2 Considérations matérielles
      • 4.3 Modes de fonctionnement
      • 4.4 Configuration
        • 4.4.1 Configuration manuelle
        • 4.4.2 Utiliser Netplan
        • 4.4.3 État de l'agrégat
    • 5. Serveur DNS
      • 5.1 Comment Linux résout-il les adresses ?
      • 5.2 DNS primaires et secondaires
      • 5.3 Configuration
        • 5.3.1 DNS primaire
        • 5.3.2 DNS secondaire
        • 5.3.3 Test
        • 5.3.4 Resolver Systemd
        • 5.3.5 Automatisation
  • Les containers
    • 1. Cahier des charges
    • 2. Isolation et container
      • 2.1 Principe
      • 2.2 Container et machine virtuelle
      • 2.3 Namespace
      • 2.4 Cgroup
      • 2.5 Montage en union
      • 2.6 Image applicative
      • 2.7 Couches d'images
      • 2.8 Docker
      • 2.9 Le projet OCI
    • 3. Préparer l'environnement
      • 3.1 Installer Docker
      • 3.2 Installer un registry Docker
        • 3.2.1 Créer le stockage
        • 3.2.2 Obtenir une clé et un certificat
        • 3.2.3 Démarrer le registry
        • 3.2.4 Tester
        • 3.2.5 Automatiser
    • 4. Construire l'image
      • 4.1 Adaptation du code
      • 4.2 Dockerfiles
        • 4.2.1 Builder
        • 4.2.2 Tomcat
        • 4.2.3 Image applicative
      • 4.3 Build
      • 4.4 Premier test
      • 4.5 Utiliser le registry
      • 4.6 Automatisation
        • 4.6.1 Image pour MariaDB
        • 4.6.2 Image h2
    • 5. Déployer les containers
      • 5.1 MariaDB
        • 5.1.1 Stockage
        • 5.1.2 Démarrage
      • 5.2 eni-todo
        • 5.2.1 Emplacement des fichiers téléchargés
        • 5.2.2 Démarrage manuel
      • 5.3 Automatisation
        • 5.3.1 Configuration YAML
        • 5.3.2 Déploiement
    • 6. Bilan
  • Exposition et répartition
    • 1. Exposer ses services
      • 1.1 Problématique
      • 1.2 Architecture de base
    • 2. Reverse proxy
      • 2.1 Pourquoi utiliser un reverse proxy ?
      • 2.2 Choix du reverse proxy
      • 2.3 Installation
      • 2.4 Configuration
        • 2.4.1 nginx.conf
        • 2.4.2 Certificats
      • 2.5 Automatisation
        • 2.5.1 Configuration YAML
        • 2.5.2 Certificats
        • 2.5.3 Déploiement
        • 2.5.4 Test
        • 2.5.5 Reboot
    • 3. Répartition de charge
      • 3.1 Présentation
      • 3.2 Objectifs
      • 3.3 Architecture en haute disponibilité
    • 4. Solution de répartition de charge
      • 4.1 Choix des produits
      • 4.2 HAProxy
        • 4.2.1 Présentation
        • 4.2.2 Architecture
        • 4.2.3 Exemple
      • 4.3 VRRP avec Keepalived
        • 4.3.1 Présentation de Keepalived
        • 4.3.2 Présentation de VRRP
        • 4.3.3 Exemple
      • 4.4 Installation manuelle
        • 4.4.1 installation des packages
        • 4.4.2 Paramétrer le noyau et les limites
        • 4.4.3 Configuration du pare-feu
      • 4.5 Automatisation
        • 4.5.1 Installation et paramétrage des composants
        • 4.5.2 Vérification des arborescences
        • 4.5.3 Contrôle des services
        • 4.5.4 Configuration des VIP
        • 4.5.5 Test final
      • 4.6 Bilan
    • 5. Exposition Internet
    • 6. Solution d'exposition Internet avec Quagga
      • 6.1 Implémentation
      • 6.2 Installation et configuration
      • 6.3 Test
      • 6.4 Automatisation
  • Orchestration
    • 1. Introduction
    • 2. Abstractions d’orchestration
      • 2.1 Abstraction du serveur
      • 2.2 Abstraction de l'application
      • 2.3 Abstraction du réseau
      • 2.4 Abstraction du stockage
      • 2.5 Rappel à la réalité
    • 3. Automatisation ou orchestration ?
    • 4. Bataille des orchestrateurs
    • 5. Mécanismes des environnements distribués
      • 5.1 Consensus
      • 5.2 Paxos
      • 5.3 Raft
    • 6. Scheduler
    • 7. Premiers pas avec Kubernetes
      • 7.1 Architecture
      • 7.2 Version allégée : Minikube
        • 7.2.1 Installation
        • 7.2.2 Add-ons
        • 7.2.3 minikube dashboard
        • 7.2.4 minikube docker-env
        • 7.2.5 minikube logs
        • 7.2.6 minikube IP
        • 7.2.7 minikube service
        • 7.2.8 minikube update-context
    • 8. Initiation à Kubernetes
      • 8.1 kubectl
      • 8.2 Appels à l'API
      • 8.3 Configuration du client
      • 8.4 Manipulation des ressources
      • 8.5 Traces du pod
  • Déploiement avec Kubernetes
    • 1. Introduction
    • 2. Du pod aux déploiements
      • 2.1 Pod
        • 2.1.1 Sondes et contrôle de santé
        • 2.1.2 Classes de qualité de service, limits et requests
      • 2.2 ReplicaSet
      • 2.3 Déploiement
    • 3. Services et Endpoints
      • 3.1 Service de type ClusterIP
      • 3.2 Service de type NodePort
      • 3.3 Endpoints
    • 4. Secret et ConfigMap
      • 4.1 Monter des ConfigMaps et des secrets
      • 4.2 Utilisation des ConfigMap et Secret dans les variables d'environnement
    • 5. StatefulSet
    • 6. PersistentVolume
    • 7. PersistentVolumeClaim
    • 8. StorageClass
    • 9. Routes ingress
      • 9.1 Le contrôleur des flux entrant (ingress controller)
      • 9.2 Objet ingress
    • 10. Job et CronJob
    • 11. DaemonSet
  • Stockage en haute disponibilité
    • 1. Disponibilité du stockage
      • 1.1 Problématique
      • 1.2 Cahier des charges
      • 1.3 Solution
      • 1.4 Architecture
        • 1.4.1 DRBD et cluster
        • 1.4.2 XFS, quotas et NFSv4
    • 2. RAID
      • 2.1 Principe
      • 2.2 RAID matériel vs RAID logiciel
      • 2.3 RAID-0, RAID-1 et RAID-5
      • 2.4 Manipulation d'un RAID-5
    • 3. Cluster NFS-HA
      • 3.1 Installation des packages
      • 3.2 Configuration du réseau
      • 3.3 Création du cluster
      • 3.4 Vérification
      • 3.5 Configuration du stockage
        • 3.5.1 LVM
        • 3.5.2 DRBD
      • 3.6 Ressources Pacemaker
        • 3.6.1 DRBD
        • 3.6.2 LVM
        • 3.6.3 Système de fichiers
        • 3.6.4 NFS
        • 3.6.5 Adresse IP
      • 3.7 Contraintes Pacemaker
      • 3.8 Test de bascule
    • 4. Projets XFS
      • 4.1 Ajout manuel
      • 4.2 Test NFS
      • 4.3 Split-brain
      • 4.4 Automatisation
  • Mise en place d’un cluster Kubernetes
    • 1. Introduction
    • 2. Topologie
      • 2.1 Composants de base
      • 2.2 Répartition
        • 2.2.1 Quorum et performances
        • 2.2.2 Masters
        • 2.2.3 Nodes
        • 2.2.4 Positionnement
        • 2.2.5 Topologie pour eni-todo
    • 3. Préparation
      • 3.1 Rappels
      • 3.2 HAProxy
      • 3.3 Préparation des serveurs
        • 3.3.1 Configuration système
        • 3.3.2 Configuration du pare-feu
        • 3.3.3 Automatisation
    • 4. Construction
      • 4.1 Images de Kubernetes
      • 4.2 Premier master
        • 4.2.1 Bootstrap
        • 4.2.2 Flannel
      • 4.3 Deuxième et troisième masters
      • 4.4 Modification du contrôleur
      • 4.5 Ajout des nodes
      • 4.6 Test
        • 4.6.1 Premier déploiement
        • 4.6.2 Première exposition
        • 4.6.3 Ajout des pods
        • 4.6.4 Résolution DNS interne
      • 4.7 Routeur ingress
        • 4.7.1 Principe
        • 4.7.2 Installation
        • 4.7.3 Premier ingress
        • 4.7.4 Mode host network
    • 5. Procédures additionnelles
      • 5.1 Crash ou arrêt sale d'un node
      • 5.2 Arrêt propre d’un node
      • 5.3 Destruction d'un cluster
  • Intégration finale
    • 1. Introduction
    • 2. Volumes persistants
      • 2.1 Cluster NFS-HA
      • 2.2 Approvisionner des volumes persistants
    • 3. Registry Docker
      • 3.1 Architecture
      • 3.2 Génération d’un secret
      • 3.3 Déploiement
        • 3.3.1 Demande de volume persistant
        • 3.3.2 Création d’un déploiement
        • 3.3.3 Création d’un service
      • 3.4 Exposition
        • 3.4.1 Ajout d’une route ingress
        • 3.4.2 Exposition via HAProxy
        • 3.4.3 Test
    • 4. Base de données
      • 4.1 Problématique
      • 4.2 Galera
      • 4.3 Déploiement
      • 4.4 Création de db-todo
      • 4.5 Problème de redémarrage
    • 5. eni-todo
      • 5.1 Adaptations
      • 5.2 Construction de l’image
      • 5.3 Création d’un compte de service
      • 5.4 Déploiement
        • 5.4.1 Demande de volume persistant
        • 5.4.2 Création du service
        • 5.4.3 Déploiement
      • 5.5 Exposition
        • 5.5.1 Affinité et persistance
        • 5.5.2 Création d’une configuration ingress
        • 5.5.3 Configuration de HAProxy
      • 5.6 Test final
    • 6. Bilan
  • Aller plus loin
    • 1. Introduction
    • 2. Plan de reprise d'activité
      • 2.1 Quand le désastre arrive
      • 2.2 Définition
      • 2.3 Mesures
      • 2.4 Pratiques DevOps
    • 3. Sauvegardes
      • 3.1 Redondance vs sauvegarde
      • 3.2 Que sauvegarder ?
      • 3.3 GitOps
      • 3.4 SaaS
    • 4. Sécurité
      • 4.1 Container et root
        • 4.1.1 Exemple d'exploit
        • 4.1.2 Solutions
        • 4.1.3 Le contexte de sécurité (securityContext)
      • 4.2 Réseau Kubernetes
      • 4.3 Utilisateurs et droits
        • 4.3.1 RBAC
        • 4.3.2 Utilisateurs
      • 4.4 Mises à jour
      • 4.5 Firewalls, proxies, routeurs
      • 4.6 Applications
    • 5. Surveillance
      • 5.1 Métriques
      • 5.2 Traces
    • 6. Stockage
    • 7. PaaS
      • 7.1 Installer OKD
      • 7.2 Instancier des images Docker
      • 7.3 Du build au déploiement de eni-todo
      • Index

Auteurs

Charles SABOURDINEn savoir plus

Diplômé d'un BBA Essec, d'un Master sécurité (MSSIS) à l'ESIEA et de plusieurs certifications dont la CKA (Certified Kubernetes Administrator), Charles Sabourdin réalise des missions de Stratégie, d'Urbanisme et d'Architecture des Systèmes d'Information ainsi que des missions très opérationnelles autour de Java, Linux, Ansible et Kubernetes, lui permettant de rester pragmatique dans la mise en œuvre de ses conseils. Grand utilisateur de logiciels libres, il partage depuis 20 ans son expérience en organisant ou participant à de nombreuses conférences et évènements (les Soirées ParisJug, JChateaux, Devoxx France).

Sébastien ROHAUTEn savoir plus

Diplômé de l'ESGI, et après plusieurs années passées sur des missions d'ingénierie système, Sébastien ROHAUT a été responsable technique d'une équipe DevOps au sein d'un grand groupe français, puis après avoir obtenu le titre d'ingénieur DPE, est aujourd'hui responsable de la sécurité d'une plateforme Cloud dans ce même groupe. Il a également enseigné pendant près de 11 ans à des classes préparatoires et d'ingénieurs et dispose d'une riche expérience technique et pédagogique pour le plus grand bénéfice des lecteurs de ses livres.

Caractéristiques

  • Nombre de pages 432 pages
  • Parution juin 2021
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-03079-6
    • EAN : 9782409030796
    • Ref. ENI : EPHADIS
  • Parution juin 2021
    • HTML
    • ISBN : 978-2-409-03080-2
    • EAN : 9782409030802
    • Ref. ENI : LNEPHADIS

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (213 Ko)