Dans cette présentation, nous donnons plusieurs réponses aux grandes questions classiques associées au déploiement avec Docker. Entre autres :
- comment orchestrer des déploiements non triviaux (plusieurs containers sur plusieurs machines) ?
- comment avoir des métriques sur les ressources utilisées par les containers ?
- comment optimiser les performances de Docker, en particulier pour des applications où ces performances sont critiques ?
- comment intégrer Docker avec des outils de "configuration management" comme Puppet, Chef, Salt, Ansible ?
- comment implémenter la "service discovery", ou, de manière générale, connecter entre eux plusieurs containers ?
La présentation a été donnée Lundi 8 Septembre à Paris dans les locaux de Zenika, cabinet spécialisé dans l'architecture informatique et les méthodes Agiles possédant une triple compétence de conseil, réalisation et formation.
Mon cours de virtualisation des conteneurs explore les bases et les technologies avancées de la virtualisation, en mettant l'accent sur l'utilisation de conteneurs pour l'efficacité et la portabilité des applications. Les participants acquièrent des compétences essentielles pour déployer, gérer et optimiser des environnements conteneurisés.
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
4ème workshop @Oxalide, animé par Julien Follenfant, Théo Chamley (@MrTrustor) et Ludovic Piot (@lpiot), le 24 mai 2016.
Une entrée en matière sur la technologie Docker et son écosystème à date : pourquoi un tel engouement, à quel point Docker s'inscrit parfaitement dans la démarche DevOps…
Un TP sur le montage d'un cluster ElasticSearch avec le Dockerfile.
Une démo de kubernetes.
Subject: Oxalide's workshop about an overview of Docker and its ecosystem.
Date: 24-mai-2016
Speakers: Julien Follenfant (@Oxalide), Théo Chamley (@MrTrustor, @Oxalide) and Ludovic Piot (@lpiot, @Oxalide)
Language: french
Lien SpeakerDeck : https://speakerdeck.com/lpiot/oxalide-workshop-number-4-docker-des-tours-dans-le-petit-bassin
Lien SlideShare : http://www.slideshare.net/LudovicPiot/workshop-4-docker-des-tours-dans-le-petit-bassin
YouTube Video capture: https://youtu.be/xJuRS6QYAAk
Main topics:
* Introduction 15 min (Ludovic Piot)
** D’où vient Docker ?
** Les principales caractéristiques de Docker
*** POrtable (package)
*** DIsposable (cattle vs. pet)
*** LIve (git style)
*** SOcial (registry / Github style)
* Hands-on #1 - Mon premier container (Julien Follenfant 35 min)
** Un tour d’horizon de DockerHub
** Installation de Docker Toolbox
** Création d’un Dockerfile (outil stand-alone)
** Introspecter un container
** Configurer un container
** Monter un cluster Elasticsearch 3 nœuds
* Comment ça marche ? (Théo Chamley 20 min)
** Namespaces & cgroups
** Layered FS (les poupées russes)
** Cache Image
** Networking
** Volumes
* Nouvelles collaborations (Ludovic Piot 10 min)
** CaaS (infra + cluster de containers vs. containers + appli)
* Ecosystème 20 min
** Les produits Docker, inc. (Ludovic Piot)
** Les alternatives (CoreOS, OpenContainer Initiative, Warden/Garden) (Ludovic Piot)
** La registry (Docker Registry, Nexus) (Ludovic Piot)
** L’autodiscovery (Consul, etcd, ZooKeeper) (Ludovic Piot)
** Les composants réseaux (haproxy, traefik, zipnish) (Julien Follenfant)
** Les orchestrateurs (kubernetes (Théo Chamley), Mesos/Marathon, Swarm, Fleet) (Ludovic Piot)
** Les solutions PaaS/CaaS intégrées (OpenShift, Rancher (Théo Chamley), Deis, CloudFoundry) => screenshots (Ludovic Piot)
** Les services de cloud publics (AWS ECS et ECR, GKE) (Ludovic Piot)
* Demo - utilisation de Kubernetes 15 min (Théo Chamley)
* Questions / Réponses
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
4ème workshop @Oxalide, animé par Julien Follenfant, Théo Chamley (@MrTrustor) et Ludovic Piot (@lpiot), le 24 mai 2016.
Une entrée en matière sur la technologie Docker et son écosystème à date : pourquoi un tel engouement, à quel point Docker s'inscrit parfaitement dans la démarche DevOps…
Un TP sur le montage d'un cluster ElasticSearch avec le Dockerfile.
Une démo de kubernetes.
Main topics:
* Introduction 15 min (Ludovic Piot)
** D’où vient Docker ?
** Les principales caractéristiques de Docker
*** POrtable (package)
*** DIsposable (cattle vs. pet)
*** LIve (git style)
*** SOcial (registry / Github style)
* Hands-on #1 - Mon premier container (Julien Follenfant 35 min)
** Un tour d’horizon de DockerHub
** Installation de Docker Toolbox
** Création d’un Dockerfile (outil stand-alone)
** Introspecter un container
** Configurer un container
** Monter un cluster Elasticsearch 3 nœuds
* Comment ça marche ? (Théo Chamley 20 min)
** Namespaces & cgroups
** Layered FS (les poupées russes)
** Cache Image
** Networking
** Volumes
* Nouvelles collaborations (Ludovic Piot 10 min)
** CaaS (infra + cluster de containers vs. containers + appli)
* Ecosystème 20 min
** Les produits Docker, inc. (Ludovic Piot)
** Les alternatives (CoreOS, OpenContainer Initiative, Warden/Garden) (Ludovic Piot)
** La registry (Docker Registry, Nexus) (Ludovic Piot)
** L’autodiscovery (Consul, etcd, ZooKeeper) (Ludovic Piot)
** Les composants réseaux (haproxy, traefik, zipnish) (Julien Follenfant)
** Les orchestrateurs (kubernetes (Théo Chamley), Mesos/Marathon, Swarm, Fleet) (Ludovic Piot)
** Les solutions PaaS/CaaS intégrées (OpenShift, Rancher (Théo Chamley), Deis, CloudFoundry) => screenshots (Ludovic Piot)
** Les services de cloud publics (AWS ECS et ECR, GKE) (Ludovic Piot)
* Demo - utilisation de Kubernetes 15 min (Théo Chamley)
* Questions / Réponses
An exercise I wrote for my classroom in 2008. It consists in an exercise for Solaris 10 (UNIX) and its command lines. I took as an inspiration the video game Phoenix Wright ;). It is in french only.
---
Un exercice que j'ai écrit en 2008 pour ma classe. Il traite de Solaris 10 (UNIX) et ses lignes de commandes. J'ai pris pour influence le jeu vidéo Phoenix Wright ;). Exercice en français.
Bien que Docker soit facile d'utilisation, construire une image reste un exercice compliqué.
Optimisation, layers, et sécurité nécessitent de s'abstraire des Dockerfile basiques qu'on peut trouver sur internet.
Dans ce BBL, nous verrons comment bien packager une application Spring Boot dans une image Docker/OCI.
Nous allons parcourir les bonnes pratiques préconisées par Spring, les pièges à éviter, comment bien écrire un Dockerfile pour optimiser la construction et l'image finale pour une exécution dans Kubernetes et nous verrons aussi des moyens alternatifs de construction d'images Spring Boot et l'outillage d'analyse à ajouter à votre toolbox.
Document de formation[FR] pour l'apprentissage de Archlinux et la protection de l'information. Intégration d'environnement de travail et de suite logicielle(calcul scientifique, virtualisation, gestion biblio, gestionnaire mot de passe, etc..) pour l'internet des objets avec l'Open Source Hardware (Arduino, RaspberryPi). Optimisation IDE sous langage de programmation en python.
Odoo ERP software helps accounting departments process accounts payable, accounts receivable, and payroll. It allows users to create and send professional invoices, receive online payments, and automate payment reminders. The accounting features are connected to other Odoo apps like sales, purchases, inventory, and subscriptions. It supports features like managing charts of accounts, taxes, prices, currencies, payments, bank reconciliation, and generating key financial reports.
Odoo Manufacturing Management helps manufacturers design, manufacture, and distribute products by managing bill of materials, production planning, work order execution, and finished good production. There are two ways to manage manufacturing: without routing/work orders, where all work is done in one step; and with routing/work orders, which provides more granular control by breaking production into individual work orders scheduled at work centers. The manufacturing process with routing involves: 1) creating manufacturing orders; 2) scheduling associated work orders; and 3) performing scheduled work and recording production.
Publicité
Contenu connexe
Similaire à optimadata.nl-Comment exécuter Postgres sur Docker partie 3.pdf (20)
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
4ème workshop @Oxalide, animé par Julien Follenfant, Théo Chamley (@MrTrustor) et Ludovic Piot (@lpiot), le 24 mai 2016.
Une entrée en matière sur la technologie Docker et son écosystème à date : pourquoi un tel engouement, à quel point Docker s'inscrit parfaitement dans la démarche DevOps…
Un TP sur le montage d'un cluster ElasticSearch avec le Dockerfile.
Une démo de kubernetes.
Subject: Oxalide's workshop about an overview of Docker and its ecosystem.
Date: 24-mai-2016
Speakers: Julien Follenfant (@Oxalide), Théo Chamley (@MrTrustor, @Oxalide) and Ludovic Piot (@lpiot, @Oxalide)
Language: french
Lien SpeakerDeck : https://speakerdeck.com/lpiot/oxalide-workshop-number-4-docker-des-tours-dans-le-petit-bassin
Lien SlideShare : http://www.slideshare.net/LudovicPiot/workshop-4-docker-des-tours-dans-le-petit-bassin
YouTube Video capture: https://youtu.be/xJuRS6QYAAk
Main topics:
* Introduction 15 min (Ludovic Piot)
** D’où vient Docker ?
** Les principales caractéristiques de Docker
*** POrtable (package)
*** DIsposable (cattle vs. pet)
*** LIve (git style)
*** SOcial (registry / Github style)
* Hands-on #1 - Mon premier container (Julien Follenfant 35 min)
** Un tour d’horizon de DockerHub
** Installation de Docker Toolbox
** Création d’un Dockerfile (outil stand-alone)
** Introspecter un container
** Configurer un container
** Monter un cluster Elasticsearch 3 nœuds
* Comment ça marche ? (Théo Chamley 20 min)
** Namespaces & cgroups
** Layered FS (les poupées russes)
** Cache Image
** Networking
** Volumes
* Nouvelles collaborations (Ludovic Piot 10 min)
** CaaS (infra + cluster de containers vs. containers + appli)
* Ecosystème 20 min
** Les produits Docker, inc. (Ludovic Piot)
** Les alternatives (CoreOS, OpenContainer Initiative, Warden/Garden) (Ludovic Piot)
** La registry (Docker Registry, Nexus) (Ludovic Piot)
** L’autodiscovery (Consul, etcd, ZooKeeper) (Ludovic Piot)
** Les composants réseaux (haproxy, traefik, zipnish) (Julien Follenfant)
** Les orchestrateurs (kubernetes (Théo Chamley), Mesos/Marathon, Swarm, Fleet) (Ludovic Piot)
** Les solutions PaaS/CaaS intégrées (OpenShift, Rancher (Théo Chamley), Deis, CloudFoundry) => screenshots (Ludovic Piot)
** Les services de cloud publics (AWS ECS et ECR, GKE) (Ludovic Piot)
* Demo - utilisation de Kubernetes 15 min (Théo Chamley)
* Questions / Réponses
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
4ème workshop @Oxalide, animé par Julien Follenfant, Théo Chamley (@MrTrustor) et Ludovic Piot (@lpiot), le 24 mai 2016.
Une entrée en matière sur la technologie Docker et son écosystème à date : pourquoi un tel engouement, à quel point Docker s'inscrit parfaitement dans la démarche DevOps…
Un TP sur le montage d'un cluster ElasticSearch avec le Dockerfile.
Une démo de kubernetes.
Main topics:
* Introduction 15 min (Ludovic Piot)
** D’où vient Docker ?
** Les principales caractéristiques de Docker
*** POrtable (package)
*** DIsposable (cattle vs. pet)
*** LIve (git style)
*** SOcial (registry / Github style)
* Hands-on #1 - Mon premier container (Julien Follenfant 35 min)
** Un tour d’horizon de DockerHub
** Installation de Docker Toolbox
** Création d’un Dockerfile (outil stand-alone)
** Introspecter un container
** Configurer un container
** Monter un cluster Elasticsearch 3 nœuds
* Comment ça marche ? (Théo Chamley 20 min)
** Namespaces & cgroups
** Layered FS (les poupées russes)
** Cache Image
** Networking
** Volumes
* Nouvelles collaborations (Ludovic Piot 10 min)
** CaaS (infra + cluster de containers vs. containers + appli)
* Ecosystème 20 min
** Les produits Docker, inc. (Ludovic Piot)
** Les alternatives (CoreOS, OpenContainer Initiative, Warden/Garden) (Ludovic Piot)
** La registry (Docker Registry, Nexus) (Ludovic Piot)
** L’autodiscovery (Consul, etcd, ZooKeeper) (Ludovic Piot)
** Les composants réseaux (haproxy, traefik, zipnish) (Julien Follenfant)
** Les orchestrateurs (kubernetes (Théo Chamley), Mesos/Marathon, Swarm, Fleet) (Ludovic Piot)
** Les solutions PaaS/CaaS intégrées (OpenShift, Rancher (Théo Chamley), Deis, CloudFoundry) => screenshots (Ludovic Piot)
** Les services de cloud publics (AWS ECS et ECR, GKE) (Ludovic Piot)
* Demo - utilisation de Kubernetes 15 min (Théo Chamley)
* Questions / Réponses
An exercise I wrote for my classroom in 2008. It consists in an exercise for Solaris 10 (UNIX) and its command lines. I took as an inspiration the video game Phoenix Wright ;). It is in french only.
---
Un exercice que j'ai écrit en 2008 pour ma classe. Il traite de Solaris 10 (UNIX) et ses lignes de commandes. J'ai pris pour influence le jeu vidéo Phoenix Wright ;). Exercice en français.
Bien que Docker soit facile d'utilisation, construire une image reste un exercice compliqué.
Optimisation, layers, et sécurité nécessitent de s'abstraire des Dockerfile basiques qu'on peut trouver sur internet.
Dans ce BBL, nous verrons comment bien packager une application Spring Boot dans une image Docker/OCI.
Nous allons parcourir les bonnes pratiques préconisées par Spring, les pièges à éviter, comment bien écrire un Dockerfile pour optimiser la construction et l'image finale pour une exécution dans Kubernetes et nous verrons aussi des moyens alternatifs de construction d'images Spring Boot et l'outillage d'analyse à ajouter à votre toolbox.
Document de formation[FR] pour l'apprentissage de Archlinux et la protection de l'information. Intégration d'environnement de travail et de suite logicielle(calcul scientifique, virtualisation, gestion biblio, gestionnaire mot de passe, etc..) pour l'internet des objets avec l'Open Source Hardware (Arduino, RaspberryPi). Optimisation IDE sous langage de programmation en python.
Odoo ERP software helps accounting departments process accounts payable, accounts receivable, and payroll. It allows users to create and send professional invoices, receive online payments, and automate payment reminders. The accounting features are connected to other Odoo apps like sales, purchases, inventory, and subscriptions. It supports features like managing charts of accounts, taxes, prices, currencies, payments, bank reconciliation, and generating key financial reports.
Odoo Manufacturing Management helps manufacturers design, manufacture, and distribute products by managing bill of materials, production planning, work order execution, and finished good production. There are two ways to manage manufacturing: without routing/work orders, where all work is done in one step; and with routing/work orders, which provides more granular control by breaking production into individual work orders scheduled at work centers. The manufacturing process with routing involves: 1) creating manufacturing orders; 2) scheduling associated work orders; and 3) performing scheduled work and recording production.
Employees in service companies use timesheets to track the time they spend each day working on different projects and clients. They add a line to their timesheet for each new project or task, noting the time spent. At the end of the day, all the time worked must be accounted for. The timesheet system allows employees to enter as many hours as they actually work each day rather than controlling hours. It helps management track task allocation and costs. Odoo Timesheet Management software provides features like approving timesheets, managing activities and employees, monitoring performance by project or task, and automatically invoicing based on hours worked.
Odoo Employee Management helps manage HR functions like recruitment, employee data, contracts, and ensures everyday HR processes are easy to access. It helps track employee details like job title, salary, leave, attendance, and timesheets effectively to generate monthly payrolls. Odoo allows information to be easily scanned and assembled across departments while setting privileges over data distribution among HR and staff. The system takes care of all human resource aspects with notifications for new leave requests and appraisals for transparent internal communication.
Odoo Expense Management allows employees to record and submit expenses with attached receipts. Managers can then quickly approve or reject expense submissions with reasons. Approved expenses are sent to accountants to record in the books and process invoices and payments, while providing notifications. It offers features for recording expenses, attaching receipts, submitting expenses for review, tracking submission status, reviewing, approving or rejecting submissions, and generating expense reports.
Odoo Project Management helps manage projects, tasks, resources, budgets, and costs. It allows viewing scheduled tasks in Gantt and calendar views. Users can work on tasks and issues using Kanban or list views. Odoo Task Management helps track tasks with different stages and allows collaboration between employees and customers to complete tasks on time. The software features include managing project templates, stages, stakeholders, budgets, resource assignments, forecasts, documents, and dashboards as well as generating analysis reports.
Enquête besoins en main d’oeuvre 2025 Région Provence-Alpes-Côte d'AzurFrance Travail
Pour l'année 2025, les intentions d'embauche des employeurs s'élèvent à plus de 220 800 projets de recrutement pour la région Provence-Alpes-Côte d'Azur et la Principauté de Monaco, représentant 9 % des estimations nationales (2,4 millions de projets, soit une baisse de 12,5 % par rapport à 2024).
Part des demandeurs d'emploi indemnisables : situation au 30 septembre 2024France Travail
Fin septembre 2024, 70,0 % des personnes inscrites à France Travail en catégories A, B, C ont un droit ouvert à l’indemnisation. Parmi celles-ci, 70,0 % sont indemnisées.
Ainsi, 49,0% des personnes inscrites à France Travail en catégories A, B, C sont indemnisées.
Les ressources disponibles produites par le Réseau Équin :
Vous êtes 👩💼👨💼 Conseillers entreprise, installation-transmission, chargés de mission économie ou élevage, vous accompagnez des porteurs de projet en lien avec la filière équine ce webinaire est fait pour vous !
Le Réseau Équin produit des ressources clés et des références sur le fonctionnement technico-économique des exploitations et vous donne des outils concrets à mobiliser dans vos accompagnements.
Vous trouverez dans ce replay des chiffres clés sur la filière équine, des ressources produites par le Réseau et un témoignage de conseiller qui illustre comment il utilise ces documents au quotidien dans son métier d’accompagnement.
optimadata.nl-Comment exécuter Postgres sur Docker partie 3.pdf
1. 1/15
11 décembre 2019
Comment exécuter Postgres sur Docker partie 3
optimadata.nl/blogs/1/nlm8ci-how-to-run-postgres-on-docker-part-3
Craig Healey 11-12-2019 14:23
Catégorie: Blog, Open Source, PostgreSQL, Technologie
Dans un article précédent, j’ai déployé une base de données PostgreSQL dans un
conteneur à partir d’une image standard. Je vais maintenant examiner le déploiement
d’un cluster PostgreSQL. Eh bien, en quelque sorte. PostgreSQL utilise le terme cluster
pour désigner « une collection de bases de données gérées par une seule instance de
serveur PostgreSQL ». Je l’utilise dans un sens plus général, pour faire référence à la
haute disponibilité.
Réplication de base à l’aide d’un projet prédéfini
PostgreSQL a une réplication en continu depuis la version 9.0, où les journaux WAL sont
transférés entre la base de données Master et l’esclave en lecture seule (voir Blog de
SeveralNines pour plus de détails). C’est assez facile à configurer, alors que peut ajouter
Docker? Eh bien, vous pouvez utiliser la commande docker-compose et le fichier docker-
compose.yml pour contrôler un certain nombre de conteneurs Docker. Ainsi, la base de
données Master and Slave sera traitée comme une seule unité.
Je vais baser cela sur Article de Hamed Momeni sur Medium, mais avec quelques
modifications.
2. 2/15
Tout d’abord, nous devons créer un réseau docker afin que nos conteneurs puissent
communiquer entre eux :
docker network create bridge-docker
Ensuite, retirez les fichiers et répertoires de BitBucket :
git clone https://bitbucket.org/CraigOptimaData/docker-pg-
cluster.git
cd dans le répertoire nouvellement créé nommé docker-pg-cluster.
cd docker-pg-cluster
Ensuite, il vous suffit d’exécuter la commande docker-compose up:
docker-compose up
Vous devrez attendre un peu car il a quelques choses à faire lors de la construction des
images du maître et de l’esclave. Vous verrez quelques lignes rouges avertissant qu’il doit
retarder la configuration du paquet, mais c’est normal. Finalement, il finira de construire
les images et les exécutera réellement. À ce stade, il doit afficher les journaux de
pg_master_1 et de pg_slave_1 au fur et à mesure de leur initialisation. Si tout s’est bien
passé, les journaux cesseront de défiler vers le haut de l’écran.
3. 3/15
Si tout s’est bien passé, le maître et l’esclave sont opérationnels. Mais comme nous avons
démarré la commande docker-compose sans l’indicateur détaché, afin que nous puissions
voir les erreurs, nous devons l’arrêter et la redémarrer en arrière-plan. Ctl-C sortira du
conteneur et, par conséquent, l’arrêtera. Exécutez ensuite la commande docker-compose
up avec l’indicateur -d :
docker-compose up -d
Les fichiers docker-compose
Si vous regardez dans le répertoire docker-pg-cluster, vous verrez la structure suivante
:Docker-pg-cluster:
4. 4/15
docker-compose.yml
maître:
Dockerfile
setup-master.sh
esclave:
Dockerfile
setup-slave.sh
Le composant principal est le fichier YAML docker-compose. Comme il s’agit d’un fichier
YAML, vous devez faire attention au formatage. Il est divisé en trois sections, les
déclarations pour le maître, l’esclave et enfin les paramètres généraux. Les données en
vert sont les informations utilisées par docker-compose pour créer les conteneurs. Les
noms des conteneurs se répartissent ainsi :
Docker-compose.yml
Version : « 3 »
Services :
La ligne de génération désigne le sous-répertoire.
Les variables environnementales sont affichées en violet telles que les numéros de port,
les utilisateurs PostgreSQL et les mots de passe.
Puis le nom du réseau (que nous avons créé au départ).
La ligne de redémarrage indique à docker de redémarrer le conteneur s’il s’arrête.
5. 5/15
J’ai donné aux deux conteneurs leurs
propres volumes, avec des noms, il est donc
facile de les retrouver plus tard.
Dockerfile maître
FROM postgres:11
COPY ./setup-master.sh /docker-entrypoint-initdb.d/setup-master.sh
RUN chmod 0666 /docker-entrypoint-initdb.d/setup-master.sh
RUN apt-get update && apt-get --assume-yes install iputils-ping && apt-
get install --assume-yes ssh && apt-get install --assume-yes net-tools
6. 6/15
Le masterDockerfile est simple. Il utilise PostgreSQL 11 car il y a quelques changements
à la réplication dans PostgreSQL 12. Il copie setup-master.sh dans le conteneur et définit
les autorisations appropriées. Ensuite, il installe divers paquets que nous voudrons
utiliser tels que iputils, net-tools et ssh. Vous pourriez faire le cluster avec une image
alpine, qui aurait une empreinte beaucoup plus petite. Mais la dernière étape que je veux
faire est de l’importer dans ControlControl et pour cela j’ai besoin de ssh qui n’est pas
facilement disponible dans Alpine. Si vous faisiez cela dans un environnement réel, vous
voudrez peut-être configurer un serveur ssh, pour cette démonstration, j’ajoute
simplement ssh directement aux conteneurs.
Setup-master.sh
#!/bin/bash
echo « réplication hôte tous 0.0.0.0/0 md5 » >> « $PGDATA/pg_hba.conf"
set -e
psql -v ON_ERROR_STOP=1 --username « $POSTGRES_USER » --dbname
« $POSTGRES_DB » <<-EOSQL CREATE USER $PG_REP_USER REPLICATION LOGIN
CONNECTION LIMIT 100 MOT DE PASSE CHIFFRÉ '$PG_REP_PASSWORD';
CRÉER DES POSTGRES D’UTILISATEUR;
EOSQL
cat >> ${PGDATA}/postgresql.conf <
wal_level = hot_standby
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 8
wal_keep_segments = 8
hot_standby = sur
EOF
Le fichier setup-master.sh ajoute une ligne au fichier PostgreSQL pg_hba.conf pour
permettre la réplication. Encore une fois, pour une installation réelle, vous voudrez peut-
être considérer les implications de sécurité de ceci. Il ajoute ensuite quelques utilisateurs
postgres, l’un tiré des variables environnementales du fichier docker-compose.yml, et
l’autre un utilisateur postgres par défaut. Ensuite, il ajoute quelques lignes au fichier
postgresql.conf en le définissant comme maître.
Dockerfile esclave
FROM postgres:11
RUN apt-get update && apt-get --assume-yes install iputils-ping && apt-
get install --assume-yes ssh && apt-get install --assume-yes net-tools &&
apt-get install --assume-yes gosu
COPY ./setup-slave.sh /setup-slave.sh
RUN chmod +x /setup-slave.sh
ENTRYPOINT ["/setup-slave.sh"]
CMD ["gosu","postgres","postgres"]
Le slaveDockerfile est similaire au fichier maître.
7. 7/15
Setup-slave-sh
#!/bin/bash
if [ ! -s "$PGDATA/PG_VERSION" ]; then
echo "*:*:*:$PG_REP_USER:$PG_REP_PASSWORD" > ~/.pgpass
chmod 0600 ~/.pgpass
until ping -c 1 -W 1 pg_master_1
do
echo "Waiting for master to ping..."
sleep 1s
done
until pg_basebackup -h pg_master_1 -D ${PGDATA} -U ${PG_REP_USER} -
vP -W
do
echo "Waiting for master to connect..."
sleep 1s
done
echo « Host replication all 0.0.0.0/0 md5 » >>
« $PGDATA/pg_hba.conf"
set -e
cat > ${PGDATA}/recovery.conf <
standby_mode = on
primary_conninfo = 'host=pg_master_1 port=5432 user=$PG_REP_USER
password=$PG_REP_PASSWORD’trigger_file =
'/tmp/touch_me_to_promote_to_me_master'
EOF
chown postgres. ${PGDATA} -R
chmod 700 ${PGDATA} -R
fi
sed -i 's/wal_level = hot_standby/wal_level = replica/g'
${PGDATA}/postgresql.conf
exec "$@"
Le fichier setup-slave.sh contient deux ou trois choses à noter. Il configure une boucle
pour vérifier qu’il peut envoyer une commande ping au maître, puis une autre pour
répliquer les données à l’aide de la PG_REP_USER de docker-compose.yml. Assurez-
vous que le nom du maître correspond à celui utilisé pour le service dans le fichier docker-
compose.yml.
Donc, après avoir fait fonctionner votre cluster PostgreSQL et avoir regardé les fichiers
qui l’ont créé, voyons en action. Vous pouvez, bien sûr, vous connecter à PostgreSQL et
exécuter des commandes SQL pour le voir fonctionner. Mais ce blog concerne Docker, pas
PostgreSQL, alors créons un conteneur pgAdmin4 pour afficher notre cluster.
8. 8/15
docker run -p 80:80 --name pgadmin --restart always -e
'[email protected]' -e
'PGADMIN_DEFAULT_PASSWORD=SuperSecret' -d dpage/pgadmin4
Les conteneurs Docker n’ont généralement pas d’interface graphique, donc pour afficher
pgAdmin4, ouvrez-le dans une fenêtre de navigateur. L’adresse IP est celle de votre
docker-machine et le port est 80. Connectez-vous avec l’email et le mot de passe que vous
avez utilisés pour créer le conteneur ([email protected] et SuperSecret dans mon cas).
Ajoutez les deux serveurs à pgAdmin. La seule différence entre eux sera les noms que vous
leur donnez et les numéros de port. L’adresse IP sera à nouveau celle de votre docker-
machine.
9. 9/15
Connection:
Host name/address: docker-machine IP
Port: 5445 or 5446
Maintenance database: postgres
Username: optima
Password: 123456
Dans les bases de données master, accédez à pg_stat_replication (Bases de données ->
postgres -> Catalogues -> Catalogue PostgreSQL (pg_catalog) -> Vues) et affichez toutes
les lignes. Vous verrez une seule ligne de données si elle se réplique correctement. Vous
pouvez également ajouter des tables et des données dans le gabarit et vérifier qu’elles sont
copiées dans l’esclave.
10. 10/15
Contrôle de cluster
Bien que nous ayons certainement un cluster de bases de données fonctionnel, ce n’est
pas le plus impressionnant visuellement. Alors, que diriez-vous d’ajouter un autre
conteneur avec ClusterControl de SeveralNines, qui est livré avec une licence d’entreprise
d’essai de 30 jours avant de revenir à l’édition communautaire:
docker run -d --name clustercontrol --restart always --network
bridge-docker -p 5000:80 severalnines/clustercontrol
Encore une fois, j’ai ajouté un drapeau pour redémarrer le conteneur s’il s’arrête, et le
mettre sur le même réseau que les autres conteneurs. Ouvrez un autre onglet de
navigateur sur la même adresse IP que votre docker-machine, et le port 5000 (par
exemple 192.168.99.105:5000/clustercontrol). Il vous demandera de fournir un e-mail et
un mot de passe pour vous connecter et pour les détails d’inscription, mais ceux-ci n’ont
pas besoin d’être valides. Avant de pouvoir ajouter les serveurs à ClusterControl, nous
devons configurer ssh sur les serveurs.
Connectez-vous au conteneur ClusterControl pour trouver son adresse IP et définir le mot
de passe racine.
docker exec -it clustercontrol bash
passwd
ip addr show
11. 11/15
Maintenant, connectez-vous aux deux serveurs
docker exec -it docker-pg-cluster_pg_master_1_1 bash
docker exec -it docker-pg-cluster_pg_slave_1_1 bash
Pour vous permettre de vous connecter en tant que root, exécutez ce qui suit :
sed -i 's|^#PermitRootLogin.*|PermitRootLogin yes|g'
/etc/ssh/sshd_config
puis démarrez SSH
service ssh start
Définir le mot de passe root
passwd
et trouver les adresses IP des serveurs
ifconfig
12. 12/15
Créer une clé ssh sur chacun des serveurs
mkdir -p $HOME/.ssh
chmod 0700 $HOME/.ssh
ssh-keygen -t rsa
13. 13/15
ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@[ClusterControl IP
address]
ssh root@[ClusterControl IP address]
Sur le conteneur ClusterControl
ssh-copy-id [master IP address]
password
ssh [master IP address]
ssh-copy-id [slave IP address]
password
ssh [slave IP address]
Dans ClusterControl, ajoutez le cluster :
Import
PostgreSQL
SSH User:root
Cluster Name:blog3a
Server port: 5432 NOTE, NOT THE CONTAINER’S PORT
User: optima
Password: 123456
Version:11
Basedir: /var/lib/postgresql/data
Add Nodes:IP address of the master and slave, pressing after each
one
Import
Patientez une minute pendant l’exécution de la tâche d’importation
14. 14/15
Dans l’onglet Vue d’ensemble, vous pouvez désormais facilement voir l’état de la
réplication.
15. 15/15
Vous avez maintenant un cluster de bases de données PostgreSQL 2 à 11 nœuds avec
pgAdmin4 et ClusterControl exécutés dans 4 conteneurs. Jouez avec le démarrage et
l’arrêt et voyez à quel point il est facile de créer de nouveaux clusters.
Envie d’en savoir plus ?
Ce n’est certainement pas tout ce que Docker peut offrir, mais j’espère que c’est suffisant
pour vous aider à démarrer. Vous souhaitez en savoir plus ou avez besoin d’aide ou de
conseils en utilisant ou implémentant PostgreSQL, Docker, Kubernetes et/ou
ClusterControl, n’hésitez pas à nous contacter ! Nous sommes heureux de vous aider.
Blog Comment exécuter Postgres sur Docker partie 1
Blog Comment exécuter Postgres sur Docker partie 2
Retour à l’aperçu du blog
Répondre