Резервное копирование и восстановление
Чтобы обеспечить возможность восстановления работы PAM в случае сбоя, выполняйте регулярное резервирование и резервное копирование:
баз данных —
pam,keycloak,vault.файловых хранилищ S3, FS или NFS — видео и текстовые записи сессий.
скриптов и конфигураций — плейбуки и файлы настройки сервисов для развертывания РАМ.
Резервное копирование может быть выполнено:
Ручное резервное копирование
Предварительные действия
Перед тем, как выполнять резервное копирование:
Остановите сервисы
web-auth,web-api,web-site,vaultиcontrol.Дождитесь завершения сессий.
Остановите воркеры и
audit-log-sender.
После этого, выполните ручное резервное копирование записей сессий и баз данных.
Порядок резервного копирования
1. База данных PAM
Для резервного копирования БД PAM используется pg_dump.
Пример
pg_dump -U <user> pam > /var/bpam/backups/db/pam.$(date +%s).sql pg_dump -U <user> keycloak > /var/bpam/backups/db/keycloak.$(date +%s).sql pg_dump -U <user> vault > /var/bpam/backups/db/vault.$(date +%s).sql
Резервные копии должны храниться:
централизованно в выделенной директории, например
/opt/bizonepam.на реплике PostgreSQL.
2. Записи сессий
Для резервного копирования файлов сессий используйте rsync.
Копирование записей из FS или NFS
В отдельном командном интерпретаторе shell вызовите:
sh -c "DATE=\$(date +\%Y\%m\%d\%H\%M\%S); mkdir -p /var/bpam/backups/sessions/sessions.\$DATE; rsync -ahvc /var/bpam/sessions/ /var/bpam/backups/sesions.\$DATE/"
В результате выполнения, будут:
создана переменная окружения
DATEсо значением штампа в формате%Y\%m\%d\%H\%M\%S.создана директория по указанному пути
/var/bpam/backups/sessions/sessions.\$DATE.скопированы файлы сессий.
По необходимости, после выполнения ручного резервного копирования, остановите БД.
Копирование записей из S3-хранилища
В отдельном командном интерпретаторе shell вызовите:
sh -c "DATE=\$(date +\%Y\%m\%d\%H\%M\%S); mkdir -p /var/bpam/backups/sessions/sessions.\$DATE; rsync -ahvc <s3_dir>/<bucket_dir>/ /var/bpam/backups/sessions.\$DATE/<bucket_dir>/"
где:
<s3_dir>– директория S3-хранилища;<bucket_dir>– директория бакета S3-хранилища с записями сессий.
В результате выполнения, будут:
создана переменная окружения
DATEсо значением штампа в формате%Y\%m\%d\%H\%M\%S;создана директория по указанному пути
/var/bpam/backups/sessions/sessions.\$DATE;скопированы файлы сессий.
По необходимости, после выполнения ручного резервного копирования, остановите БД.
3. Скрипты установки
Для резервного копирования скриптов установки сохраните плейбуки развертывания РАМ. Они должны храниться в централизованном месте в рамках CDP-job.
Плейбук выпускается с заранее определенными переменными и конфигурациями.
При развертывании плейбук воспроизводит среду РАМ на новой машине.
Плейбук хранится в централизованном месте в директории, например
/opt/bizonepam.
Все процедуры резервного копирования должны быть протестированы в тестовой среде
Ручное резервное копирование с помощью скрипта
Предварительные действия
Перед тем, как выполнять резервное копирование:
Ознакомьтесь с содержанием скрипта резервного копирования;
Заполните и адаптируйте конфигурационный файл скрипта для вашего окружения;
После этого, выполните ручное резервное копирование с помощью скрипта.
Порядок резервного копирования
Содержание скрипта
Для автоматизации резервного копирования используйте скрипт. Скрипт автоматизации должен выполнять:
резервное копирование БД;
копирование файлов сессий;
проверку целостности;
ротацию резервных копий.
Скрипт можно запускать как вручную, так и автоматически по расписанию через cron-job или systemd timer.
#!/bin/bash set -e CONFIG_FILE="/opt/bizonepam/backup.conf" - добавить что должно лежать внутри, какие переменные используются и для чего # Загрузка конфигурации if [[ -f "$CONFIG_FILE" ]]; then source "$CONFIG_FILE" else echo "Конфигурационный файл $CONFIG_FILE не найден!" exit 1 fi TIMESTAMP=$(date +"%Y%m%d%H%M%S") log() { echo "[$(date +"%F %T")] $1" [[ -n "$LOG_FILE" ]] && echo "[$(date +"%F %T")] $1" >> "$LOG_FILE" } log "=== Запуск резервного копирования PAM ===" # ========================================================== # Функция: резервное копирование БД PostgreSQL # ========================================================== backup_databases() { log "--- Резервное копирование БД ---" mkdir -p "$DB_BACKUP_DIR" for DB in $DB_LIST; do OUT_FILE="$DB_BACKUP_DIR/${DB}.${TIMESTAMP}.sql" log "Создание дампа БД $DB → $OUT_FILE" pg_dump -U "$PG_USER" "$DB" > "$OUT_FILE" if [[ $? -eq 0 ]]; then log "Дамп БД $DB создан успешно." else log "Ошибка создания дампа $DB!" fi done } # ========================================================== # Функция: копирование файлов сессий # ========================================================== backup_sessions() { log "--- Резервное копирование файлов сессий ---" TARGET_DIR="$SESSIONS_BACKUP_DIR/sessions.$TIMESTAMP" mkdir -p "$TARGET_DIR" if [[ "$USE_S3" == "true" ]]; then log "Копирование сессий из S3 ($S3_SOURCE)" rsync -ahv $([[ "$CHECKSUM_VERIFY" == "true" ]] && echo "-c") \ "$S3_RCLONE_REMOTE"/ "$TARGET_DIR"/ else log "Копирование локальных/NFS сессий" rsync -ahv $([[ "$CHECKSUM_VERIFY" == "true" ]] && echo "-c") \ "$SESSIONS_SOURCE"/ "$TARGET_DIR"/ fi } # ========================================================== # Функция: ротация резервных копий # ========================================================== rotate_backups() { log "--- Ротация резервных копий ---" # Ротация БД find "$DB_BACKUP_DIR" -type f -mtime "+$RETENTION_DAYS" -delete # Ротация сессий cd "$SESSIONS_BACKUP_DIR" ls -1dt sessions.* | tail -n +$((SESSIONS_RETENTION+1)) | xargs -r rm -rf } # ========================================================== # Функция: проверка контрольных сумм (rsync dry-run) # ========================================================== verify_sessions() { if [[ "$CHECKSUM_VERIFY" != "true" ]]; then log "Проверка контрольных сумм отключена." return fi log "--- Проверка контрольных сумм ---" rsync -ahvn -c "$SESSIONS_SOURCE"/ "$TARGET_DIR"/ log "Проверка завершена." } # ========================================================== # Основная последовательность выполнения # ========================================================== backup_databases backup_sessions verify_sessions rotate_backups log "=== Резервное копирование завершено ==="
Конфигурационный файл скрипта
Перед началом копирования, скрипт необходимо адаптировать под ваше окружение. Скрипт можно настроить с помощью конфигурационного файла.
На входе скрипт должен принимать параметры:
пути к БД и файлам;
названия БД;
периодичность создания копий;
количество хранимых копий.
# =============== Общие параметры =============== # Центральная директория хранения BACKUP_ROOT="/opt/bizonepam" # Количество хранимых копий RETENTION_DAYS=30 # Включить логирование в файл LOG_FILE="/var/log/bpam_backup.log" # =============== Параметры БД =============== # Пользователь PostgreSQL PG_USER="pamuser" # Перечень баз данных DB_LIST="pam keycloak vault" # Директория хранения дампов DB_BACKUP_DIR="/opt/bizonepam/backups/db" # =============== Параметры копирования сессий =============== # Локальный каталог сессий SESSIONS_SOURCE="/var/bpam/sessions" # Цель для бэкапа (FS/NFS) SESSIONS_BACKUP_DIR="/opt/bizonepam/backups/sessions" # Пример для S3 (оставить пустым если не нужно) S3_SOURCE="" # например: "s3://my-bucket/pam-sessions" S3_RCLONE_REMOTE="" # например: "pam_s3:" USE_S3="false" # true / false # =============== Ротация =============== # Количество версий директорий с файлами сессий SESSIONS_RETENTION=7 # =============== Проверки целостности =============== # Включить сравнение контрольных сумм rsync CHECKSUM_VERIFY="true"
Автоматизированное резервное копирование с помощью скрипта по расписанию
Предварительные действия
Перед тем, как выполнять резервное копирование:
Убедитесь что скрипт и его конфигурационный файл корректны.
Проверьте настройки системного времени и часового пояса на сервере.
Порядок резервного копирования
Разместите скрипт в директории
/opt/bizonepam/bpam_backup.sh, а конфигурационный файл по пути/opt/bizonepam/backup.conf.Проверьте права на выполнение скрипта. Если их нет, добавьте с помощью
chmod +x /opt/bizonepam/bpam_backup.shПроверьте, что в конфигурационном файле заданы:
пути к БД,
каталоги сессий,
параметры ротации,
логирование,
настройки S3/NFS.
При необходимости, скорректируйте настройки.
Выполните
crontab -eот пользователя, который будет производить автоматизированное резервное копирование. Чаще всего это системный привилегированный пользовательroot.Добавьте в открывшийся файл строку
0 2 * * * /opt/bizonepam/bpam_backup.shдля запуска скрипта ежедневно в 2:00.Сохраните и примените cron-конфигурацию. После сохранения проверьте
cron-jobс помощью командыcrontab -l.В выводе команды должна быть строка, которая указана на предыдущем шаге.
Порядок восстановления компонентов
Общий порядок операций при восстановлении включает в себя:
Подготовку виртуальных машин, подключение репозиториев и настройку сетевых параметров.
Восстановление баз данных.
Развертывание PAM с помощью плейбуков.
Восстановление файлов сессий.
Запуск и проверку работоспособности.
1. Подготовка ВМ
Подготовьте виртуальные машины в соответствии с техническими требованиями PAM.
Подключите на ВМ репозитории с пакетами для работы PAM:
Основной — https://dl.astralinux.ru/astra/stable/1.8_x86-64/main-repository.
Расширенный — https://dl.astralinux.ru/astra/stable/1.8_x86-64/extended-repository
или проксирующие (кэширующие репозитории).
Настройте сетевые параметры для доступа к хранилищу резервных копий и связанных сервисов.
2. Развертывание PAM
На подготовленные ВМ запустите штатный плейбук установки PАМ. Плейбук установит необходимые пакеты, развернет сервисы PAM и сконфигурирует компоненты.
После успешного развертывания, остановите все компоненты PAM.
3. Восстановление БД
Из резервного хранилища выберите актуальную резервную копию базы данных.
Восстановите БД штатными средствами:
psql -U <user> -d <database> -f <database>.<timestamp>.sqlПосле восстановления, проверьте БД:
проверьте целостность данных.
запустите БД в автономном режиме.
проведите валидацию структуры и ключевых таблиц PAM.
4. Восстановление файлов сессий
Подключите сетевое файловое хранилище, в котором размещены резервные копии файлов сессий.
Определите путь хранения сессий согласно конфигурации PAM.
Сопоставьте структуру каталогов в подключенном хранилище со структурой в свежей инсталляции PAM.
Выполните перенос файлов из резервного хранилища в PAM:
rsync -av /var/bpam/backups/sessions/ /var/bpam/sessions/Проверьте наличие всех файлов.
5. Проверка работоспособности
Запустите все сервисы PAM и убедитесь, что:
все компоненты стартуют корректно;
возможны подключения к целевым ресурсам;
записи сессий отображаются корректно;
интерфейс работает без ошибок;
в логах нет ошибок.
Проверьте, что состояние окружения соответствует тому, которое было на момент создания резервной копии.
Проверка восстановления
После каждого восстановления проводите:
тестирование основных пользовательских сценариев.
проверку отображения записей сессий, как видео, так и текста.
анализ логов сервисов
проверку целостности БД через
pg_checksums.
Все результаты необходимо фиксировать в журнале операций.
Плановое тестирование резервного копирования
Не реже одного раза в квартал проводите:
тестовое восстановление базы данных и файловой структуры сессий.
проверку пригодности резервных копий
Все результаты необходимо фиксировать в отчете.