๐พ Backups
Backups zijn een essentieel onderdeel van de continuรฏteit van Tulpencraft.
Een Minecraft-server kan altijd opnieuw worden geรฏnstalleerd. De werelddata, configuraties, databasegegevens en andere unieke gegevens kunnen echter niet zomaar opnieuw worden opgebouwd.
Daarom worden backups gezien als een afzonderlijke beveiligingslaag naast de productieomgeving.
๐ฏ Doel van backups
Het doel van backups is het kunnen herstellen van Tulpencraft na bijvoorbeeld:
- ๐ฅ๏ธ een defecte VM;
- ๐พ storageproblemen;
- ๐๏ธ per ongeluk verwijderde bestanden;
- โ๏ธ een foutieve configuratie;
- ๐ een defecte plugin;
- ๐ฅ een servercrash;
- ๐ฆ een beveiligingsincident;
- ๐ค menselijke fouten;
- ๐๏ธ een migratie naar andere infrastructuur;
- ๐ฅ๏ธ verlies van een fysieke host.
De belangrijkste vraag bij backups is daarom niet:
โHebben we een backup?โ
maar:
โKunnen we daadwerkelijk herstellen wanneer dat nodig is?โ
๐๏ธ Huidige infrastructuur
Tulpencraft draait momenteel op de gedeelde Proxmox-host:
- id="kz6n8a"
๐ฅ๏ธ hv002 โ โโโ ๐ฅ๏ธ mc-proxy001 โ โโโ Velocity โ โโโ Lobby โ โโโ Database โ โโโ overige diensten โ โโโ ๐ฎ Survival VM โ โโโ ๐ฏ Events VM โ โโโ โ toekomstige VM's
De host beschikt over NVMe-storage.
De productiegegevens van Tulpencraft bevinden zich daardoor momenteel binnen de infrastructuur van hv002.
Dit betekent ook dat de Proxmox-host zelf geen ideale enige backupbestemming is.
โ ๏ธ Backups zijn geen snapshots
Een Proxmox snapshot is niet hetzelfde als een backup.
Een snapshot kan handig zijn vรณรณr een wijziging:
- id="t3j8sk"
VM โ โโโ Snapshot vรณรณr wijziging โ โโโ Wijziging uitvoeren
Een backup is bedoeld om gegevens ook na een ernstiger incident te kunnen herstellen.
Bijvoorbeeld:
- id="z7m2wk"
Productie โ โผ ๐พ Backup โ โผ ๐ฆ Afzonderlijke opslag
Een snapshot op dezelfde fysieke storage beschermt dus niet tegen het verlies van die storage.
๐ก๏ธ Wat moet worden geback-upt?
Niet iedere VM hoeft noodzakelijkerwijs op exact dezelfde manier te worden geback-upt.
Voor Tulpencraft zijn vooral de volgende gegevens belangrijk.
๐ฎ Minecraft-werelden
De belangrijkste data van een Minecraft-server bestaat uit de werelddata.
Bijvoorbeeld:
- id="yqv8d3"
/srv/minecraft/survival/world/ /srv/minecraft/survival/world_nether/ /srv/minecraft/survival/world_the_end/
Deze data is uniek en kan vaak niet opnieuw worden gegenereerd zonder voortgang van spelers te verliezen.
โ๏ธ Configuraties
Ook configuratiebestanden zijn belangrijk.
Voorbeelden:
- id="x3m7ah"
/srv/minecraft/survival/server.properties /srv/minecraft/survival/config/ /srv/minecraft/survival/plugins/
Hierin kunnen onder andere instellingen van plugins, permissions en gameplay worden opgeslagen.
๐งฉ Plugins
Plugin-JAR's zijn meestal opnieuw te downloaden.
Toch kunnen lokale pluginconfiguraties en data essentieel zijn.
Daarom is het verstandig om niet alleen de JAR-bestanden, maar de relevante pluginmappen mee te nemen.
๐๏ธ Database
De huidige database draait intern op:
- id="8c5q7u"
mc-proxy001
Databasegegevens moeten onderdeel zijn van de backupstrategie.
Daarbij moet rekening worden gehouden met het verschil tussen:
- een volledige VM-backup;
- een database-dump;
- een consistente databasebackup.
Een databasebackup moet bij voorkeur worden gemaakt op een manier die de consistentie van de database waarborgt.
๐ Systeemconfiguratie
Voor een snelle recovery kunnen ook belangrijke systeemconfiguraties worden bewaard.
Denk bijvoorbeeld aan:
- id="6s0g0j"
/etc/systemd/system/ /etc/firewalld/ /etc/ssh/ /etc/selinux/
Niet ieder bestand hoeft afzonderlijk te worden geback-upt wanneer de volledige VM wordt meegenomen.
๐ฅ๏ธ VM-backups
Omdat Tulpencraft op Proxmox draait, ligt het voor de hand om VM's op VM-niveau te kunnen back-uppen.
Conceptueel:
- id="t4f7ra"
Proxmox โ โโโโโโโโโโผโโโโโโโโโ โ โ โ โผ โผ โผ Proxy VM Survival Events โ โ โ โโโโโโโโโโผโโโโโโโโโ โ โผ ๐พ Backup
Een volledige VM-backup kan een belangrijk hulpmiddel zijn bij disaster recovery.
Proxmox VE ondersteunt hiervoor onder andere integratie met Proxmox Backup Server. Voor VM's worden daarbij block-level backups gebruikt.
๐พ Backupbestemming
Een belangrijke regel is:
De backup moet onafhankelijk zijn van de productieomgeving.
Wanneer productie en backup op dezelfde fysieke storage staan, biedt de backup weinig bescherming tegen een fysiek storageprobleem.
Daarom is de gewenste architectuur bijvoorbeeld:
- id="v2y8q4"
๐ฅ๏ธ hv002 โ Tulpencraft VM's โ โผ ๐พ Backup โ โผ ๐ฆ Afzonderlijke storage
In een verdere volwassen infrastructuur kan dit bijvoorbeeld een afzonderlijke backupserver of Proxmox Backup Server zijn.
๐๏ธ Proxmox Backup Server
Een mogelijke toekomstige oplossing is Proxmox Backup Server (PBS).
PBS is specifiek ontworpen voor het maken en beheren van backups van Proxmox-omgevingen.
Een mogelijke architectuur:
- id="5t9m9c"
๐ฅ๏ธ Proxmox โ โโโโโโโโโโผโโโโโโโโโ โ โ โ โผ โผ โผ Proxy Survival Events โ โ โ โโโโโโโโโโผโโโโโโโโโ โ โผ ๐๏ธ Proxmox Backup Server โ โผ ๐พ Backup
Hierdoor wordt de backupomgeving logisch en fysiek gescheiden van de productie-VM's.
๐ Backup-encryptie
Wanneer backups gevoelige gegevens bevatten, kan encryptie worden toegepast.
Proxmox ondersteunt client-side backup-encryptie met AES-256-GCM.
Daarbij geldt een belangrijke regel:
De encryptiesleutel mag niet uitsluitend op de productieserver worden bewaard.
Wanneer de server en de sleutel tegelijkertijd verloren gaan, kan de backup namelijk niet meer worden hersteld. Proxmox waarschuwt hier expliciet voor.
Een veilige situatie is bijvoorbeeld:
๐ฅ๏ธ Productie
โ
โโโ ๐พ Encrypted backup
โ
โโโ ๐ Backup key
โ
โผ
๐ Afzonderlijk
beveiligd opgeslagen
๐ Backup-sleutels
Wanneer encrypted backups worden gebruikt, moeten encryptiesleutels afzonderlijk worden beheerd.
De sleutel hoort niet uitsluitend:
- op dezelfde VM;
- op dezelfde fysieke host;
- op dezelfde backupstorage;
te staan.
De sleutel moet beschikbaar zijn wanneer een restore noodzakelijk is.
Daarom moet bij de backupdocumentatie altijd worden vastgelegd:
- welke sleutel wordt gebruikt;
- waar deze veilig wordt bewaard;
- wie toegang heeft;
- hoe een restore met de sleutel wordt uitgevoerd.
๐ Backupfrequentie
De gewenste frequentie hangt af van het soort data.
Voorbeeld:
| Data | Gewenste frequentie |
|---|---|
| ๐ Survival wereld | Regelmatig |
| ๐๏ธ Database | Regelmatig |
| โ๏ธ Configuraties | Bij wijzigingen + periodiek |
| ๐ฏ Events | Afhankelijk van gebruik |
| ๐ฅ๏ธ Volledige VM | Periodiek |
| ๐งฉ Plugins | Bij wijzigingen + VM-backup |
De exacte frequenties worden vastgesteld zodra de definitieve backupomgeving is ingericht.
๐ Retentie
Niet iedere backup hoeft permanent te worden bewaard.
Een retentiebeleid kan bijvoorbeeld bestaan uit:
- id="m2j5s4"
Dagelijkse backups โ โโโ recente dagen โ โผ Wekelijkse backups โ โโโ langere termijn โ โผ Maandelijkse backups โ โโโ langetermijnbewaring
Het exacte beleid wordt bepaald op basis van:
- beschikbare storage;
- belang van de data;
- herstelvereisten;
- groeisnelheid;
- kosten.
Proxmox Backup Server ondersteunt onder andere prune- en retentionbeleid voor het beheren van oude backups.
๐งช Restore-tests
Een backup die nooit is getest, is geen gegarandeerde backup.
Daarom moet periodiek worden gecontroleerd of backups daadwerkelijk kunnen worden hersteld.
Een eenvoudige test:
- id="j8a6qg"
๐พ Backup โ โผ ๐ฅ๏ธ Testomgeving โ โผ โถ๏ธ VM starten โ โผ ๐ Data controleren โ โผ โ Restore geslaagd
Bij een restore-test wordt onder andere gecontroleerd:
- start de VM;
- start het operating system;
- zijn bestanden aanwezig;
- start Minecraft;
- zijn configuraties aanwezig;
- is de database beschikbaar;
- zijn werelden bruikbaar;
- functioneren plugins.
๐จ Disaster recovery
Bij een ernstig incident kan een volledige infrastructuurrestore noodzakelijk zijn.
Bijvoorbeeld wanneer:
- id="2oz7t6"
๐ฅ๏ธ hv002 โ โผ โ verloren / onbeschikbaar โ โผ ๐๏ธ Backup beschikbaar โ โผ ๐ฅ๏ธ Nieuwe Proxmox-infrastructuur โ โผ ๐พ VM's herstellen โ โผ ๐ฎ Tulpencraft opnieuw beschikbaar
Daarom moeten backups niet alleen bestanden bevatten, maar moet ook duidelijk zijn hoe de infrastructuur opnieuw wordt opgebouwd.
De OS-installatie, server-hardening en installatieprocedures worden daarom afzonderlijk gedocumenteerd in deze wiki.
๐๏ธ Toekomstige infrastructuur
Wanneer Tulpencraft groeit, kan de backuparchitectuur verder worden uitgebreid.
Een mogelijke toekomstige omgeving:
- id="r5o2x1"
๐ฅ๏ธ Proxmox Node โ โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ โ โ โ โผ โผ โผ mc-proxy001 mc-db001 mc-lobby001 โ โผ Game servers โ โผ ๐ฎ โ โโโโโโโโโโโโโโโโโโโโโโโ โ โผ ๐๏ธ Backup Server โ โผ ๐พ Backup storage
Bij verdere groei kan eventueel een tweede fysieke locatie of externe backup worden toegevoegd.
๐ Off-site backups
Een backup op een andere fysieke locatie biedt bescherming tegen incidenten waarbij een volledige locatie verloren gaat.
Denk bijvoorbeeld aan:
- brand;
- stroomproblemen;
- fysieke schade;
- hardwarefalen;
- menselijke fouten;
- ransomware;
- verlies van de volledige hostingomgeving.
Een mogelijke volwassen backupstrategie is daarom:
๐ข Productie
โ
โผ
๐๏ธ Lokale backup
โ
โผ
๐ Externe/off-site backup
Dit hoeft niet direct bij de start van Tulpencraft volledig te worden ingericht, maar vormt wel een mogelijk toekomstig onderdeel van de infrastructuur.
๐ Security
Backups zijn zelf een belangrijk beveiligingsobject.
Een backup kan immers dezelfde gevoelige gegevens bevatten als de productieomgeving.
Daarom gelden onder andere:
- ๐ beperkte toegang;
- ๐ sterke authenticatie;
- ๐ encryptie waar nodig;
- ๐ logging van beheeractiviteiten;
- ๐งน gecontroleerde retentie;
- ๐งช periodieke restore-tests.
Een backup mag nooit worden beschouwd als een โveilige kopieโ die zonder verdere beveiliging kan worden opgeslagen.
๐ Monitoring
De backupomgeving moet zelf eveneens worden gemonitord.
Belangrijke controles zijn bijvoorbeeld:
- laatste succesvolle backup;
- leeftijd van de laatste backup;
- beschikbare backupstorage;
- mislukte backupjobs;
- restore-testresultaten;
- bereikbaarheid van de backupserver.
Een backup die stilletjes drie weken geleden voor het laatst succesvol heeft gedraaid, moet als probleem worden gezien.
Daarom kan Zabbix worden gebruikt om belangrijke backupstatussen te monitoren.
Zie:
๐ Huidige situatie
| Onderdeel | Huidige situatie |
|---|---|
| ๐ฅ๏ธ Virtualisatie | Proxmox VE |
| ๐ฅ๏ธ Host | hv002 |
| โก Productiestorage | NVMe |
| ๐พ VM's | Tulpencraft VM's |
| ๐๏ธ Database | Intern op mc-proxy001 |
| ๐ Monitoring | Zabbix |
| ๐๏ธ Backupplatform | Nog verder vast te leggen |
| ๐ Off-site backup | Toekomstig |
| ๐ Backup-encryptie | Afhankelijk van definitieve backupoplossing |
| ๐งช Restore-tests | Onderdeel van de toekomstige backupprocedure |
De backuparchitectuur wordt verder uitgewerkt zodra de definitieve backupoplossing en opslaglocatie zijn vastgesteld.
๐ท Uitgangspunten
Binnen Tulpencraft gelden de volgende uitgangspunten:
- ๐พ Belangrijke data wordt geback-upt.
- ๐ฅ๏ธ Backups mogen niet uitsluitend op dezelfde fysieke host staan als productie.
- ๐ Kritieke backups worden bij voorkeur ook extern/off-site bewaard.
- ๐ Gevoelige backups worden adequaat beveiligd.
- ๐ Encryptiesleutels worden afzonderlijk van de backupdata beheerd.
- ๐ง Snapshots zijn geen backups.
- ๐งช Backups worden periodiek getest door een restore uit te voeren.
- ๐ Backupjobs worden gemonitord.
- ๐ Retentie wordt bewust ingericht.
- ๐จ Een backupstrategie moet ook een daadwerkelijke disaster recovery mogelijk maken.