Eerste schets migratie pad mastodon.nl naar kubernetes gebaseerde setup
Posted on za 07 oktober 2023 in fediverse
De huidige infra setup van mastodon.nl is gebaseerd op een flink aantal virtual machines met Debian 11 als operating system. Daarboven is deels met de hand en deels met ansible automation de benodigde applicatie en middleware uitgerold. In november 2022 is in een lange nacht de grootste set uitgerold en ingericht, daarna zijn er nog enkele virtual machines bijgekomen, in ieder geval voor elasticsearch. Dit levert ongeveer onderstaand plaatje op:
Deze omgeving draait heel stabiel en performed prima met het huidig aantal gebruikers. Alleen door de grote set losse componenten zijn upgrades omslachtig en foutgevoelig.
Upgrades in kubernetes omgevingen kunnen worden gedaan met de helm chart die door het mastodon project onderhouden wordt. Dit levert veel minder handmatige stappen en verrassingen op. De helm chart kan de mastodon software en alle middleware in kubernetes hosten. Maar als migratie stap lijkt het me eenvoudiger om de SQL database en de file storage voor nu te handhaven. Zo wordt de overgang kleiner en eenvoudiger gehouden.
Kortgezegd blijven SQL en filestorage overeind, maar gaan redis en elasticsearch samen met mastodon-web en mastodon-sidekiq direct als kubernetes component verder. Dit zou dan na een migratie onderstaand schema opleveren:
- drie kleine virtual machines als kubernetes master nodes
- drie grotere virtual machines (of fysieke machines) als worker nodes
- in de worker nodes vind je dan mastodon-web, mastodon-sidekiq, een elasicsearch cluster en een redis cluster
Om daar te komen, wordt de omgeving tijdelijk extra groot en complex. Omdat de huidige virtual machines geschaald zijn op de piek van najaar 2022, kunnen we daar wellicht al wat verkleinen als dit nodig blijkt.
Van zowel de elasticsearch als de redis data moet gechecked worden of dit gemigreerd moet worden of dat simpel weg opnieuw opbouwen genoeg is. Ook zouden de bestaande virtual machines in eerste instantie verteld moeten worden dat elastisearch en redis nu ergens anders draaien.
Zodra we voldoende vertrouwen hebben dat de nieuwe kubernetes gehoste applicaties goed draaien, kunnen de taken op de virtual machines worden gestopt. Een kleine periode later kunnen de betrokken virtual machines worden opgedoekt en de resources vrij gegeven.