Raport de Soutenance1 - Copie
Raport de Soutenance1 - Copie
Raport de Soutenance1 - Copie
Identifiant : (2020-0177)
THEME :
Dédicace
Remerciements
Avant tout propos, nous tenons à remercier les personnes qui nous ont permis d’effectuer ce
travail ainsi que ceux qui nous ont permis d’en faire un moment agréable et profitable. Nous
remercions donc :
Le Directeur Général d'ESUPEX
Pour sa gestion avisée de l'école ;
Enfin nous remercions tous ceux qui ont contribué de près ou de loin à l’élaboration de notre
travail ;
Sigles et abréviations
Résumé
La présente étude porte sur la mise en place d’une architecture hautement disponible, résiliente
et performante pour Telia ERP. L’objectif principal de ce projet est de garantir la disponibilité
continue du système ERP tout en minimisant les interruptions de service pour TELIA. Pour cela
nous avons utilisé docker et kubernetes pour palier au problème. En effet docker est une
plateforme de conteneurisation permettant d'emballer une application et ses dépendances dans
un conteneur, assurant ainsi la portabilité et l’isolation. Kubernetes, d'autre part, est un
orchestrateur de conteneurs facilitant la gestion, le déploiement et la mise à l'échelle des
conteneurs. Pour ce faire, nous avons utilisé un cluster kubernetes composé de quatre(04)
serveurs (nœuds/nodes) dont deux(02) nœuds maitres(master nodes)/ et deux(02) nœuds
esclaves(worker nodes). En fin de compte, cette architecture permet de garantir la satisfaction
des utilisateurs de TELIA ERP en leur offrant une expérience d'utilisation fluide et sécurisée.
Abstract
This study focuses on the implementation of a highly available, resilient and efficient
architecture for Telia ERP. The main objective of this project is to ensure the continuous
availability of the ERP system while minimizing service interruptions for Telia. For this we
used Docker and Kubernetes to overcome the problem. Indeed, Docker is a containerization
platform allowing you to package an application and its dependencies in a container, thus
ensuring portability and isolation. Kubernetes, on the other hand, is a container orchestrator
making it easier to manage, deploy, and scale containers. To do this, we used a Kubernetes
cluster composed of four (04) servers (nodes) including two (02) master nodes (master nodes)
and two (02) slave nodes (worker nodes). Ultimately, this architecture ensures the satisfaction
of TELIA ERP users by offering them a smooth and secure user experience.
Introduction générale
La gestion des systèmes d'information s'est métamorphosée en un élément critique de la
productivité et de la sécurité au sein des organisations modernes. Dans un paysage
technologique en perpétuelle évolution, la surveillance des infrastructures informatiques revêt
une importance capitale, garantissant non seulement la continuité des activités, mais aussi la
prévention des défaillances coûteuses. L'évolution rapide des réseaux informatiques au sein des
entreprises a accentué les risques liés aux interruptions, soulignant l'impératif d'une
maintenance préventive proactive.
À l'ère où nos interactions et nos opérations sont de plus en plus dépendantes des technologies,
maintenir des systèmes informatiques fonctionnels et performants revêt une importance
critique. La défaillance d'un composant, qu'il soit matériel ou logiciel, peut avoir des
répercussions immédiates et durables sur la productivité et la réputation d'une organisation.
Dans ce contexte, la surveillance des systèmes d'information devient une nécessité
incontournable pour garantir un fonctionnement ininterrompu.
C'est dans ce sens que s'inscrit notre projet de fin de cycle, centré sur le thème : "Etude et mise
en place d'une architecture hautement disponible, résiliente et performante pour TELIA
ERP." Face aux défis constants de la connectivité et de l'évolution des attentes des utilisateurs,
notre projet se positionne comme une réponse à la quête perpétuelle d'efficacité opérationnelle
et de fiabilité. Dans un environnement où la disponibilité des applications et des services est
devenue essentielle pour maintenir une compétitivité solide, l'architecture que nous
envisageons va au-delà de la simple mise en place technique. Elle représente une réponse aux
besoins actuels et futurs des entreprises et organisations, qui cherchent à offrir des expériences
utilisateurs sans faille tout en préparant leurs systèmes pour les défis à venir.
Au cours des chapitres qui suivent, nous aborderons d’abord en détail notre démarche pour
concevoir et déployer cette architecture moderne et robuste. En plus, nous explorerons les
fondements de la supervision, étudierons les concepts de conteneurisation à l'orchestration de
Docker et Kubernetes. Et enfin, nous plongerons dans les détails de la conception, du
développement et des tests. Notre projet se veut non seulement un travail académique, mais
également un engagement envers l'amélioration continue des systèmes informatiques dans le
contexte dynamique de notre époque.
Introduction partielle
L’Ecole Supérieure Polytechnique Excelle (ESUPEX) a été créée en 2016 avec l'autorisation
du Ministère des Enseignements Secondaires Supérieurs, de la Recherche Scientifique et de
l'Innovation. Elle fonctionne de manière laïque et indépendante, se tenant à l'écart de toute
influence politique, religieuse ou idéologique. L’ESUPEX met l'accent sur l'objectivité du
savoir tout en respectant la diversité des opinions et des modes de vie.
Située à Ouaga 2000, sur le boulevard Muammar KADDAFI derrière l'Assurance Maladie
Universelle et partageant un mur avec le Lycée Privé Excelle 2000, l'établissement est sous la
direction du Fondateur KASSOUM MANLY, possédant une solide expertise dans la gestion des
établissements d'enseignement. L'école a reçu l'agrément de l'État sous le numéro 001063
MESRSI/ SG/DGESup/DIPES en date du 19/09/2016.
Afin d'élaborer son programme pédagogique, l'ESUPEX a collaboré avec des institutions
universitaires expérimentées telles que l'Université NAZI BONI de Bobo Dioulasso, l'Ecole
Supérieure des Travaux Pratiques de Bobo Dioulasso et l'Université Privée Ahmed BABA de
Bamako.
-Distribution énergétique ;
-Performances énergétiques ;
-Energie solaire ;
-L’électrotechnique.
Réseaux Informatiques et Télécommunications, avec les spécialités suivantes :
-Systèmes automatisés ;
-Réseaux industriels.
Système d’Information et Réseaux
Génie Civil
Ces filières visent à offrir une variété de domaines d'études aux étudiants, allant de
l'électrotechnique à l'ingénierie civile, en passant par l'électronique et l'informatique
industrielle, ainsi que les réseaux informatiques et les systèmes d'information.
Pour accéder à ces formations de qualité à ESUPEX, les candidats doivent être titulaires du
diplôme de baccalauréat des séries (C, D, E, F et H), ou d'un équivalent.
ESUPEX propose deux (2) modalités pour dispenser ses cours à ses étudiants :
Enseignement en présentiel ;
Cours en ligne (lancés en 2022).
TELIA Informatique est une société à responsabilité limitée (SARL), créée en 2002 par deux
actionnaires avec un capital de 1 000 000 francs CFA. C’est une société de droit privé
enregistrée au registre de commerce du Burkina Faso sous le numéro BF OUA 2002 B 2440,
son numéro d’identification fiscale unique (IFU) est le 00007296 J, et son numéro sécurité
sociale est le N°33128J. Son siège social est situé au secteur 44 (ex 28) de Ouagadougou.
La formation constitue une clé permanente et efficace pour atteindre des objectifs et individuels.
Conscient de cette importance, TELIA Informatique propose des séminaires de formation qui
couvrent plusieurs domaines d’activités allant de l’initiation au perfectionnement :
Initiation à la bureautique ;
Bureautique avancée ;
Internet ;
Maintenance réseau et système ;
TELIA informatique entretient des relations très étroites avec d’importants grossistes en
informatique. Elle met à la disposition de ses clients une gamme variée de matériels et logiciels
de qualité dont :
Des micro-ordinateurs ;
Du matériel d’imagerie ;
Des produits réseaux ;
Des unités de sauvegardes ;
Des logiciels et progiciels ;
Des consommables.
TELIA propose également des contrats de maintenance hard et soft sur site ou à son atelier pour
un entretien préventif et le dépannage de tout matériel et logiciel.
Conclusion
Ce chapitre a permis de comprendre en détail la structure de formation École Supérieure
Polytechnique Excelle (ESUPEX) et d'accueil TELIA INFORMATIQUE. Ces deux facettes
sont essentielles pour le développement des compétences et des connaissances des étudiants,
les préparant ainsi à relever les défis du secteur professionnel.
Introduction partielle
Pour une meilleure étude de notre projet qui est la mise en place d’une architecture hautement
disponible, résiliente et performante, il est indispensable de se pencher sur l’architecture
matérielle et logicielle de TELIA. L’existant ici concerne le réseau informatique de TELIA.Ceci
nous permettra d’analyser le réseau existant afin d’avoir une vue objective dans l’optique
d’évaluer ses forces et faiblesses pour la réalisation de notre projet.
1.1.1. Le Matériel
L'architecture matérielle de TELIA INFORMATIQUE englobe divers éléments essentiels pour
ses opérations informatiques. Ces composants matériels sont soigneusement sélectionnés pour
répondre aux besoins de l'entreprise et incluent :
-Stockage : Un serveur NAS (Network Attached Storage) est mis en place à Telia Informatique
pour stocker et gérer les données de manière efficace. Ce serveur offre une capacité de stockage
évolutive et assure la redondance pour garantir la disponibilité des données.
Présence sur le Cloud : Telia Informatique étend son infrastructure informatique au cloud, où
elle peut exploiter des ressources virtuelles pour diverses charges de travail. Cela peut inclure
des services d'hébergement, de stockage ou de calcul dans un environnement de cloud public
ou privé, offrant ainsi une flexibilité et une évolutivité supplémentaires
1.1.2. Le Logiciels
Outre le matériel, TELIA s'appuie sur des logiciels pour configurer et gérer son infrastructure
informatique. Les logiciels jouent un rôle central dans la définition des ressources informatiques
du réseau et l'exécution des diverses tâches. Parmi les logiciels utilisés par TELIA, on retrouve :
- Système d'exploitation Centos 7 : Il s'agit d'une distribution Linux open source basée sur les
sources du code de Red Hat Enterprise Linux (RHEL). Centos7 est principalement employé
comme système d'exploitation serveur, mais il est également utilisé sur des postes de travail,
notamment pour les développeurs au sein de TELIA.
- Odoo : TELIA s'appuie sur Odoo Framework pour le développement de ses logiciels. Odoo
est utilisé pour créer des modules, applications et logiciels personnalisés répondant aux besoins
spécifiques de l'entreprise.
Figure 3:Architecture logicielle de Telia Informatique avant la mise en place de notre solution
Source : données du terrain
TELIA SANTE : Une solution de Gestion qui vise à améliorer l'efficacité des
opérations hospitalières, la gestion des dossiers médicaux, et la coordination des soins
de santé.
TELIA-COMPTA-PUBLIC : Un système de comptabilité intégré destiné à
l'administration publique, permettant une gestion précise des finances de l'État.
Une bonne configuration du réseau : Telia Informatique dispose d'un réseau bien structuré,
comprenant à la fois une connectivité filaire et sans fil. Cela permet une connectivité fiable et
flexible pour les employés dans tout le bâtiment.
Un serveur ProLiant ML350 performant : Le choix d'un serveur de haute performance est
un atout majeur. Ce serveur est capable de gérer efficacement les charges de travail, y compris
l'hébergement de l'ERP et d'autres applications critiques.
Une imprimante performante : L'imprimante de haute qualité garantit une impression rapide
et précise des documents, ce qui est essentiel pour de nombreuses opérations.
Deux switchs Cisco bien configurés : Les commutateurs Cisco SF 100-24 assurent une
connectivité réseau stable avec leurs 24 ports chacun, répartis dans les coffrets appropriés, ce
qui simplifie la gestion du réseau.
Globalement, Telia a mis en place une infrastructure informatique solide, mais il y a des
opportunités d'amélioration, notamment en renforçant la résilience de l'ERP et en évaluant les
processus de sauvegarde et de reprise après sinistre pour minimiser les temps d'arrêt potentiels.
Mise en place de Docker et Kubernetes : Nous avons introduit Docker, une technologie de
conteneurisation, pour isoler notre application. Cette approche permet à l'application de
fonctionner de manière indépendante du système d'exploitation sous-jacent, éliminant ainsi les
problèmes de compatibilité entre le système d'exploitation et l'application. En parallèle,
l'intégration de Kubernetes nous permet de gérer de manière automatique la réplication des
conteneurs et d'assurer une disponibilité continue, même en cas de pannes des conteneurs
précédents.
Mise en place de serveurs de nœuds maîtres : Nous avons déployé deux serveurs de nœuds
maîtres. Ces serveurs jouent un rôle essentiel dans la gestion de la répartition de la charge, la
supervision des autres serveurs et nœuds, et la détection précoce des pannes. En cas de détection
d'une panne, ils informent immédiatement les deux autres serveurs pour qu'ils puissent créer de
nouveaux conteneurs automatiquement, garantissant ainsi la continuité des services. En plus si
l’un des nœuds maitres tombent en panne l’autre pourra prendre le relais pour maintenir la haute
disponibilité.
Mise en place serveurs esclaves : Pour héberger les conteneurs et minimiser les interruptions
de service, nous avons mis en place deux serveurs esclaves. Ils assurent la réplication des
conteneurs, ce qui renforce la résilience de notre infrastructure et garantit que les services
restent opérationnels en cas de défaillance matérielle ou de panne.
De nos jours, la digitalisation rapide transforme fondamentalement la façon dont les entreprises
opèrent. Cette transformation a incité de nombreuses entreprises, dont Telia Informatique, à
numériser leurs processus de travail pour simplifier la gestion de leur infrastructure
informatique. Telia Informatique se spécialise dans la création de logiciels de gestion,
d'applications et de sites web pour répondre aux besoins variés de ses clients. Avec la demande
croissante des entreprises pour des solutions informatiques performantes et fiables, Telia
Informatique a choisi de se tourner vers la haute disponibilité pour garantir le bon
fonctionnement de ses services et applications. C'est dans cette optique que le thème "Mise en
place d'une architecture hautement disponible, résiliente et performante pour TELIA ERP a été
choisi. Chaque composant de ce thème revêt une importance cruciale pour la réalisation réussie
du projet.
Infrastructure Robuste : TELIA ERP devrait reposer sur une infrastructure informatique
solide, comprenant des serveurs, des conteneurs Docker (si applicables), des nœuds Kubernetes
(si applicables), des commutateurs, un routeur, et éventuellement une architecture cloud.
Disponibilité Élevée : L'architecture mise en place doit garantir une disponibilité élevée de
TELIA ERP, permettant aux utilisateurs d'accéder aux fonctionnalités de l'ERP de manière
ininterrompue, même en cas de défaillance d'un composant.
Sécurité Renforcée : Des mesures de sécurité avancées doivent être mises en place pour
protéger les données de l'entreprise et l'ensemble de l'infrastructure contre les menaces
potentielles. Cela inclut la sécurité des données, des communications et des accès.
Performances Optimal : TELIA ERP doit offrir des performances optimales en utilisant
efficacement les ressources disponibles, garantissant des temps de réponse rapides pour les
utilisateurs.
Redondance : La redondance des composants critiques doit être mise en place pour minimiser
les temps d'arrêt en cas de panne.
Surveillance et Gestion : Des outils de surveillance et de gestion avancés doivent être en place
pour surveiller en permanence l'état de l'infrastructure, détecter les problèmes potentiels, et
permettre une intervention proactive.
Satisfaction des Utilisateurs : En fin de compte, les résultats attendus visent à garantir la
satisfaction des utilisateurs de TELIA ERP en leur offrant une expérience d'utilisation fluide et
sécurisée.
M. DARGA Joris, Ingénieur en Réseaux Informatiques : M. DARGA Joris joue un rôle central
en tant qu'Ingénieur en Réseaux Informatiques chez Telia Informatique. Il agit en tant que
maître de stage pour les étudiants impliqués dans le projet, fournissant une expertise technique
précieuse et supervisant notre travail au quotidien.
Phase 1 : Analyse et Planification (18 Juillet-1er Août) : Cette phase initiale implique une
analyse approfondie des besoins, des exigences et des ressources disponibles. Elle comprend
également la définition des objectifs spécifiques du projet et la création d'un plan détaillé pour
la mise en place de l’architecture. C’est dans cette phase également que nous avons eu
l’occasion de rencontrer le personnel de TELIA et comprendre tout son fonctionnement
Phase 2 : Etude et compréhension (1er Août-25 Août) : Au cours de cette étape, nous avons
effectué des recherches approfondies sur tous les aspects théoriques du projet ou du thème afin
de le comprendre et de le cerner plus précisément, dans le but de le mener à bien.
Phase 4 : Intégration et Tests (Semaines 7-10) : L'intégration de tous les composants sera
effectuée, suivie de tests exhaustifs pour s'assurer que l'architecture répond aux critères de
disponibilité, de résilience et de performance.
Phase 5 : Déploiement () : Une fois tous les tests réussis et le personnel préparé, l'architecture
sera déployée en production. Pour l’instant cela n’est pas en production. Donc cette phase n’est
pas pour maintenant.
Ce planning est sujet à ajustements en fonction de l'avancement réel du projet. Il vise à assurer
une gestion méthodique du projet, depuis la planification initiale jusqu'à la mise en production,
tout en garantissant la qualité des résultats obtenus.
Conclusion
En conclusion, Telia Informatique a mis en place une infrastructure informatique
soigneusement conçue pour répondre à ses besoins opérationnels. Son réseau hybride,
composé à la fois d'une infrastructure filaire et d'une infrastructure sans fil, assure la
connectivité au sein de l'entreprise. Elle sert de fondation solide pour la réalisation du projet
visant à mettre en place une architecture hautement disponible, résiliente et performante.
Introduction partielle
La conception d'une architecture hautement disponible, résiliente et performante est une étape
cruciale dans notre démarche. Ce chapitre est dédié à l'exploration des principaux concepts
théoriques et à la mise en lumière des outils et technologies qui sous-tendent cette architecture
innovante.
Les systèmes informatiques ne sont pas à l'abri des pannes matérielles ou logicielles. La HA
vise à rendre un système capable de tolérer ces pannes sans impacter de manière significative
ses performances globales.
Évolutivité
Les besoins en ressources d'une application web peuvent varier en fonction de la demande. La
HA doit permettre une évolutivité horizontale pour que l'application puisse s'adapter aux pics
de charge en ajoutant automatiquement des ressources.
Sécurité
La sécurité des données et des opérations est une préoccupation majeure. La HA doit
s'accompagner de mesures de sécurité robustes pour protéger l'application contre les menaces
et les intrusions.
Équilibrage de charge
Les équilibreurs de charge sont des dispositifs matériels ou logiciels qui répartissent le trafic
entrant entre plusieurs serveurs ou instances d'application. L'équilibrage de charge garantit une
répartition égale de la charge de travail, réduisant ainsi les risques de surcharge d'un serveur
spécifique. En cas de défaillance d'un serveur, l'équilibreur de charge redirige le trafic vers les
serveurs restants. L’équilibrage de charge permet de réduire les risques de temps d'arrêt dû à
une demande excessive.
Clusterisation
La clusterisation implique la création d'un groupe de serveurs interconnectés qui travaillent
ensemble pour fournir un service. En cas de panne d'un nœud du cluster, les autres nœuds
peuvent prendre en charge le traitement des requêtes, assurant ainsi une continuité du service.
Les clusters sont couramment utilisés pour des applications telles que les bases de données, les
serveurs d'application et les systèmes de fichiers distribués.
Redondance
La redondance consiste à avoir des composants en double prêts à prendre le relais en cas de
panne. Cela peut inclure des disques durs redondants, des alimentations électriques redondantes
et même des centres de données redondants. La redondance vise à éliminer les points uniques
de défaillance.
Sauvegardes régulières
La sauvegarde régulière des données et des configurations est une mesure importante pour la
HA. En cas de panne majeure, les données peuvent être restaurées à partir des sauvegardes,
minimisant ainsi la perte de données et le temps d'indisponibilité
A l'échelle automatique
L'automatisation de la mise à l'échelle est un mécanisme essentiel pour maintenir la HA. Il
permet d'ajuster automatiquement les ressources en fonction de la charge de travail. Par
exemple, lorsqu'une application web connaît une augmentation soudaine du trafic, des instances
supplémentaires peuvent être déployées automatiquement pour répondre à la demande. Lorsque
la charge diminue, les ressources excédentaires peuvent être réduites pour économiser les coûts.
Planification de la maintenance
La maintenance régulière des serveurs et des composants est inévitable. Cependant, pour
maintenir la HA, il est essentiel de planifier les périodes de maintenance de manière à minimiser
l'impact sur l'application en dirigeant le trafic vers des serveurs alternatifs pendant la
maintenance.
Stratégies de cache
L'utilisation de caches pour stocker temporairement des données fréquemment demandées peut
réduire la charge sur les serveurs backend. Les caches peuvent être répartis pour garantir la
disponibilité même en cas de panne d'un nœud.
Mécanismes de basculement
Les mécanismes de basculement permettent de commuter rapidement d'un système ou d'un
composant à un autre en cas de défaillance. Cela peut impliquer l'utilisation de serveurs de
secours comme le kmaster2 (voir partie Pratique) dans notre cas ou de clusters de basculement
pour assurer une continuité de service.
Tests de résilience
En plus des tests de résistance, les tests de résilience simulent des scénarios de défaillance et
mesurent la capacité d'une application à se rétablir rapidement. Cela inclut la vérification de la
reprise après incident et la restauration de la fonctionnalité.
Réseaux redondants
Les réseaux redondants fournissent des chemins de communication de secours pour les données
et le trafic. Cela garantit que même en cas de panne de réseau, les données peuvent continuer à
circuler via des itinéraires alternatifs.
La résilience et la haute disponibilité (HA) sont des concepts cruciaux pour les applications en
raison de leur rôle essentiel dans la préservation de la continuité opérationnelle et de la
performance de ces systèmes.
Les perturbations, qu'elles soient dues à des pannes techniques, à des erreurs humaines ou à des
cyberattaques, sont inévitables. La résilience se traduit par la capacité à répondre rapidement à
ces perturbations en rétablissant le service, en restaurer les données, et en minimisant l'impact
sur les opérations.
Les architectures basées sur des micro services sont devenues courantes dans le développement
d'applications et d'ERP. Docker simplifie la gestion de ces micro services en permettant
d'emballer chaque composant dans un conteneur indépendant. Cela facilite le déploiement, la
mise à l'échelle et la mise à jour de ces micro services.
Gestion des dépendances
Docker résout les conflits de dépendances en isolant chaque application ou ERP avec toutes ses
dépendances dans un conteneur distinct. Ainsi, les développeurs et les administrateurs n'ont pas
à se soucier des interactions imprévues entre les bibliothèques ou les composants.
Orchestration avec Kubernetes
Docker s'intègre parfaitement avec Kubernetes, une plateforme d'orchestration de conteneurs,
pour simplifier la gestion de clusters de conteneurs à grande échelle. Cette combinaison offre
une solution puissante pour le déploiement et la gestion de conteneurs dans des environnements
complexes.
Rapidité de développement et de test
Les nodes/nœuds
Un nœud de cluster, dans le contexte de la gestion de clusters informatiques, désigne une entité
physique ou virtuelle qui fait partie intégrante d'un cluster, un ensemble de nœuds (ou serveurs)
interconnectés qui travaillent ensemble pour fournir des ressources informatiques partagées et
des services. Dans le cas de kubernetes un nœud (node) dans un cluster Kubernetes peut être
soit un nœud "worker" (worker node) soit un nœud "master" (master node) :
Le nœud "worker" est également connu sous le nom de nœud "minion" dans le contexte
de Kubernetes.
C'est le type de nœud sur lequel les charges de travail sont réellement exécutées, c'est-
à-dire les conteneurs.
Un cluster Kubernetes peut avoir plusieurs nœuds "worker," chacun pouvant exécuter
un ou plusieurs conteneurs.
Les nœuds "worker" sont responsables de l'exécution des pods, qui sont les plus petites
unités de déploiement dans Kubernetes. Ils s'assurent que les conteneurs au sein des
pods fonctionnent correctement.
L'API Server : Il expose l'API Kubernetes et gère toutes les opérations de l'API.
Le Controller Manager : Il surveille l'état des objets Kubernetes et prend des mesures pour
les faire correspondre à l'état souhaité.
Le Scheduler : Il décide sur quel nœud "worker" les pods doivent être planifiés en fonction
de divers critères.Et d'autres composants de gestion tels que le Cloud Controller Manager.
Réplicas
Les réplicas dans Kubernetes sont des instances identiques d'un ensemble de conteneurs. Vous
pouvez spécifier le nombre de réplicas souhaitées pour une application ou un service.
Kubernetes garantit que le nombre spécifié de réplicas est maintenu, ce qui contribue à la
disponibilité continue du service.
Pods
Un pod est l'unité de base de déploiement dans Kubernetes. Il peut contenir un ou plusieurs
conteneurs, partageant le même espace réseau et de stockage. Les pods facilitent la gestion des
dépendances et la répartition de la charge tout en maintenant l'isolation entre les conteneurs.
Kubelets
Les Kubelets sont des agents exécutés sur chaque nœud du cluster Kubernetes. Ils sont
responsables de l'exécution des conteneurs dans les pods et de la communication avec le
contrôleur de gestion. Les Kubelets jouent un rôle crucial dans la gestion de la redondance en
s'assurant que le nombre spécifié de réplicas est maintenu. Ils surveillent également l'état des
conteneurs et, en cas de défaillance, tentent de les redémarrer pour maintenir la disponibilité du
service.
Secrets kubernetes
La sécurité est une préoccupation majeure dans les déploiements Kubernetes. Kubernetes offre
une fonctionnalité de gestion des secrets qui permet de stocker de manière sécurisée des
informations sensibles telles que des clés d'API, des mots de passe et des certificats. Les secrets
Kubernetes sont cryptés et peuvent être montés dans les conteneurs en tant que systèmes de
fichiers ou utilisés comme variables d'environnement. Cela permet de protéger les informations
sensibles et de garantir leur accessibilité uniquement aux conteneurs autorisés.
Kubernetes control plane
Le plan de contrôle de Kubernetes est responsable de la gestion globale du cluster. Il comprend
des composants tels que l'API Server, le Controller Manager et le Scheduler, qui veillent à ce
que les pods soient répartis de manière équilibrée, que les nœuds soient surveillés et que les
tâches de gestion soient effectuées de manière sécurisée.
Network policies
Les politiques réseau Kubernetes permettent de définir des règles de sécurité pour le trafic
réseau entre les pods. Cela permet de restreindre la communication entre les conteneurs en
fonction de critères tels que les labels, les ports et les protocoles, renforçant ainsi la sécurité du
cluster.
Auto-guérison
Kubernetes surveille en permanence l'état des pods et peut redémarrer automatiquement les
conteneurs défaillants. Cette fonctionnalité garantit une résilience accrue de l'application,
minimisant ainsi les temps d'arrêt.
Mises à jour sans temps d'arrêt
Kubernetes permet des mises à jour continues de l'application sans interruption de service en
remplaçant progressivement les anciennes versions de pods par les nouvelles.
Distribution géographique
Pour une haute disponibilité géographique, Kubernetes prend en charge la distribution des pods
sur plusieurs régions, garantissant ainsi la continuité des services, même en cas de défaillance
de toute une région.
Evolutivité horizontale
Kubernetes offre la possibilité d'évoluer horizontalement en fonction de la charge de travail. Il
peut automatiquement augmenter ou réduire le nombre de réplicas en réponse à la demande,
garantissant ainsi des performances optimales et une haute disponibilité.
Répartition de la charge
Kubernetes gère intelligemment la répartition de la charge entre les différentes instances de
réplicas. Cela permet d'équilibrer efficacement la charge de trafic entrant, évitant ainsi la
surcharge d'un serveur ou d'une instance de conteneur spécifique.
4. Choix et Comparaison avec d'autres technologies similaires
Dans le paysage complexe des technologies d'orchestration de conteneurs et de virtualisation,
il est essentiel de comparer Docker et Kubernetes avec d'autres solutions disponibles, qu'elles
soient open-source ou propriétaires. Cette comparaison permet de mieux comprendre pourquoi
Docker et Kubernetes sont les choix préférés pour la conception de l'architecture que nous
envisageons.
Parmi les technologies libres et propriétaires, des alternatives majeures à Docker et Kubernetes
sont souvent considérées :
Technologies libres
Offre un environnement isolé pour les
Docker applications
Technologies propriétaires
Spécifique à la plateforme AWS
Amazon ECS
Nous avons opté pour docker et kubernetes pour les raisons suivantes :
Écosystème et adoption : Docker et Kubernetes bénéficient tous deux d'une large adoption
dans l'industrie, ce qui signifie qu'il existe une vaste communauté, une documentation
abondante et une multitude de ressources disponibles pour faciliter l'apprentissage et la
résolution de problèmes.
l'échelle automatique et de gestion de la haute disponibilité, ce qui en fait un choix idéal pour
les environnements de production complexes.
Flexibilité : Kubernetes est agnostique en termes d'infrastructure, ce qui signifie qu'il peut être
déployé sur divers fournisseurs de cloud et environnements locaux, offrant une flexibilité et une
portabilité accrues par rapport à certaines solutions propriétaires.
Sécurité : Les deux technologies mettent l'accent sur la sécurité, avec des mécanismes robustes
de confinement des conteneurs et de gestion des accès. (Gestion des secrets Kubernetes)
Docker et Kubernetes, tant que technologies libres offrent la base nécessaire pour déployer et
gérer efficacement des charges de travail dans un environnement dynamique et hautement
disponible.
TELIA-ERP est une solution logicielle complète d'Entreprise et de Gestion des Ressources
Humaines qui vise à optimiser la gestion des ressources humaines et des processus d'entreprise
au sein des organisations. Cette plateforme polyvalente offre un ensemble de fonctionnalités
robustes qui couvrent divers aspects essentiels de la gestion d'entreprise, ce qui en fait un outil
précieux pour les entreprises de toutes tailles.
Gestion des Employés : Les responsables des ressources humaines utilisent TELIA ERP pour
enregistrer les informations des employés, gérer les congés, et générer des rapports sur les
performances.
Comptabilité et Finances : Les comptables utilisent l'ERP pour suivre les transactions
financières, produire des rapports financiers et gérer les budgets.
Gestion des Stocks : Les responsables de la chaîne d'approvisionnement utilisent TELIA ERP
pour gérer les niveaux de stock, suivre les mouvements de stock et prévoir les besoins en
approvisionnement.
Ventes et Marketing : Les équipes de vente et de marketing utilisent l'ERP pour suivre les
prospects, gérer les opportunités de vente et analyser les performances des campagnes.
Nœuds du cluster : Nous avons configuré un cluster Kubernetes avec deux nœuds travailleurs
pour gérer la charge des conteneurs et deux nœuds maîtres. Le nœud maître supervise et
coordonne les opérations du cluster.
Répartition des services : TELIA ERP est composé de plusieurs modules tels que la gestion
des ressources humaines, la gestion financière, la gestion des stocks. Nous allons déployés ces
modules comme un service Kubernetes. Par exemple, la gestion des ressources humaines, la
gestion financière seront un service.
Redondance : Pour assurer la redondance et la résilience, nous allons configurer des réplicas
pour chaque service. Le choix des deux nœuds maîtres est de garantir la disponibilité et la
continuité des services du cluster en cas de panne d’un des nœuds maîtres.
Répliques du serveur d'application : Pour le serveur d'application TELIA ERP, nous allons
créer trois répliques, ce qui garantira la disponibilité des services et la répartition de la charge,
même en cas de défaillance d'un nœud ou d'un conteneur.
Conclusion
Dans ce chapitre nous avons exploré les concepts de haute disponibilité et de résilience, en
comprenant les enjeux qui les entourent dans le contexte des applications et ERP.Nous avons
également présenté Docker et Kubernetes, qui sont des outils de conteneurisation et
d'orchestration. Ce chapitre explique les bases théoriques essentielles pour notre projet, en
nous préparant à mettre en œuvre une architecture robuste et performante pour TELIA ERP.
Introduction partielle
Ce chapitre marque une étape cruciale de notre projet de mise en place d'une architecture
hautement disponible, résiliente et performante pour TELIA ERP. Nous passerons de la théorie
à la pratique en détaillant les étapes concrètes de mise en place de Docker et Kubernetes pour
notre application.
Cette commande vérifie que l'installation du moteur Docker a réussie en exécutant l’image
“hello-world“.
su - postgres
Le but ici c’est de créer une sauvegarde à l’état actuel de la base de donnée qui sera utilisé pour
la création de nos images docker.
mkdir db_image
cp /var/lib/pgsql/12/data/backup.sql db_image/
Création du fichier de configuration de la base de donnée
vim Dockerfile
FROM postgres : 12 : Cette commande indique que l'image de base pour notre nouvelle image
Docker est l'image PostgreSQL version 12
Copy backup.sql /docker-entrypoint-initdb.d/ : Cette commande copie le fichier nommé
"backup.sql" qui est la sauvegarde de notre base de donnée.
CMD ["docker-entrypoint.sh", "postgres"] : Cela déclare que le script d'entrée "docker-
entrypoint.sh" doit être exécuté avec l'argument "postgres" lorsque le conteneur démarre, ce qui
lancera le serveur PostgreSQL avec les configurations appropriées.
Création d’image docker
Cette commande est utilisée pour construire une image Docker à partir d'un Dockerfile. Cela
nous permet de créer une image personnalisée que nous pouvons ensuite utiliser pour exécuter
des conteneurs.
cp /opt/odoo/odoo14/debian/odoo.conf
/opt/odoo/odoo14/addons_customs/custom_odoo.conf
vi Dockerfile
FROM odoo :14.0 : Cette commande indique que l'image de base pour notre nouvelle image
Docker est l'image Odoo version 14.0.
COPY . /mnt/extra-addons:Cette commande copie tous les fichiers et répertoires du répertoire
local dans le répertoire `/mnt/extra-addons` à l'intérieur du conteneur. Cela nous permet
d’ajouter nos modules personnalisés à Odoo.
CMD ["odoo", "-c", "/etc/odoo/odoo.conf"] : Cette commande définit la commande par
défaut à exécuter lorsque le conteneur démarre. Le fichier de configuration contient des
paramètres spécifiques pour configurer l'instance Odoo qui sera exécutée dans le conteneur.
Edition du fichier odoo.con
vi /opt/odoo/odoo14/addons_customs
docker image ls
Cette commande affiche une liste des images Docker de la base de donnée avec des
informations telles que le nom de l'image, son ID, sa taille, et son étiquette (tag).
Cette commande est utilisée pour exécuter un conteneur Docker nommé "mon_conteneur_db"
à partir de l'image "db_image" avec l'étiquette "1.0" (c'est-à-dire la version 1.0 de cette image).
docker image ls
Cette commande affiche une liste des images Docker de l’application avec des informations
telles que le nom de l'image, son ID, sa taille, et son étiquette (tag).
Une fois cette commande, un conteneur sera créé à partir de l'image "app_image:1.0" avec le
nom "mon-conteneur" et il s'exécutera en arrière-plan.
docker ps
Cette commande est utilisée pour lister les conteneurs Docker en cours d'exécution sur le
système.
On a préalablement créé un compte docker hub et aussi un repository privée dans lequel nos
images docker seront installé.
Pour db_image
Connexion
locker login
Changer l’étiquette de
Résultats : Interface qui montre notre db_image dans le repository sur docker hub
Pour app_image
Changer l’étiquette
Résultats : Interface qui montre notre app_image dans le repository sur docker hub
sudocommande
Cette yum-config-manager --add-repo
permet d’ajout https://download.docker.com/linux/centos/docker-
des paquets par défaut.
ce.repo
Création du fichier
vi /etc/yum.repos.d/kubernetes.repo
vi /etc/hosts
Ainsi nous avons éditer le fichier en attribuant différents noms aux hôtes et en leurs affectant
des adresses IP. Nous avons également des noms de domaine pour facilement accéder aux
serveurs à travers leurs noms.
Désactivons l’espace d’échange(swap)
Désactivons SE Linux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo vi /etc/sysctl.d/k8s.conf
Ensuite, mettre à jour les paramètres des iptables pour assurer une bonne communication en
réseau et un routage au cluster Kubernetes.
Ajout des règles de pare-feu de cette manière uniquement sur les nœuds maîtres
Kmaster2
Nous allons appliquer les mêmes paramètres de configuration qu’à l’étape 2 seulement que
quelques points différents à savoir :
Kworker2
Même configuration pour Kworker2 à part le changement du nom d’hôte : hostnamectl set-
hostname kmaster2.
Kmaster1
kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/v0.22.3/documentation/kube-flannel.yml
Cette commande permet d’afficher la liste des nœuds (nodes) du cluster Kubernetes
actuellement disponibles ainsi que les pods disponibles
Kmaster2
La configuration est faite de la même manière que kmaster1 et en l’adaptant juste aux
identifiant de kmaster2.
3.2.Formation du cluster
Cette commande permet de créer un jeton d’adhésion .Ce qui va permettre à tous les nœuds de
pour pouvoir rejoindre le cluster .
Adhésion du nœud kworker2 en utilisant le jeton généré par le master node. Même
commande que ci-dessus
4.1.Déploiement initial
Ici nous créons le fichier db-deployment pour le déploiement de l’image docker de notre base
de donnée en fessant un vi db-deployment.yaml
Nous créons également le fichier db-deployement pour le déploiement de notre image docker
de l’application en fessant un vi app-deployment.yaml
vi db-service.yaml
vi db-config.yaml
Pour le fichier db-secret nous allons d’abord pour une question de sécurité mettre notre mot
de passe en base64
Après cela nous obtenions notre mot de passe en base64 comme vous le constatez ci-dessus.
Maintenant nous pouvons créer le fichier lui-même
On constate que nos deux conteneurs sont correctement installer et que peut accéder à notre
application via l’interface web.
Conclusion
Ce chapitre a été une plongée profonde dans l'implémentation concrète de notre architecture
pour TELIA ERP, en utilisant Docker et Kubernetes comme piliers technologiques.
L'ensemble du processus de mise en place a été minutieusement documenté pour servir de
référence précieuse pour les futurs déploiements et projets similaires. Ce chapitre représente
une étape cruciale de notre projet, transformant la théorie en réalité opérationnelle.
Tout d'abord, nous avons mis en place notre architecture en utilisant des serveurs virtuels, ce
qui a été une étape importante pour garantir la flexibilité et la scalabilité de notre infrastructure.
Cependant les machines virtuelles possèdent des limites tels les surcharges des ressources, la
complexité de gestion qui remettent en cause la haute disponibilité, la résilience et la
performance de notre architecture. C’est fort de ce constat que nous recommandons à Telia
Informatique d'adopter le cloud pour mettre en place cette architecture. Il est impératif de
prendre en compte les avantages manifestes du cloud pour optimiser notre architecture. La
transition d'une infrastructure qui repose sur des serveurs virtuels à une solution cloud comporte
divers avantages clés :
Élasticité et Scalabilité : Le cloud offre une capacité d'ajustement automatique des ressources
en fonction de la demande, ce qui permet une scalabilité plus rapide et efficace.
Haute Disponibilité : Les fournisseurs de cloud offrent des niveaux de disponibilité élevés
grâce à leurs data centers géographiquement distribués, minimisant ainsi les risques de pannes.
Gestion Simplifiée : Les services cloud incluent souvent des outils de gestion avancés qui
facilitent la surveillance, la sauvegarde et la gestion des infrastructures.
Coûts Optimisés : En utilisant le modèle de paiement à l'utilisation, vous ne payez que pour
les ressources que vous consommez, ce qui peut réduire les coûts par rapport à la gestion de
serveurs virtuels.
Services Gérés : Le cloud propose un large éventail de services gérés pour les conteneurs,
l'orchestration, et plus, simplifiant le déploiement et la gestion de solutions comme Docker et
Kubernetes.
En Somme, l'utilisation du cloud pour notre architecture peut non seulement améliorer la
disponibilité et la performance, mais aussi simplifier la gestion et potentiellement réduire les
coûts.
Conclusion générale
En conclusion, la mise en place de cette architecture hautement disponible, résiliente et
performante avec Docker et Kubernetes représente une avancée majeure dans la gestion des
ressources informatiques pour TELIA INFORMATIQUE. Ce projet a été conçu en réponse à
un besoin essentiel de l'entreprise : garantir une continuité opérationnelle, maximiser les
performances de l'infrastructure informatique et renforcer la résilience face aux perturbations
technologiques modernes.
L'analyse approfondie de Docker et Kubernetes a permis de mettre en évidence leur rôle
essentiel dans la création d'un environnement informatique hautement performant. Docker offre
la capacité d'emballer des applications et leurs dépendances dans des conteneurs, tandis que
Kubernetes coordonne efficacement ces conteneurs pour garantir une gestion fluide, une
évolutivité dynamique et une haute disponibilité. Cette combinaison offre à TELIA
INFORMATIQUE la flexibilité nécessaire pour s'adapter rapidement aux besoins changeants
du marché et pour maintenir une infrastructure informatique de pointe.
Malgré les défis inhérents à la mise en place de cette architecture, tels que la planification
minutieuse, les coûts initiaux et les ajustements nécessaires, il est indiscutable que cette
démarche révolutionne la manière dont TELIA INFORMATIQUE gère ses ressources
informatiques. Elle permet non seulement d'assurer une continuité opérationnelle, mais aussi
d'optimiser l'utilisation des ressources et de favoriser la croissance de l'entreprise.
Ce projet a également souligné l'importance d'une formation adéquate pour tirer pleinement
parti de l'environnement Docker et Kubernetes déployé. Une maîtrise de ces technologies est
essentielle pour garantir leur efficacité continue et pour permettre à TELIA INFORMATIQUE
de s'adapter rapidement aux évolutions technologiques futures.
En fin de compte, la mise en place de cette architecture hautement disponible, résiliente et
performante avec Docker et Kubernetes représente une étape majeure vers la création d'un
environnement informatique agile, robuste et capable de relever les défis du monde des affaires
en constante évolution. Cette démarche positionne TELIA INFORMATIQUE pour une
croissance continue et une compétitivité accrue sur le marché numérique en perpétuelle
évolution.
Bibliographies
Hightower, K. et Burns, B. (2017). Kubernetes Up and Running: Dive into the Future of
Infrastructure. Paris, Editions O'Reilly Media, 202 pages. Download Kubernetes: Up and
Running: Dive into the Future of Infrastructure by Brendan Burns, Joe Beda, Kelsey Hightower
(zlib.pub), consulté le 14/09/2023
Poulton, N. (2018). Docker Deep Dive. New York, Apress, 288 pages. Docker Deep Dive
(ipfs.io), consulté le 14/09/2023.
Poulton, N. (2019). The Kubernetes Book. San Francisco, Editions O'Reilly Media, 300 pages.
The Kubernetes Book, consulté le 14/09/2023.
Lankouande Faustine (2023). Etude et mise en place d’une solution de haute disponibilité dans
un environnement virtuel. Rapport de stage, Option Technologies des Réseaux et Sytèmes, ST,
Université Aube Nouvelle, Mars 2023, Ouagadougou, Burkina Faso, 59 pages.
Webographie
Annexe
Annexe1 : Installation et configuration de TELIA ERP
Installation de PostgresSQL
/usr/pgsql-12/bin/postgresql-12-setup initdb
On remarque que notre base de donnée postgresql est belle et bien fonctionnelle.
su - postgres -c "psql"
\password postgres
cd /var/lib/pgsql/12/data
vi postgresql.conf
vi pg_hba.conf
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-
0.12.6-1.centos7.x86_64.rpm
su – odoo14
Source sandbox_odoo14/bin/activate
mkdir /opt/odoo/odoo14/addons_customs
vi /opt/odoo/odoo14/debian/odoo.conf
db_host : 192.168.1.53
db_ port : 5432
db_user : odoo14
db_host : false
logfile : /var/log/odoo14/odoo14.log
Création du répertoire de fichier
mkdir -p /var/log/odoo14
Changement de propriétaire
vi /etc/system/system/odoo14.service
systemctl daemon-reload
Cette commande permet de voir l’état de service de odoo14.Nous constatons que odoo a été
bien installé et fonctionne correctement (état : Actif)
Prochaine reconnexion
Saisissons l’adresse 192.168.1.52 :8069 sur notre navigateur Google chrome puis renseigner le
nom d’utilisateur et le mot de passe.
Conclusion ............................................................................................................................ 58
PERSPECTIVES & SUGGESTIONS ..................................................................................... 59
Conclusion générale ................................................................................................................. 60
Bibliographies .......................................................................................................................... 61
Webographie ............................................................................................................................. 62
Annexe ........................................................................................................................................ I