Door Ben Slater , Chief Product Officer, Instaclustr.
Een live Apache Cassandra-implementatie verplaatsen naar een nieuwe locatie? Het is normaal dat u zich zorgen maakt, zoals hoe u Cassandra-clusters gedurende het hele proces 100% beschikbaar kunt houden. Maar het is een feit dat als uw toepassing online kan blijven tijdens wijzigingen in de verbindingsinstellingen, deze tijdens deze overgang volledig beschikbaar kan blijven. Voor extra bescherming en gemoedsrust bevat de volgende techniek ook een snelle rollback-strategie om terug te keren naar uw oorspronkelijke configuratie, tot het moment dat de migratie is voltooid.
Hier is een aanbevolen Cassandra-clustermigratievolgorde van zeven stappen die uitvaltijd voorkomt:
1. Maak uw bestaande omgeving gereed.
Zorg er allereerst voor dat uw toepassing een datacenterbewust beleid voor taakverdeling gebruikt, evenals LOCAL_*. Controleer ook of alle van de sleutelruimten die naar het nieuwe cluster worden gekopieerd, is ingesteld op het gebruik van NetworkTopologyStrategy als hun replicatiestrategie. Het wordt ook aanbevolen dat alle sleutelruimten deze replicatiestrategie gebruiken wanneer ze worden gemaakt, omdat het later wijzigen hiervan ingewikkeld kan worden.
2. Maak het nieuwe cluster.
Nu is het tijd om het nieuwe cluster te maken waarnaar u gaat migreren. Hier moet u op een paar dingen letten:Zorg ervoor dat het nieuwe cluster en het oorspronkelijke cluster dezelfde Cassandra-versie en clusternaam gebruiken. Ook moet de nieuwe datacenternaam die u gebruikt, verschillen van de naam van het bestaande datacenter.
3. Sluit je samen aan bij de Clusters.
Om dit te doen, moet u eerst de nodige wijzigingen in de firewallregel aanbrengen om de clusters te kunnen koppelen, waarbij u er rekening mee moet houden dat er ook enkele wijzigingen in het broncluster nodig kunnen zijn. Wijzig vervolgens de seed-knooppunten van het nieuwe cluster en start ze. Zodra dit is gebeurd, wordt het nieuwe cluster een tweede datacenter in het oorspronkelijke cluster.
4. Wijzig de replicatie-instellingen.
Werk vervolgens in het bestaande cluster de replicatie-instellingen bij voor de keyspaces die worden gekopieerd, zodat de gegevens nu worden gerepliceerd met het nieuwe datacenter als bestemming.
5. Kopieer de gegevens naar het nieuwe cluster.
Wanneer de clusters zijn samengevoegd, begint Cassandra de schrijfbewerkingen naar het nieuwe cluster te repliceren. Het is echter nog steeds nodig om bestaande gegevens te kopiëren met de nodetool-reconstructiefunctie. Het is een best practice om deze functie met één of twee knooppunten tegelijk op het nieuwe cluster uit te voeren, om de bestaande cluster niet te veel te belasten met streaming.
6. Verander de verbindingspunten van de applicatie.
Nadat alle gebruik van de rebuild-functie is voltooid, bevat elk van de clusters een volledige kopie van de gegevens die worden gemigreerd, die Cassandra automatisch gesynchroniseerd houdt. Het is nu tijd om de initiële verbindingspunten van uw applicatie te wijzigen naar de knooppunten in het nieuwe cluster. Zodra dit is voltooid, worden alle lees- en schrijfbewerkingen uitgevoerd door het nieuwe cluster en vervolgens gerepliceerd in het oorspronkelijke cluster. Ten slotte is het slim om een reparatiefunctie over het cluster uit te voeren, om ervoor te zorgen dat alle gegevens met succes zijn gerepliceerd vanaf het origineel.
7. Sluit de oorspronkelijke cluster af.
Voltooi het proces met een kleine opruiming na de migratie en verwijder het oorspronkelijke cluster. Wijzig eerst de firewallregels om de oorspronkelijke cluster los te koppelen van de nieuwe. Werk vervolgens de replicatie-instellingen in het nieuwe cluster bij om de replicatie van gegevens naar het oorspronkelijke cluster te stoppen. Sluit ten slotte het oorspronkelijke cluster af.
En daar heb je het:je Apache Cassandra-implementatie is volledig gemigreerd, zonder downtime, met weinig risico en op een manier die volledig naadloos en transparant is vanuit het perspectief van je eindgebruikers.
Over de auteur
Ben Slater is Chief Product Officer bij Instaclustr, een leverancier van enterprise-grade, gehoste en volledig beheerde Apache Cassandra open source data-infrastructuur in de cloud.