Проверка/выполнения резервного копирования
Преимущества:
- Продемонстрировать готовность
- Повышение отказоустойчивости
Цель
У вас есть резервные копии? Цель этого упражнения состоит в том, чтобы администратор смог убедиться, что созданы соответствующие резервные копии развертывания Qlik Sense Enterprise. Это позволяет администратору повысить отказоустойчивость организации, продемонстрировать готовность и укрепить процессы резервного копирования до того, как они понадобятся.
Что включать в резервную копию?
В Qlik Sense Enterprise в Windows есть три основных компонента (и один дополнительный), для которых необходимо создать резервную копию, чтобы поддерживать минимально работающий сайт:
- Постоянный контент, используемый сайтом.
- Метаданные всего сайта, хранящиеся в PostgreSQL.
- Сертификаты, используемые сайтом Qlik для внутреннего взаимодействия.
- Дополнительные данные
Постоянный контент
Постоянный контент, используемый сайтом, включает такие вещи, как приложения, расширения и изображения, используемые в эскизах приложений. Это основные элементы сайта Qlik. В случае аварии администратор может использовать эти ресурсы для восстановления сайта Qlik с нуля. Контент хранится по частям в Service Cluster (Кластере Служб) сайта. Чтобы подтвердить это местоположение в QMC, перейдите в раздел Кластер Служб.
Обратите внимание на Root folder (Корневую папку).
PostgreSQL
Под каждым сайтом Qlik Sense Enterprise на Windows находится ряд баз данных PostgreSQL, в которых хранятся метаданные всего сайта. Эти метаданные содержат информацию о владении ресурсами, иерархиями, настройками аутентификации, правилами безопасности, лицензиями и т. д. Часть этой информации отображается в QMC. Комбинация метаданных и постоянного контента обеспечивает более плавный процесс восстановления. На примере приложений Qlik, структура физического файла на диске упрощена. В опубликованном приложении Qlik могут быть листы, которые являются частью базового приложения, листы, опубликованные для сообщества для использования всей пользовательской базой, и частные листы, созданные отдельными лицами для личного анализа. В физическом файл, хранящемся на диске, нет различий между этими состояниями листов, поэтому, если бы администратор импортировал файл с диска, он бы получил список всех листов независимо от их статуса.
Сертификаты
При разработке Qlik Sense Enterprise защита от перехвата информации встроена с использованием сертификатов, которые Qlik генерирует для шифрования всего трафика между сервисами. Сообщения шифруется независимо от того, является ли они автономными с одним сервером или распределены по нескольким узлам в кластере. Эти сертификаты также используются для шифрования конфиденциальных данных, хранящихся в PostgreSQL (например, паролей для подключений к данным). В связи с этим исходные сертификаты на сайте Qlik могут быть восстановлены без проблем. Соответственно и сайт Qlik Sense может быть восстановлен без резервных копий сертификатов, но тогда потребуется повторный ввод паролей, повторное распространения новых сертификатов среди других членов кластера Qlik Sense, а также замена сертификатов, используемых в точках интеграции, таких как «Продажа билетов через Интернет, с использованием Qlik Proxy API», «задачи автоматизации с использованием Qlik Repository API» или «интеграции визуализации с помощью Qlik Engine API».
Дополнительный контент
Предыдущие элементы универсальны для каждого сайта Qlik Sense Enterprise, а данный индивидуален. Когда мы говорим «дополнительный контент», мы имеем в виду все материалы, не относящиеся к Qlik, которые важны для сайта Qlik. Они могут включать (но не ограничиваются):
- Сторонние сертификаты, прикрепленные к прокси-службе Qlik Sense для обеспечения надежной связи HTTPS.
- Сторонние драйверы, установленные в операционной системе Windows, для подключения к базам данных без дополнительных возможностей подключения.
- Модули расширения на стороне сервера (например, Python, R), которые работают на сервере Qlik.
- Код автоматизации, который выполняется на сервере Qlik (например, как процесс резервного копирования)
Как сделать резервную копию?
Постоянный контент
Поскольку эти файлы являются просто файлами в файловой системе, идеально использовать существующие механизмы для резервного копирования файлов. Это могут быть скриншоты на уровне виртуальной машины, процессы резервного копирования на устройствах хранения (например, NAS, SAN), если эти устройства используются для размещения общего ресурса Qlik.
Важным компонентом этого процесса резервного копирования является то, что оно должно выполняться синхронно с резервным копированием метаданных PostgreSQL. Это идеально подходит для остановки служб Qlik Sense во время процесса резервного копирования. Это гарантирует, что состояние на диске в точности соответствует состоянию в базе данных PostgreSQL. Подумайте о том, чтобы ни один пользователь не создал новый лист. В крайнем случае допустимо асинхронное резервное копирование, но возможна потеря данных.
Если администратору необходимо вручную создать резервную копию этих файлов, мы рассмотрим это в следующем разделе, где мы рассмотрим полное решение для резервного копирования.
PostgreSQL
Для резервного копирования PostgreSQL используйте процесс pg_dump PostgreSQL. Это можно проиллюстрировать на следующем примере сценария PowerShell:
Скрипт
# Определить каталог резервного копирования $backupDir = 'C:\QSR' # Определить пароль PostgreSQL $pwd = 'MySuperSecretPassword' # Передаем пароль переменной окружения для PostgreSQL $env:PGPASSWORD = $pwd # Определить путь установки $installPath = (Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | % { Get-ItemProperty $_.PsPath } | Select DisplayName,InstallLocation | Where-Object {$_.DisplayName -eq 'Qlik Sense Repository'}).InstallLocation # Создайте каталог для резервных копий, если необходимо if (Test-Path $backupDir) { } else { New-Item -ItemType directory -Path $backupDir | Out-Null } # Подкаталог PostgreSQL каталога установки GOTO Set-Location $installPath\Repository\PostgreSQL\*\bin # Выполнить резервное копирование .\pg_dump.exe -h localhost -p 4432 -U postgres -b -F t -f "$($backupDir)\$(Get-Date -Format 'yyyy-MM-dd')-QSR.tar" QSR .\pg_dump.exe -h localhost -p 4432 -U postgres -b -F t -f "$($backupDir)\$(Get-Date -Format 'yyyy-MM-dd')-Licenses.tar" Licenses .\pg_dump.exe -h localhost -p 4432 -U postgres -b -F t -f "$($backupDir)\$(Get-Date -Format 'yyyy-MM-dd')-SenseServices.tar" SenseServices .\pg_dump.exe -h localhost -p 4432 -U postgres -b -F t -f "$($backupDir)\$(Get-Date -Format 'yyyy-MM-dd')-QLogs.tar" QLogs .\pg_dump.exe -h localhost -p 4432 -U postgres -b -F t -f "$($backupDir)\$(Get-Date -Format 'yyyy-MM-dd')-QSMQ.tar" QSMQ # Удаляем переменную окружения для пароля PostgreSQL Remove-Item Env:\PGPASSWORD
Окружение Remove-Item: \ PGPASSWORD
Примечание для данного скрипта: выполняется резервное копирование всех баз данных, используемых Qlik Sense Enterprise версии February 2020, включая дополнительную базу данных централизованного журнала. Поэтому чтобы обеспечить полный охват всех используемых баз, проверяйте документацию для вашей версии сайта и дополняйте скрипт по необходимости. Информацию можно найти на странице справки Qlik по установке и настройке PostgreSQL, на которой описаны необходимые базы данных.
Сертификаты
На сайте Qlik есть три сертификата:
- Корневой сертификат
- Сертификат сервера
- Сертификат клиента
(1) используется для генерации (2) и (3). Каждый компонент использует либо (2), либо (3) в зависимости от того, является ли он клиентом или сервером в обмене. (2) аналогично привязан к портам API, которые могут быть интегрированы в модули аутентификации (т. е. с использованием QPS API) или процессы автоматизации (т. е. с использованием QRS API). Важно сохранить резервную копию этих сертификатов на случай восстановления. Строго говоря, нет необходимости в инкрементном резервном копировании этих сертификатов, но, тем не менее, целесообразно интегрировать процесс резервного копирования. Вот пример того, как автоматизировать этот процесс:
Скрипт
# Определить каталог резервного копирования $backupDir = 'C:\QSR' # Определить пароль сертификата $pwd = 'MySuperSecretPassword' # Создайте каталог для резервных копий, если необходимо if (Test-Path $backupDir) { } else { New-Item -ItemType directory -Path $backupDir | Out-Null } # Получить отпечаток корневого сертификата $store = Get-Item "cert:\LocalMachine\Root"; $store.Open("ReadOnly"); $certs = $store.Certificates.Find("FindByExtension", "1.3.6.1.5.5.7.13.3", $false); $rootThumb = $certs.Thumbprint # Получить отпечаток сертификата сервера $store = Get-Item "cert:\LocalMachine\My"; $store.Open("ReadOnly"); $certs = $store.Certificates.Find("FindByExtension", "1.3.6.1.5.5.7.13.3", $false); $serverThumb = $certs.Thumbprint # Получить отпечаток сертификата клиента $store = Get-Item "cert:\CurrentUser\My"; $store.Open("ReadOnly"); $certs = $store.Certificates.Find("FindByExtension", "1.3.6.1.5.5.7.13.3", $false); $clientThumb = $certs.Thumbprint # Экспорт сертификатов в backupDir $null = certutil -f -p $pwd -exportpfx -privatekey Root $rootThumb "$backupDir\$(Get-Date -Format 'yyyy-MM-dd')-root.pfx" $null = certutil -f -p $pwd -exportpfx -privatekey MY $serverThumb "$backupDir\$(Get-Date -Format 'yyyy-MM-dd')-server.pfx" NoRoot $null = certutil -f -p $pwd -exportpfx -privatekey -user MY $clientThumb "$backupDir\$(Get-Date -Format 'yyyy-MM-dd')-client.pfx" NoRoot
Неавтоматизированный процесс задокументирован на справочном сайте Qlik.
Дополнительный контент
В этом разделе администратору необходимо будет изучить другие материалы, не относящиеся к Qlik, и убедиться, что было выполнено надлежащее резервное копирование этих элементов. Это могут быть установочные файлы (в случае драйверов) и конфигурации (для DSN) до сертификатов третьих сторон. Первоначально этот процесс потребует некоторых усилий, но на практике администраторы должны выработать привычку размещать необходимые вещи, не относящиеся к Qlik, в то место, на которое можно ссылаться в документации для полноты развертывания Qlik вместе с конкретными необходимыми конфигурациями. Это планирование и документация могут иметь решающее значение в сценарии бедствия или быть хорошо оценены следующим человеком, который возьмет на себя ответственность за администрирование развертывания Qlik.
Полные резервные копии
При каждой (современной) установке Qlik Sense Enterprise развертывается дополнительная утилита. Это служебная программа (QlikSenseUtil.exe), находится в папке установки Qlik Sense Enterprise в каталоге Util репозитория. При установке по умолчанию путь к утилите будет C:\Program Files\Qlik\Sense\Repository\Util\QlikSenseUtil\QlikSenseUtil.exe. Одна из многих функций, предоставляемых этой служебной программой – это возможность выполнять полное резервное копирование сайта Qlik Sense Enterprise через командную строку. Есть обширная статья службы поддержки Qlik, в которой более подробно рассматривается эта утилита - ссылка. Здесь же приведем пример команды, которую можно использовать для создания полной резервной копии сайта.
"C:\Program Files\Qlik\Sense\Repository\Util\QlikSenseUtil\QlikSenseUtil.exe" -backup -databaseHostname="localhost" -databasePassword="MySuperSecretPassword" -path="D:\Backups" -rootPath="\\MyServer\Share"
Утилита сделает снимки всех файлов в общей папке Qlik, в базе данных и во внутренних сертификатах Qlik. Этот инструмент идеально подходит для многих организаций, где гибкость настраиваемых сценариев резервного копирования не требуется.
Как я могу убедиться, что резервное копирование выполняется?
Убедившись, что процесс резервного копирования проходит, администратор должен проверить наличие резервных копий в указанном хранилище резервных копий. Это хранилище резервных копий должно находиться за пределами сервера Qlik Sense Enterprise. Поэтому будет идеально, если вы будете структурировать резервные копии в формате, в котором можно выполнить быструю проверку, чтобы убедиться, что резервное копирование происходит. Например:
D:\QSBackup D:\QSBackup\YYYY-MM-DD D:\QSBackup\YYYY-MM-DD\QlikShare D:\QSBackup\YYYY-MM-DD\Certificates D:\QSBackup\YYYY-MM-DD\Database
Использование подобной структуры позволяет администратору быстро исследовать:
- существует ли ожидаемая корневая папка (ГГГГ-ММ-ДД)
- имеют ли файлы в папках QlikShare, Certificates и Database ненулевой размер файла
Документация