Posiadanie środowiska testowego jest koniecznością we wszystkich firmach. Może to być konieczne do testowania zmian lub nowych wydań aplikacji, a nawet do testowania istniejącej aplikacji z nową wersją PostgreSQL. Najtrudniejszą częścią tego jest po pierwsze, jak wdrożyć środowisko testowe jak najbardziej zbliżone do produkcyjnego i jak utrzymać to środowisko bez odtwarzania wszystkiego od zera.
W tym blogu zobaczymy, jak wdrożyć środowisko testowe na różne sposoby przy użyciu ClusterControl, co pomoże zautomatyzować proces i uniknąć ręcznych, czasochłonnych zadań.
Replikacja między klastrami
Od wersji ClusterControl 1.7.4 istnieje funkcja o nazwie Cluster-to-Cluster Replication. Pozwala na uruchomienie replikacji między dwoma autonomicznymi klastrami.
Przyjrzymy się, jak wykorzystać tę funkcję w istniejącym klastrze PostgreSQL. W tym zadaniu założymy, że masz zainstalowany ClusterControl i przy jego użyciu wdrożono klaster podstawowy.
Tworzenie replikacji między klastrami
Aby utworzyć nową replikację Cluster-to-Cluster z interfejsu ClusterControl, przejdź do ClusterControl -> Wybierz Klaster PostgreSQL -> Akcje klastra -> Utwórz klaster podrzędny.
Klaster Slave zostanie utworzony przez strumieniowe przesyłanie danych z bieżącego klastra głównego.
Musisz określić poświadczenia i port SSH, nazwę swojego klastra podrzędnego oraz czy chcesz, aby ClusterControl zainstalował dla ciebie odpowiednie oprogramowanie i konfiguracje.
Po skonfigurowaniu informacji o dostępie SSH należy zdefiniować wersję bazy danych, katalog danych, port i poświadczenia administratora. Ponieważ będzie korzystać z replikacji strumieniowej, upewnij się, że używasz tej samej wersji bazy danych, a poświadczenia muszą być takie same, jak używane przez klaster podstawowy.
W tym kroku musisz dodać serwer do nowego klastra Slave. W tym zadaniu możesz wprowadzić adres IP lub nazwę hosta węzła bazy danych.
Możesz monitorować stan zadania w monitorze aktywności ClusterControl. Po zakończeniu zadania możesz zobaczyć klaster na głównym ekranie ClusterControl.
ClusterControl CLI
ClusterControl CLI, znany również jako s9s, to narzędzie wiersza poleceń wprowadzone w ClusterControl w wersji 1.4.1 do interakcji, kontroli i zarządzania klastrami baz danych za pomocą systemu ClusterControl. ClusterControl CLI otwiera nowe drzwi dla automatyzacji klastra, gdzie można go łatwo zintegrować z istniejącymi narzędziami do automatyzacji wdrażania, takimi jak Ansible, Puppet, Chef itp. Możesz również użyć tego narzędzia ClusterControl do utworzenia klastra Slave. Zobaczmy przykład:
$ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=13 --nodes="192.168.100.133" --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=14 --log
Teraz zobaczmy bardziej szczegółowo użyty parametr:
-
Klaster:wyświetlanie klastrów i manipulowanie nimi.
-
Utwórz:utwórz i zainstaluj nowy klaster.
-
Nazwa klastra:nazwa nowego klastra podrzędnego.
-
Typ klastra:typ klastra do zainstalowania.
-
Wersja dostawcy:Wersja oprogramowania.
-
Węzły:Lista nowych węzłów w Klastrze Slave.
-
Os-user:nazwa użytkownika dla poleceń SSH.
-
Plik-klucza systemu operacyjnego:Plik klucza używany do połączenia SSH.
-
Db-admin:nazwa użytkownika administratora bazy danych.
-
Db-admin-passwd:hasło administratora bazy danych.
-
Remote-cluster-id:identyfikator głównego klastra na potrzeby replikacji klaster-klaster.
-
Dziennik:czekaj i monitoruj wiadomości o zadaniach.
Zarządzanie replikacją między klastrami
Teraz masz już uruchomioną replikację klastrów do klastrów, istnieją różne działania do wykonania w tej topologii przy użyciu ClusterControl zarówno z interfejsu użytkownika, jak i interfejsu wiersza polecenia.
Odbudowa klastra niewolników
Aby odbudować klaster podrzędny, przejdź do ClusterControl -> Wybierz klaster podrzędny -> Węzły -> Wybierz węzeł -> Akcje węzła -> Odbuduj podrzędny serwer replikacji.
ClusterControl wykona następujące kroki:
-
Zatrzymaj serwer PostgreSQL
-
Usuń zawartość z katalogu danych
-
Przesyłaj strumieniowo kopię zapasową z Master do Slave za pomocą pg_basebackup
-
Uruchom Slave
Możesz także odbudować klaster Slave za pomocą następującego polecenia z serwera ClusterControl:
$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log
Parametry to:
-
Replikacja:Do monitorowania i kontrolowania replikacji danych.
-
Etap:Etapowanie/odbudowa niewolnika replikacji.
-
Master:wzorzec replikacji w klastrze głównym.
-
Slave:Slave replikacji w klastrze slave.
-
Cluster-id:identyfikator klastra Slave.
-
Remote-cluster-id:identyfikator głównego klastra.
-
Dziennik:czekaj i monitoruj wiadomości o zadaniach.
Utwórz klaster z kopii zapasowej
Innym sposobem utworzenia środowiska testowego jest utworzenie nowego klastra z kopii zapasowej klastra podstawowego. W tym celu przejdź do ClusterControl -> Wybierz swój klaster PostgreSQL -> Kopia zapasowa. Tam wybierz z listy kopię zapasową do przywrócenia.
Teraz możesz przywrócić tę kopię zapasową w bieżącej bazie danych, w osobnym węźle lub utworzyć nowy klaster z tej kopii zapasowej.
Opcja „Utwórz klaster z kopii zapasowej” utworzy nowy klaster PostgreSQL z wybranej kopii zapasowej.
Musisz dodać poświadczenia systemu operacyjnego i bazy danych oraz informacje, aby wdrożyć nowy klaster. Po zakończeniu tego zadania zobaczysz nowy klaster w interfejsie użytkownika ClusterControl.
Przywróć kopię zapasową na samodzielnym hoście
W tej samej sekcji Kopia zapasowa możesz wybrać opcję „Przywróć i zweryfikuj na samodzielnym hoście”, aby przywrócić kopię zapasową w osobnym węźle.
Tutaj możesz określić, czy chcesz, aby ClusterControl zainstalował oprogramowanie w nowym węźle i czy wyłączyć zaporę ogniową lub AppArmor/SELinux (w zależności od systemu operacyjnego). Możesz utrzymać węzeł w stanie aktywnym lub ClusterControl może wyłączyć usługę bazy danych do następnego zadania przywracania. Po zakończeniu zobaczysz przywróconą/zweryfikowaną kopię zapasową na liście kopii zapasowych oznaczoną haczykiem.
Jeśli nie chcesz wykonywać tego zadania ręcznie, możesz zaplanować ten proces za pomocą funkcji Weryfikuj kopię zapasową, aby okresowo powtarzać to zadanie w zadaniu kopii zapasowej.
Automatyczna weryfikacja kopii zapasowej ClusterControl
W ClusterControl -> Wybierz swój klaster PostgreSQL -> Kopia zapasowa -> Utwórz kopię zapasową.
Funkcja automatycznej weryfikacji kopii zapasowej jest dostępna dla zaplanowanych kopii zapasowych. Planując tworzenie kopii zapasowej, oprócz wybrania typowych opcji, takich jak metoda lub pamięć, musisz również określić harmonogram/częstotliwość.
Korzystając z ClusterControl, możesz wybrać różne metody tworzenia kopii zapasowych, w zależności od technologii bazy danych oraz, w tej samej sekcji, możesz wybrać serwer, z którego chcesz wykonać kopię zapasową, gdzie chcesz przechowywać kopię zapasową oraz jeśli chcesz przesłać kopię zapasową do chmury (AWS, Azure lub Google Cloud). Możesz także skompresować i zaszyfrować kopię zapasową oraz określić okres przechowywania.
Aby użyć funkcji Weryfikuj kopię zapasową, potrzebujesz dedykowanego hosta (lub maszyny wirtualnej), który nie jest częścią klastra. ClusterControl zainstaluje oprogramowanie i przywróci kopię zapasową na tym hoście za każdym razem, gdy uruchomione zostanie zadanie.
Po przywróceniu możesz zobaczyć ikonę weryfikacji w sekcji ClusterControl Backup, taką samą, jaką uzyskasz, wykonując weryfikację w ręczny sposób ClusterControl, z tą różnicą, że nie musisz się martwić o zadaniu restauracyjnym. ClusterControl automatycznie przywróci kopię zapasową za każdym razem.
Wnioski
Wdrażanie środowiska testowego za każdym razem, gdy jest to potrzebne, może być czasochłonnym zadaniem, a utrzymanie go na bieżąco jest trudne. Skutkiem tego jest to, że firmy czasami nie testują nowych wydań lub test nie jest poprawny, na przykład przy użyciu innego środowiska niż produkcyjne.
Jak widać, ClusterControl pozwala za pomocą kilku kliknięć wdrożyć to samo środowisko, którego używasz w produkcji, a nawet zautomatyzować proces, aby uniknąć ręcznego zadania.