Active clusters¶
swarm01¶
[Système : None] [Lifecycle : production]
Cluster principal de ComputableFacts basé sur Docker Swarm
Détails¶
Où est s006 ?¶
Nous avions un serveur s006 à l'installation de ce cluster. Mais la machine
a eu un problème de ventilateur qui la faisait rédémarrer ou s'arrêter de
façon impromptu. Nos 3 serveurs MySQL étaient stickés sur cette machine donc
une grande partie de nos déploiements sur swarm01 étaient indisponibles
puisque sans accès à leur base de données.
Nous avons donc pris, en urgence, le serveur s008 où nous avons déplacé
toutes nos bases de données.
Au début, nous avons gardé s006 dans le cluster mais elle est à nouveau tombée
en panne. Nous avons décidé de la décommissionner. Nous ne l'avons pas remplacée
car nous n'avons pas besoin de plus de ressources, surtout depuis que nous avons
décidé de déplacer les applications de nos clients vers des serveurs avec YunoHost
(Towerify).
Events¶
2025-01-10 - 18:20 - Suppression de 2 managers du cluster swarm01 (s002 et s003)
Comme nous avons réduit le nombre de clients utilisant swarm01, nous voulons réduire le nombre de machines. Je veux commencer par retirer les 2 managers.
Je choisi de garder s001 comme manager et de supprimer s002 et s003.
Je sauvegarde le répertoire /var/lib/docker/swarm sur s001.
Commande
ansible@s001:~$ sudo tar -czvf var_lib_docker_swarm.20250110.tar.gz /var/lib/docker/swarm
tar: Removing leading `/' from member names
/var/lib/docker/swarm/
/var/lib/docker/swarm/worker/
/var/lib/docker/swarm/worker/tasks.db
/var/lib/docker/swarm/state.json
/var/lib/docker/swarm/docker-state.json
/var/lib/docker/swarm/raft/
/var/lib/docker/swarm/raft/wal-v3-encrypted/
/var/lib/docker/swarm/raft/wal-v3-encrypted/0000000000000282-0000000000fb5e32.wal
/var/lib/docker/swarm/raft/wal-v3-encrypted/0.tmp
/var/lib/docker/swarm/raft/snap-v3-encrypted/
/var/lib/docker/swarm/raft/snap-v3-encrypted/0000000000000184-0000000000fb7703.snap
/var/lib/docker/swarm/certificates/
/var/lib/docker/swarm/certificates/swarm-node.key
/var/lib/docker/swarm/certificates/swarm-root-ca.crt
/var/lib/docker/swarm/certificates/swarm-node.crt
Pour restaurer, faire (non testé) :
sudo systemctl stop docker
sudo tar -xzvf swarm-backup.tar.gz -C /
sudo systemctl start docker
Le status des noeuds de mon swarm :
ansible@s001:~$ sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
k232lszqgaa76qas459m9v9c1 * s001 Ready Active Reachable 24.0.4
0u3khzcl9z51ht6mkm4faejxw s002 Ready Active Leader 24.0.4
ljt3zkvuzii9f90k7o0g5jx6d s003 Ready Active Reachable 24.0.4
wvjk3zj5trf7shi8sk4lwaiau s004 Ready Active 24.0.4
julb8p7h0lakc89ivtmhmtmhd s005 Ready Active 24.0.4
yt8tm5wpiigklqt3zi7n1x2q8 s008 Ready Active 24.0.4
Je vais d'abord enlever le rôle de manager à s003. s002 devrait rester Leader.
Puis je vais enlever le rôle de manager à s002 donc s001 sera le seul manager restant
et devrait devenir Leader.
Commandes
ansible@s001:~$ sudo docker node demote ljt3zkvuzii9f90k7o0g5jx6d
Manager ljt3zkvuzii9f90k7o0g5jx6d demoted in the swarm.
ansible@s001:~$ sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
k232lszqgaa76qas459m9v9c1 * s001 Ready Active Reachable 24.0.4
0u3khzcl9z51ht6mkm4faejxw s002 Ready Active Leader 24.0.4
ljt3zkvuzii9f90k7o0g5jx6d s003 Ready Active 24.0.4
wvjk3zj5trf7shi8sk4lwaiau s004 Ready Active 24.0.4
julb8p7h0lakc89ivtmhmtmhd s005 Ready Active 24.0.4
yt8tm5wpiigklqt3zi7n1x2q8 s008 Ready Active 24.0.4
ansible@s001:~$ sudo docker node demote 0u3khzcl9z51ht6mkm4faejxw
Manager 0u3khzcl9z51ht6mkm4faejxw demoted in the swarm.
ansible@s001:~$ sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
k232lszqgaa76qas459m9v9c1 * s001 Ready Active Leader 24.0.4
0u3khzcl9z51ht6mkm4faejxw s002 Ready Active 24.0.4
ljt3zkvuzii9f90k7o0g5jx6d s003 Ready Active 24.0.4
wvjk3zj5trf7shi8sk4lwaiau s004 Ready Active 24.0.4
julb8p7h0lakc89ivtmhmtmhd s005 Ready Active 24.0.4
yt8tm5wpiigklqt3zi7n1x2q8 s008 Ready Active 24.0.4
Je teste :
- l'accès à l'admin de Keycloak fonctionne
- l'accès au datalake de DEV puis de PROD ISTA, en passant par Keycloak fonctionne
Je dois maintenant retirer s002 et s003 du swarm. Je veux le faire avec ansible.
Je mets à jour mon inventaire :
swarm01_nodes:
children:
# Must be one of the Swarm managers hosts (only the first host is used)
swarm_initiator:
hosts:
s001:
# Hosts that will be Swarm manager (at least one)
swarm01_managers:
hosts:
s001:
# Hosts that will be Swarm worker. Must not be in Swarm managers list.
swarm01_workers:
hosts:
s004:
s005:
s008:
# Hosts that will be remove from Swarm
swarm01_leave:
hosts:
s002:
s003:
Puis je fais la commande : ansible-playbook -i ansible/inventory.yml ansible/02-swarm.yaml --tags swarm-leave -e "infra=swarm01".
Elle est restée bloquée après avoir affichée Ok [s002]. J'ai donc fait aussi la commande sudo docker swarm leave directement sur s002
qui a réussi car elle a affiché : Node left the swarm..
s002 ne fait plus partie du swarm01
ansible@s001:~$ sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
k232lszqgaa76qas459m9v9c1 * s001 Ready Active Leader 24.0.4
0u3khzcl9z51ht6mkm4faejxw s002 Down Active 24.0.4
ljt3zkvuzii9f90k7o0g5jx6d s003 Ready Active 24.0.4
wvjk3zj5trf7shi8sk4lwaiau s004 Ready Active 24.0.4
julb8p7h0lakc89ivtmhmtmhd s005 Ready Active 24.0.4
yt8tm5wpiigklqt3zi7n1x2q8 s008 Ready Active 24.0.4
Mais j'ai un problème car Portainer était stické sur s002.
Comment j'ai rétabli Portainer
J'ai d'abord mis le tag qui sticke Portainer sur s001 avec la commande
sudo docker node update --label-add portainer.portainer-data=true k232lszqgaa76qas459m9v9c1.
Portainer a démarré mais comme si je venais de l'installer. Je dois donc transférer le contenu
du volume de s002 vers s001.
J'ai commencé par arrêter le service de Portainer qui utilise le volume avec cette commande sur s001 :
sudo docker service scale portainer_portainer=0.
Puis j'ai transféré depuis mon poste avec ces 3 commandes :
ssh swarm01-s002 "sudo tar czf - /var/lib/docker/volumes/portainer_portainer-data/_data" > portainer_portainer-data/portainer-data.tar.gzscp portainer_portainer-data/portainer-data.tar.gz swarm01-s001:/home/ansible/portainer-data.tar.gzssh swarm01-s001 "sudo tar xzf /home/ansible/portainer-data.tar.gz -C /home/ansible/ && sudo mv /home/ansible/var/lib/docker/volumes/portainer_portainer-data/_data/* /var/lib/docker/volumes/portainer_portainer-data/_data && sudo rm -rf /var/lib/docker/volumes/portainer_portainer-data/var"
Je redémarre le service avec sudo docker service scale portainer_portainer=1. J'arrive à me connecter.
Je vois le swarm et je vois qu'il a 49 stacks mais je n'arrive pas à lister les stacks ni les services.
Par contre je vois la liste des containers.
J'ai des messages d'erreur "Unable to retrieve stacks" ou "Unable to retreive services". Parfois les stacks
se sont affichées mais les services jamais.
Je décide de publier à nouveau portainer sur s001 avec ansible et la commande :
ansible-playbook -i ansible/inventory.yml ansible/04-swarm01-utility-stacks.yaml --tags portainer
(j'ai changé hosts: s002 par hosts: s001 avant).
Les agents de chaque node redémarrent (comme je le pensais) et, maintenant, mon portainer fonctionne à nouveau comme avant.
Je vois toujours s002 avec la commande sudo docker node ls exécutée sur s001. Il a le statut down
depuis que je l'ai retiré du swarm.
Je fais la commande sudo docker node rm 0u3khzcl9z51ht6mkm4faejxw pour l'enlever définitivement de la
liste.
Je passe à s003.
Sur s003, je fais la commande sudo docker swarm leave qui réussie avec le retour Node left the swarm..
Comme s002, s003 reste présent avec le statut down dans la liste de sudo docker node ls.
Je le supprime donc avec la commande sudo docker node rm s003. Ca fonctionne : je n'ai plus que 4 serveurs
dans swarm01.
J'arrête là pour aujourd'hui. Je supprimerai les machines la semaine prochaine.
2024-11-19 - 21:54 - Décommissionnement de s007
Maintenant qu'aucune application n'est stickée sur s007 et que je l'ai sorti
de swarm01, je peux le rendre à Scaleway.
Serveur Elastic Metal s007 supprimé depuis l'UI de Scaleway.
Links¶
Dependencies¶
-
Deprecated: Resource - server - s002
-
Deprecated: Resource - server - s003
-
Deprecated: Resource - server - s006
-
Deprecated: Resource - server - s007
-
Deprecated: Resource - deployment - dev-ista-cf-ui
-
Deprecated: Resource - deployment - staging-ista-cf-ui
-
Deprecated: Resource - deployment - prod-ista-cf-ui
-
Deprecated: Resource - deployment - dev-modules-ista-api1
-
Deprecated: Resource - deployment - staging-modules-ista-api1
-
Deprecated: Resource - deployment - prod-modules-ista-api1
-
Deprecated: Resource - deployment - dev-modules-ista-passeport-immeuble
-
Deprecated: Resource - deployment - staging-modules-ista-passeport-immeuble
-
Deprecated: Resource - deployment - prod-modules-ista-passeport-immeuble
-
Deprecated: Resource - deployment - dev-modules-ista-ciblage-commercial
-
Deprecated: Resource - deployment - staging-modules-ista-ciblage-commercial
-
Deprecated: Resource - deployment - prod-modules-ista-ciblage-commercial
-
Deprecated: Resource - deployment - dev-sentinel-cf-ui
-
Deprecated: Resource - deployment - staging-sentinel-cf-ui
-
Deprecated: Resource - deployment - cf-ui-sentinel-prod
-
Deprecated: Resource - deployment - ista-superset
-
Deprecated: Resource - deployment - ista-jenkins
-
Deprecated: Resource - deployment - lurberri-superset
-
Deprecated: Resource - deployment - lurberri-jenkins
-
Deprecated: Resource - deployment - common-jenkins
-
Deprecated: Resource - deployment - dev-lurberri-cf-ui
-
Deprecated: Resource - deployment - staging-lurberri-cf-ui
-
Deprecated: Resource - deployment - prod-lurberri-cf-ui
-
Deprecated: Resource - deployment - ista-agent-portainer
-
Deprecated: Resource - deployment - dev-appscompose-cf-ui
-
Deprecated: Resource - deployment - appscompose-jenkins
-
Deprecated: Resource - deployment - common-superset
-
Deprecated: Resource - deployment - smacl-jenkins
-
Deprecated: Resource - deployment - dev-smacl-cf-ui
-
Deprecated: Resource - deployment - staging-smacl-cf-ui
-
Deprecated: Resource - deployment - prod-smacl-cf-ui
-
Deprecated: Resource - deployment - dev-smacl-module
-
Deprecated: Resource - deployment - staging-smacl-module
-
Deprecated: Resource - deployment - prod-smacl-module
-
Deprecated: Resource - deployment - dev-modules-smacl-contracts
-
Deprecated: Resource - deployment - staging-modules-smacl-contracts
-
Deprecated: Resource - deployment - prod-modules-smacl-contracts