Upgrady jsou vždy obtížným a časově náročným úkolem. Nejprve byste měli otestovat svou aplikaci v testovacím prostředí, takže v ideálním případě budete muset naklonovat své aktuální produkční prostředí. Poté musíte vytvořit plán provedení upgradu, který by v závislosti na podnikání mohl být s nulovými prostoji (nebo téměř nulovými), nebo dokonce naplánovat okno údržby, abyste se ujistili, že pokud se něco pokazí, bude to mít co nejmenší dopad. jak je to možné.
Pokud chcete všechny tyto věci provádět ručně, existuje velká pravděpodobnost lidské chyby a proces bude pomalý. V tomto blogu uvidíme, jak automatizovat testování pro upgrade vašich databází MySQL, MariaDB nebo Percona Server pomocí ClusterControl.
Typ upgradů
Existují dva typy upgradů:Drobné upgrady a Velké upgrady.
Drobné upgrady
První, Menší upgrade, je nejběžnější a nejbezpečnější upgrade a ve většině případů se provádí na místě. Protože nic není 100% bezpečné, musíte mít vždy zálohované a replikační podřízené uzly, takže v případě, že se s upgradem něco pokazí a z nějakého důvodu se nemůžete vrátit zpět/downgradovat, můžete povýšit podřízený uzel a vaše systémy mohou stále pracovat bez přerušení.
Tento druh upgradu můžete provést pomocí ClusterControl. Chcete-li to provést, přejděte do ClusterControl -> Vyberte Cluster -> Spravovat -> Upgrady.
Procedura upgradu na každém vybraném uzlu:
-
Uzel zastavení
-
Upgradovat uzel
-
Počáteční uzel
Hlavní uzel v topologii replikace nebude upgradován. Chcete-li upgradovat Master, musí být nejprve povýšen jiný uzel, aby se stal novým Masterem.
Hlavní upgrady
U hlavních upgradů se nedoporučuje upgrade na místě, protože riziko, že se něco pokazí, je pro produkční prostředí příliš vysoké. Místo toho můžete naklonovat svůj aktuální databázový cluster a otestovat tam aplikaci, a když skončíte, můžete jej znovu vytvořit nebo dokonce vytvořit nový cluster v nové verzi a přepnout provoz, až bude připraven. K těmto upgradům existují různé přístupy. Můžete upgradovat uzly jeden po druhém nebo vytvořit jiný cluster replikující provoz z aktuálního, můžete také použít nástroje pro vyrovnávání zatížení pro zlepšení vysoké dostupnosti a další možnosti. Nejlepší přístup závisí na toleranci prostojů a cíli doby zotavení (RTO).
S ClusterControl nemůžete provádět hlavní upgrady přímo, protože, jak jsme zmínili, musíte nejprve vše otestovat, abyste se ujistili, že je upgrade bezpečný, ale můžete použít různé funkce ClusterControl tento úkol jednodušší. Pojďme se tedy podívat na některé z těchto funkcí.
Zálohy
Zálohy jsou nutností před každým upgradem. Dobrá politika zálohování může zabránit velkým problémům pro podnikání. Pojďme se tedy podívat, jak to může ClusterControl automatizovat.
Vytvoření zálohy
Přejděte na ClusterControl -> Vyberte Cluster -> Záloha -> Vytvořit zálohu.
Můžete vytvořit novou zálohu nebo nakonfigurovat plánovanou.
Můžete si vybrat různé metody zálohování v závislosti na technologii databáze a ve stejné sekci si můžete vybrat server, ze kterého chcete zálohu převzít, kam chcete zálohu uložit a pokud chcete nahrát zálohu do cloudu (AWS, Azure nebo Google Cloud) ve stejné úloze.
Můžete také komprimovat a šifrovat zálohu a určit dobu uchování, mimo jiné.
V části zálohování můžete vidět průběh zálohování a informace, jako je metoda, velikost, umístění a další.
Nasazení testovacího prostředí
Za tímto účelem nemusíte vytvářet vše od začátku. Místo toho můžete použít ClusterControl, abyste to udělali ručně nebo automaticky.
Obnovit zálohu na samostatném hostiteli
V části Záloha můžete vybrat možnost „Obnovit a ověřit na samostatném hostiteli“ a obnovit zálohu v samostatném uzlu.
Zde můžete určit, zda chcete, aby ClusterControl nainstaloval software do nového uzlu, a deaktivovat firewall nebo AppArmor/SELinux (v závislosti na OS). K tomu potřebujete vyhrazeného hostitele (nebo VM), který není součástí clusteru.
Uzel můžete ponechat v provozu nebo může ClusterControl vypnout službu databáze až do další úlohy obnovení. Po dokončení uvidíte obnovenou/ověřenou zálohu v seznamu záloh označenou zaškrtnutím.
Pokud tento úkol nechcete provádět ručně, můžete tento proces naplánovat pomocí funkce Ověřit zálohování, aby se tato úloha pravidelně opakovala v úloze zálohování. V další části uvidíme, jak to udělat.
Automatické ověření zálohy ClusterControl
Chcete-li tuto úlohu zautomatizovat, přejděte na ClusterControl -> Vyberte svůj cluster -> Záloha -> Vytvořit zálohu a vyberte možnost Plánované zálohování.
Funkce automatického ověření zálohy je k dispozici pouze pro plánované zálohy a proces je stejný, jaký jsme popsali v předchozí části. Ve druhém kroku se ujistěte, že jste povolili možnost Ověřit zálohu, a vyplňte požadované informace.
Po dokončení úlohy uvidíte v sekci ClusterControl Backup ikonu ověření, stejnou, jakou získáte ručním ověřením, s tím rozdílem, že nepotřebujete starat se o restaurátorský úkol. ClusterControl zálohu pokaždé automaticky obnoví a svou aplikaci můžete otestovat s nejnovějšími daty.
Automatické obnovení a převzetí služeb při selhání
Pokud je povolena funkce automatického obnovení, v případě selhání ClusterControl povýší nejpokročilejší podřízený uzel k ovládání a také vás upozorní na problém. Také selže přes zbytek podřízených uzlů, které se mají replikovat z nového hlavního serveru.
Pokud jsou v topologii Load Balancers, ClusterControl je překonfiguruje tak, aby aplikovaly změny topologie.
V případě potřeby můžete také spustit převzetí služeb při selhání ručně. Přejděte do ClusterControl -> Vyberte klastr -> Uzly -> Vyberte uzel, který chcete povýšit -> Akce uzlů -> Propagovat podřízenou jednotku.
Pokud se během upgradu něco pokazí, můžete to pomocí ClusterControl co nejdříve opravit.
Automatizace věcí pomocí ClusterControl CLI
ClusterControl CLI, také známý jako s9s, je nástroj příkazového řádku představený ve verzi ClusterControl 1.4.1 pro interakci, ovládání a správu databázových clusterů pomocí systému ClusterControl. ClusterControl CLI otevírá dveře pro automatizaci clusteru, kde ji můžete snadno integrovat se stávajícími nástroji pro automatizaci nasazení, jako je Ansible, Puppet, Chef atd. Podívejme se nyní na několik příkladů tohoto nástroje.
Upgrade
$ s9s cluster --cluster-id=19 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=19 \
--available-upgrades \
--nodes='10.10.10.146' \
--log \
--print-json
$ s9s cluster --cluster-id=19 \
--upgrade-cluster \
--nodes='10.10.10.146' \
--log
Vytvořit zálohu
$ s9s backup --create \
--backup-method=mysqldump \
--cluster-id=2 \
--nodes=10.10.10.146:3306 \
--on-controller \
--backup-directory=/storage/backups
--log
Obnovit zálohu
$ s9s backup --restore \
--cluster-id=19 \
--backup-id=3 \
--wait
Ověřit zálohy
$ s9s backup --verify \
--backup-id=3 \
--test-server=10.10.10.151 \
--cluster-id=19 \
--log
Propagovat podřízený uzel
$ s9s cluster --promote-slave \
--cluster-id=19 \
--nodes='10.10.10.146' \
--log
Závěr
Upgrady jsou nezbytné, ale časově náročné úkoly. Nasazení testovacího prostředí pokaždé, když potřebujete upgradovat, může být noční můrou a je těžké udržovat toto aktuální bez jakéhokoli automatizačního nástroje.
ClusterControl vám umožňuje provádět menší upgrady nebo dokonce nasadit testovací prostředí, aby byl upgrade jednodušší a bezpečnější. Můžete jej také integrovat s různými automatizačními nástroji, jako je Ansible, Puppet a další.