Il y a deux ans, nous apprenions notre nouvelle mission : migrer les 3 millions de sites web hébergés dans notre datacentre de Paris. Sans en maitriser le code source, les migrer sans impact nous semblait totalement irréaliste.
18 mois plus tard, c'est terminé ! Pour y arriver, nous avons du configurer des proxy SQL, des tunnels réseau, migrer des IP entre nos datacentres, livrer des milliers de serveurs, bosser durant des dizaines de nuits, mais aussi s'organiser entre plusieurs équipes qui n'ont pas l'habitude de travailler ensemble. Quels sont les soucis technique et humains que nous avons rencontrés, et comment les avons nous résolu ? Retour d'expérience sur l'une des plus grosse migration que le web ai connu !
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais vrai !
1. Migrer 3 millions de sites sans maitriser
leur code source ?
Impossible mais vrai !
Vincent Cassé / @vcasse
Engineering manager webhosting
Sysadmin day / 18 novembre 2019
2. D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
“On vous héberge”
2
3. Webhosting
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
3
- 1er hébergeur européen
- 6 millions de sites web
- 60 Gb/s
- 6 Millards de requêtes HTTP/jour (hors CDN)
- 15 000 serveurs
4. Webhosting chez OVHcloud : histoire
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
4
- Hébergement à P19 (Paris) depuis 2003
- Le web a changé depuis 1999
- Ouverture du Gravelines en 2016
5. C’est quoi le métier d’hébergeur ?
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
5
6. apt-get install apache2 php7 mysql-server?
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
6
- Stocker des données
- Exécuter du code
7. Pourquoi partir de Paris ?
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
7
- Fin de vie des équipements
- Décroissance naturelle du datacentre trop lente
8. D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
8
Pourquoi c’était la merde ?
9. Gestion de risque
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
9
- Probabilités par ordre de grandeur
- 0,1% pour 1 site : 1 chance sur 1000
- 0,1% pour 100 sites : 1 chance sur 10
- 0,1% pour 3 millions : 3 000 fois
10. Gestion de risque
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
10
- Probabilités en absolu
- 0,1% pour 1 site : 1 chance sur 1000
- 0,1% pour 100 sites : 1 chance sur 10
- 0,1% pour 3 millions : 3 000 fois
- Risque = Impact * Probabilité
11. Le split brain
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
11
Split-brain is a computer term, based on an analogy with the medical Split-brain
syndrome. It indicates data or availability inconsistencies originating from the
maintenance of two separate data sets with overlap in scope, either because of
servers in a network design, or a failure condition based on servers not
communicating and synchronizing their data to each other.
https://en.wikipedia.org/wiki/Split-brain_(computing)
12. Vu d’un site web
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
12
13. Répartition de charge et tolérance aux pannes
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
13
14. Domaines de panne
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
14
15. Différence P19 / Gravelines
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
15
16. Contrainte des fichiers
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
16
- Dépendant des clients : code source / images/ javascripts…
- Limites de rsync
- Copie en mode bloc impose de migrer tous les clients d’un filerz
17. Contrainte des clusters
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
17
- Infra coûteuses mutualisées par cluster (load balancer, IP…)
- Changement des zones DNS difficile
- Migrer les IP implique de migrer tous les clients d’un cluster
18. Contrainte des bases de données
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
18
- Bases de données référencées avec les hébergement mais …
- Connaissance exhaustive = maîtrise exhaustive des code source
- Casser aucun site nécessite de migrer en même temps tous les sites
19. Contrainte des bases de données (au carré)
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
19
- Accès aux bases de données par sous domaine
- Mais fonctionnalité récente (4 ans)
- Anciens usages incompatible avec Gravelines
20. D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
20
21. D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
Alors, comment migrer ?
21
22. Casser les contraintes
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
22
En prenant en compte toutes les contraintes :
- Soit migrer les sites 1 par 1 en comprenant leur code source
- Soit migrer tout d’un coup (TCP over Trucks ?)
23. Nommage des bases de données : proxy SQL
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
23
db 1
db 2
….
db 2500
mysql55-XXX.plan
XXX
db 2
….
db 2500
db 1
….
db 250
mysql55-XXX.plan-service dbXXX.plan
P19 Gravelines
24. Bases de données non référencées
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
24
- Tunnel réseau entre les deux datacentres
- Impact : + 10ms de latence
- « Best effort »
25. Latence et SQL proxy
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
25
db 1
db 2
….
db 2500
mysql55-XXX.plan
XXX
db 2
….
db 2500
db 1
….
db 250
mysql55-XXX.plan-service dbXXX.plan
P19 Gravelines
db 1
db 2
….
db 2500
mysql55-XXX.plan
+10 ms
26. Contrainte des IP mutualisées
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
26
P19 GRA
127.0.0.1
::1
À migrer Déjà migré
27. Contrainte des IP mutualisées
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
27
P19 GRA
127.0.0.1
::1À migrer
Web Web Web Web Web
Filerz Filerz
Web Web Web Web Web
Filerz Filerz
28. Gestion des fichiers
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
28
Est-ce que cela pose un problème de migrer tous les clients d’un filer en même
temps ?
29. D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
Let’s migrate the party!
29
30. Switch des IP
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
30
- Adaptation de notre système d’information
- Patch du load balancer
- Tunnel réseau
- Outillage et monitoring
31. Proxy SQL
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
31
- Automatisation des configurations
- Déploiement 1 / 10 / 100 / 1000
- Quelques surprises :
- Format de stockage des mots de passe dans MySQL
- Table ARP
- Gestion d’anciennes versions
32. Découpage de la migration
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
32
- Migration filerz par filerz.
- Bases de données associées migrées en même temps
- 1 switch d’IP à la fois, donc 1 cluster à la fois
- Choix des clusters par niveau de risque. Du moins au plus risqué
33. Frise chronologique
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
33
Commande
du matériel
J-60 :
Construction du
cluster
J-30 :
Copie des
filerz
J-40 :
Installation
des filerz
J-30 :
Installation
des bases
J-30 :
Communication
J-15 :
Communication
J-10 :
Test cluster
J-7 :
Switch IP
J-1 :
Accélération
copie filerz
Nuit 1 :
Migration
X filerz
Nuit N :
Migration
dernier filerz
J + 1 :
Fermeture
cluster P19
Dé-provisionning
34. Switch IP (J-7)
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
34
1. Test du cluster de destination et tunnel réseau
2. Informer clients et support
3. Rediriger les opérations SSL
4. Configurer tous les certificats
5. Pour chaque adresse IPv4 / v6 !
• Basculer l’adresse IP
• Tester les sites à Paris et Gravelines
6. Rediriger le CDN
35. Migration d’un filerz : nuit
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
35
1. Tester des sites du cluster
2. Couper le monitoring des machines impactées
3. Lancer un incrémental
4. Passer les sites web en maintenance
5. Attendre le timeout PHP
6. Fermer l’accès aux fichiers sur le filerz
7. Lancer un dernier incrémental
8. Une fois que les données sont à Gravelines : migration des bases de données
9. Modification des configurations des comptes migrés (SI, infrastructure…)
10. Réouverture des hébergements
11. Attendre la fin de la migration des bases de données
12. Re-tester les sites web et vérifier le bon fonctionnement de la migration
13. Réactiver le monitoring
14. Prévenir les clients de la fin des opérations
15. Dormir
36. Migration d’un filerz : et les bases
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
36
Pour chaque base de données :
1. Passage de la base en lecture seule (select uniquement)
2. Dump de la base de données
3. Import de la base de données à la destination et ouverture en lecture/écriture
4. Redirection du nom DNS de la base vers le nouveau serveur
5. Configuration du SQL proxy vers le nouveau serveur
6. Fermeture de la base à Paris
37. Migration d’un filerz : et les bases
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
37
- Répartition des opérations sur tous les serveurs
- Orchestration : stockage sur une base de données centrale
38. Migration d’un filerz : et les bases
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
38
- Répartition des opérations sur tous les serveurs
- Orchestration : stockage sur une base de données centrale
- Record : 13 502 bases migrées en 1h13:31
39. D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
Causons orga
39
40. Les défis
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
40
- Technique. Mais on en a bien parlé
- Infrastructure découpée en équipes spécialisées (bases de données, web,
stockage, datacentres, production, support, load balancers, cdn, réseau…)
- Legacy
- Migration longue
41. Organisation de la migration
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
41
1. Établir un scénario de migration
2. Implémenter et tester le scénario
3. Migrer et améliorer après chaque nuit
42. Change management
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
42
43. Plus de détails ?
D at e
F o o t er can b e p er so n alized as
fo llo w : In ser t / H ead er an d fo o t er
43
• Why we decided to migrate three million websites?
https://www.ovh.com/blog/web-hosting-why-we-decided-to-migrate-three-million-websites/
• How to host 3 million websites?
https://www.ovh.com/blog/web-hosting-how-to-host-3-million-websites/
• How to migrate 3 Million web sites?
https://www.ovh.com/blog/web-hosting-how-to-migrate-3-million-web-sites/
• How do our databases work?
https://www.ovh.com/blog/web-hosting-how-do-our-databases-work/
• More soon on https://ovh.com/blog