Наличието на тестова среда е задължително за всички компании. Може да е необходимо за тестване на промени или нови версии на приложението или дори за тестване на съществуващото ви приложение с нова версия на PostgreSQL. Трудната част от това е, първо, как да разгърнете тестова среда, възможно най-близка до производствената, и как да поддържате тази среда, без да пресъздавате всичко от нулата.
В този блог ще видим как да внедрите тестова среда по различни начини с помощта на ClusterControl, което ще ви помогне да автоматизирате процеса и да избегнете ръчно отнемащи време задачи.
Репликация от клъстер в клъстер
След ClusterControl 1.7.4 има функция, наречена репликация от клъстер към клъстер. Позволява ви да имате репликация, работеща между два автономни клъстера.
Ще разгледаме как да използваме тази функция за съществуващ PostgreSQL клъстер. За тази задача ще приемем, че имате инсталиран ClusterControl и първичният клъстер е разгърнат с него.
Създаване на репликация от клъстер към клъстер
За да създадете нова репликация от клъстер към клъстер от потребителския интерфейс на ClusterControl, отидете на ClusterControl -> Изберете PostgreSQL Cluster -> Cluster Actions -> Създайте подчинен клъстер.
Подчинения клъстер ще бъде създаден чрез поточно предаване на данни от текущия първичен клъстер.
Трябва да посочите SSH идентификационни данни и порт, име за вашия подчинен клъстер и ако искате ClusterControl да инсталира съответния софтуер и конфигурации вместо вас.
След като настроите информацията за SSH достъп, трябва да дефинирате версията на базата данни, datadir, порт и администраторски идентификационни данни. Тъй като ще използва поточно репликация, уверете се, че използвате същата версия на базата данни и идентификационните данни трябва да са същите, използвани от първичния клъстер.
В тази стъпка трябва да добавите сървъра към новия подчинен клъстер. За тази задача можете да въведете както IP адрес, така и име на хост на възела на базата данни.
Можете да наблюдавате състоянието на заданието в монитора на активността на ClusterControl. След като задачата приключи, можете да видите клъстера в главния екран на ClusterControl.
ClusterControl CLI
ClusterControl CLI, известен също като s9s, е инструмент от командния ред, въведен във версия 1.4.1 на ClusterControl за взаимодействие, управление и управление на клъстери от база данни с помощта на системата ClusterControl. ClusterControl CLI отваря нова врата за автоматизация на клъстерите, където можете лесно да го интегрирате със съществуващи инструменти за автоматизация на внедряване като Ansible, Puppet, Chef и др. Можете също да използвате този инструмент ClusterControl, за да създадете подчинен клъстер. Нека видим пример:
$ 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
Сега нека разгледаме използвания параметър по-подробно:
-
Клъстер:За изброяване и манипулиране на клъстери.
-
Създаване:Създайте и инсталирайте нов клъстер.
-
Име на клъстер:Името на новия подчинен клъстер.
-
Тип на клъстер:Типът на клъстера за инсталиране.
-
Версия на доставчика:Версията на софтуера.
-
Възли:Списък на новите възли в подчинения клъстер.
-
Os-user:Потребителското име за SSH командите.
-
Os-key-file:Ключовият файл, който да се използва за SSH връзка.
-
Db-admin:потребителското име на администратора на базата данни.
-
Db-admin-passwd:Паролата за администратора на базата данни.
-
Remote-cluster-id:Главен идентификатор на клъстер за репликацията от клъстер към клъстер.
-
Регистър:Изчакайте и наблюдавайте съобщенията за задание.
Управление на репликация от клъстер към клъстер
Сега вашата репликация от клъстер към клъстер е стартирана и работи, има различни действия за извършване на тази топология с помощта на ClusterControl както от потребителския интерфейс, така и от CLI.
Възстановяване на подчинен клъстер
За да изградите отново подчинен клъстер, отидете на ClusterControl -> Изберете подчинен клъстер -> Възли -> Изберете възел -> Действия на възел -> Повторно изграждане на подчинен клъстер.
ClusterControl ще изпълни следните стъпки:
-
Спиране на PostgreSQL сървър
-
Премахнете съдържанието от неговата директория с данни
-
Предавайте поточно резервно копие от главния към подчинения с помощта на pg_basebackup
-
Стартирайте подчинения
Можете също да създадете отново подчинен клъстер, като използвате следната команда от сървъра на ClusterControl:
$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log
Параметрите са:
-
Репликация:За наблюдение и контрол на репликацията на данни.
-
Етап:Етап/Преизграждане на подчинен репликация.
-
Мастер:Главният главен ресурс в главния клъстер.
-
Slave:Подчинения за репликация в подчинения клъстер.
-
Cluster-id:Идентификаторът на подчинения клъстер.
-
Remote-cluster-id:Идентификаторът на главния клъстер.
-
Регистър:Изчакайте и наблюдавайте съобщенията за задание.
Създаване на клъстер от архивиране
Друг начин за създаване на тестова среда е чрез създаване на нов клъстер от резервно копие на вашия първичен клъстер. За това отидете на ClusterControl -> Изберете вашия PostgreSQL клъстер -> Архивиране. Там изберете резервното копие, което да бъде възстановено от списъка.
Сега можете да възстановите този архив в текущата си база данни, в отделен възел или да създадете нов клъстер от този архив.
Опцията „Създаване на клъстер от резервно копие“ ще създаде нов PostgreSQL клъстер от избрания архив.
Трябва да добавите идентификационните данни за операционната система и базата данни и информацията, за да разположите новия клъстер. Когато тази задача приключи, ще видите новия клъстер в потребителския интерфейс на ClusterControl.
Възстановяване на резервно копие на самостоятелен хост
В същия раздел за архивиране можете да изберете опцията „Възстановяване и проверка на самостоятелен хост“, за да възстановите резервно копие в отделен възел.
Тук можете да посочите дали искате ClusterControl да инсталира софтуера в новия възел и да деактивирате защитната стена или AppArmor/SELinux (в зависимост от операционната система). Можете да поддържате възела работещ или ClusterControl може да изключи услугата на базата данни до следващото задание за възстановяване. Когато приключи, ще видите възстановеното/проверено архивно копие в списъка с архиви, отбелязан с отметка.
Ако не искате да изпълнявате тази задача ръчно, можете да планирате този процес с помощта на функцията за проверка на архивиране, за да повтаряте тази задача периодично в задание за архивиране.
Автоматична проверка на архивиране на ClusterControl
В ClusterControl -> Изберете своя PostgreSQL клъстер -> Архивиране -> Създаване на архив.
Функцията за автоматично потвърждаване на архивиране е налична за планираните резервни копия. Когато планирате архивиране, в допълнение към избора на общи опции като метод или съхранение, трябва също да посочите график/честота.
Използвайки ClusterControl, можете да изберете различни методи за архивиране в зависимост от технологията на базата данни и в същия раздел можете да изберете сървъра, от който да вземете архива, където искате да съхранявате архива и ако искате да качите резервното копие в облака (AWS, Azure или Google Cloud). Можете също да компресирате и шифровате резервното си копие и да посочите периода на съхранение.
За да използвате функцията за проверка на архивиране, имате нужда от специален хост (или VM), който не е част от клъстера. ClusterControl ще инсталира софтуера и ще възстанови архива в този хост всеки път, когато заданието се изпълнява.
След възстановяване, можете да видите иконата за проверка в секцията за архивиране на ClusterControl, същата, която ще имате, като направите проверката по ръчния начин на ClusterControl, с тази разлика, че не е нужно да се притеснявате относно задачата за възстановяване. ClusterControl ще възстановява архива всеки път автоматично.
Заключение
Разгръщането на тестова среда всеки път, когато имате нужда, може да е отнемаща време задача и е трудно да се поддържа тази актуална. Резултатът от това понякога е, че компаниите не тестват нови издания или тестът не е правилен, например, използвайки среда, различна от производствената.
Както можете да видите, ClusterControl ви позволява да внедрите същата среда, която използвате в производството, само с няколко щраквания или дори да автоматизирате процеса, за да избегнете всякакви ръчни задачи.