Установка Copywala VDB
Цель выполнения
Установка модуля Copywala VDB является обязательной, если целевая СУБД — Vector DB / Qdrant.
Предусловия
Перед началом установки убедитесь, что выполнены следующие условия:
- Подготовлено окружение.
- Дистрибутив CopyWala распакован в соответствии с инструкцией, приведенной в разделе Установка, шаг Распаковка дистрибутива CopyWala.
Последовательность действий
Установка Copywala VDB возможна только ручным способом из RPM-пакета.
-
Установите пакет
copywala-vdb-{component_version}-{OS_version}.x86_64.rpmиз директорииpbr/owned/pbra/rpms:- SberLinux, РЕД ОС, CentOS
- Astra Linux
- Альт СП
sudo dnf install {component_name}-{component_version}-{OS_version}.x86_64.rpmsudo apt install {component_name}-{component_version}-{OS_version}.x86_64.debsudo apt-get install {component_name}-{component_version}-{OS_version}.x86_64.rpmПример заполненной команды:
sudo dnf install copywala-vdb-1.3.0-sberlinux9.x86_64.rpm -
Если взаимодействие с Vector DB требуется осуществлять по протоколу HTTPS/mTLS, выполните настройку TLS-сертификатов.
-
Переключитесь на пользователя
qdrantдля работы с copywala-vdb:sudo su - qdrant -
Откройте файл конфигурации
copywala-vdb.yaml:sudo vi /etc/pbr/copywala-vdb.yaml -
Заполните конфигурационные параметры.
Параметры файла
copywala-vdb.yaml# --------------------------------------# Настройка подключения к целевой БД# --------------------------------------vdb:http_address: "<https://host:port>"auth_enabled: <true/false># Использование учетных данных в открытом видеusername: "<username>"password: "<password>"# Использование учетных данных, сохраненных в защищенном видеuse_enc_creds: <true/false>enc_creds_path: "</var/pbr/copywala/vdb.creds>"# Формирование резервной копии в режиме полного снимка (единый снепшот-файл, содержащий все коллекции базы данных)full_snapshot: <true/false># Копирование снепшот-файлов напрямую из локальной файловой системыcopy_local_snapshots: <true/false>local_snapshots_path: "</vdb/snapshots>"# по умолчанию применяется глобальный tlstls:rootca:local_path: "<tls/root.crt>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаcert:local_path: "<tls/cert.crt>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаkey:local_path: "<tls/cert.key>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секрета# --------------------------------------# Назначение резервной копии# --------------------------------------# local-fs:///home/postgres/backups/# ddboost://srv-10-15.host/storage-unit# s3://srv-10-20.host/bucket-08-9992# s2://srv-10-25.host:portbackup_destination_uri: "<local-fs:///vdb/backups/>"# --------------------------------------# Директория для восстановления данных# --------------------------------------restore_data_path: "</vdb/data/>"# --------------------------------------# Наименование экземпляра БД для восстановления (уникальное имя экземпляра агента)# --------------------------------------restore_instance_name: ""# --------------------------------------# Настройка повторных попыток при возникновении ошибок при записи РК (ниже приведены значения по умолчанию)# --------------------------------------retrier:timeout: 10s # максимальное время выполнения запросаretries: 5 # максимальное количество попытокdelay_period: 1s # период задержки# --------------------------------------# Возможность загрузки TLS-сертификатов из защищенного хранилища секретов# --------------------------------------vault: # настройки подключенияserver: "<vault-url>"namespace: "<namespace>"path: "<mount-path>" # путь к точке монтирования хранилища секретовkv_version: "<v2>" # версия формата хранилища ключей-значенийapprole:role_id: "<role-id>" # уникальный идентификатор ролиsecret_id: "<secret-id>" # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path# auth_method: approle # метод аутентификации# wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token# wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)# --------------------------------------# Параметры подключения к KMS HashiCorp Vault# --------------------------------------kms:server: "<vault-url>" # URL сервера KMSnamespace: "<namespace>" # пространство имен в KMS HashiCorp Vaultpath: "<mount-path>" # путь к точке монтирования хранилища секретовkv_version: v2 # версия формата KV-хранилищаapprole: # вариант авторизации в KMS по роли и ключу ролиrole_id: "<role-id>" # уникальный идентификатор ролиsecret_id: "<secret-id>" # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path# auth_method: approle # метод аутентификации# wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token# wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)userpass: # вариант авторизации в KMS по логину и паролю# username:# password:# auth_method:# --------------------------------------# Конфигурация S2# --------------------------------------s2:checksum_algorithm: DISABLED # выбор алгоритма вычисления контрольной суммы. Допустимые значения: DISABLED (по умолчанию), CRC32storage_path: "" # значение по умолчанию пустое. Задается пользователем для возможности выбора одного из дополнительных хранилищ, пример: /var/pbr/s2/backupstls: # опциональноrootca:local_path: tls/root.crt # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаcert:local_path: tls/cert.crt # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаkey:local_path: tls/cert.key # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаs2tp_enabled: true # флаг использования протокола S2TP для взаимодействия copywala и storage service (s2). По умолчанию – true. Используется только в рамках операций передачи данных при создании и восстановлении резервных копий. gRPC остается как основной протокол для взаимодействия с S2, кроме переноса данныхs2tp:addresses: # массив адресов серверов s2- "<host_1:port_1>"- "<host_2:port_2>"enable_tls: true # флаг использования TLS-протоколаmax_connections: 16 # максимальное количество открытых соединений к серверу на один указанный адрес (в массиве addresses)read_timeout: 5m # таймаут для операции чтенияwrite_timeout: 5m # таймаут для операции записиtls: # опциональноrootca:local_path: tls/root.crt # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаcert:local_path: tls/cert.crt # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаkey:local_path: tls/cert.key # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секрета# --------------------------------------# Конфигурация S3# --------------------------------------s3:region: "<ru-test>" # регион s3access_id: "<id>" # идентификатор пользователяsecret_key: "<key>" # секретный ключuse_path_style: <true/false> # если параметр имеет значение true, задействуется формат полного URL с указанием пути (path-style addressing); если false – название бакета включается непосредственно в доменное имя.disable_request_checksums: <true/false> # проверка контрольных сумм запросовtls: # опциональноrootca:local_path: "<tls/root.crt>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаcert:local_path: "<tls/cert.crt>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаkey:local_path: "<tls/cert.key>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секрета# --------------------------------------# Конфигурация DDBoost (Data Domain Boost)# --------------------------------------ddboost:enc_creds_path: "<path-to-enc-creds-file>" # путь к зашифрованным учетным данным для подключения к хранилищу DDBoost (заполняется опционально). При заданном значении параметры username и password в секции storage игнорируютсяclient_settings:ddboost_lib_path: libDDBoost.so # путь к динамической библиотеке DDBoost (по умолчанию — libDDBoost.so). Если не задана переменная LD_LIBRARY_PATH или в ней отсутствует нужный путь, укажите здесь полный путь к файлуread_client_side_decompress: false # флаг включения распаковки на стороне клиента. При значении false распаковка выполняется на стороне сервера. При значении true – на стороне клиента, что позволяет снизить нагрузку на сетьclient_type: 0 # тип клиента, который подключается к DDBoost. Для copywala значение менять не требуетсяbuffer_size: 0 # размер буфера ввода-вывода. 0 означает использование размер буфера по умолчаниюauto_create_storage_unit: true # автоматически создавать отдельное хранилище (storage_unit) в системе Data Domain для резервных копий, если оно еще не созданоstorage:username: "<username>" # имя пользователя для подключения к хранилищу DDBoost. Игнорируется если в copywala.yaml задан параметр enc_creds_pathpassword: "<password>" # пароль для подключения к хранилищу DDBoost. Игнорируется если в copywala.yaml задан параметр enc_creds_pathmax_conns_no: 16 # максимальное количество одновременных соединений с DDBoost; соединения переиспользуются из пула, если они не простаивали дольше max_idle_time, иначе при необходимости создается новое соединение, если не превышен лимит max_conns_nomax_idle_time: 5m # допустимое время простоя соединения, после которого неактивное подключение закрывается и удаляется из пула соединенийtls: # опциональноrootca:local_path: tls/root.crt # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаcert:local_path: tls/cert.crt # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаkey:local_path: tls/cert.key # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секрета# Дополнительные параметры настройки TLS для DDBoost. Подробное описание параметров и допустимых значений смотрите в официальной документации DDBoostuse_tls: false # включает TLS. Обязательно установите true, если указан хоть один сертификат в секции ddboost.storage.tls или секции глобального TLS («Конфигурация TLS используемая по умолчанию для всех сетевых соединений»)auth_mode: 0 # режим TLS: 1 - односторонний, 2 - двусторонний, 3 - анонимныйencr_strength: 0 # уровень TLS-шифрования: 1 - слабый, 2 - сильныйcert_verify_flag: 0 # битовая комбинация флагов проверки TLS-сертификатов и FQDN клиента/сервера: 0 – отключить проверку сертификатов, 1 – проверять FQDN сервера, 2 – проверять FQDN клиента. Например, при значении 3 будет проверяться FQDN и сервера и клиента# --------------------------------------# Настройки архивирования РК (ниже приведены значения по умолчанию)# --------------------------------------archive_settings:upload_params:part_payload_size: 32MB # размер парта передаваемых данныхchecksum_algorithm: CRC32 # выбор алгоритма вычисления контрольной суммы. CRC32 – значение по умолчанию. Допустимые значения: DISABLED, CRC32, SHA256compression_algorithm: S2 # выбор алгоритма сжатия данных при создании РК. S2 – значение по умолчанию. Допустимые значения: DISABLED, ZSTD, S2# --------------------------------------# Политика исполнения резервного копирования (ниже приведены значения по умолчанию)# --------------------------------------backup_policy:write_parts_workers_no: 4 # количество параллельных рабочих процессов (workers), выполняющих операцию записи отдельных партовprotection_key_path: # путь к ключу в KMS HashiCorp Vault, необходимому для защитного преобразования при создании резервной копииlocal_path: "<local-path>"# vault_path: <path># vault_key: <key># --------------------------------------# Политика восстановления (ниже приведены значения по умолчанию)# --------------------------------------restore_policy:workers_no: runtime.NumCPU()jobs_queue_size: 16 # размер очереди задач на распаковку партов архиваverify_archive_checksums: true # проверка контрольных сумм всего архиваread_direct_io: false # режим чтения данных из файлов, исключая использование кеша ОСprotection_key_path: # путь к ключу в KMS HashiCorp Vault, необходимому для защитного преобразования при восстановлении из резервной копииlocal_path: "<local-path>"# vault_path: <path># vault_key: <key># --------------------------------------# Конфигурация TLS используемая по умолчанию для всех сетевых соединений# --------------------------------------tls:rootca:local_path: "<tls/root.crt>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаcert:local_path: "<tls/cert.crt>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секретаkey:local_path: "<tls/cert.key>" # путь к локальному файлу# vault_path: <path> # путь к секрету в HashiCorp/SecMan# vault_key: <key> # ключ внутри json-секрета# --------------------------------------# Опциональные настройки приложения (ниже приведены значения по умолчанию)# --------------------------------------app:agent_id_file_path: /etc/pbr/pbr.agent.id # путь к файлу, содержащему идентификатор агентского приложенияagent_id_file_mode: 0400 # числовое представление прав доступа на создаваемые файлыcopywala_dir: /etc/pbr/copywala # рабочая директорияcopywala_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталогиallow_concurrent_create_backup: false # управляет возможностью запуска нескольких операций создания резервных копий одновременноcreds_private_key_path: /var/pbr/copywala/priv.key # путь к приватному ключу приложенияcopywala_plugins_dir: /usr/lib/pbr/copywala # путь к директории, где находится плагин защитного преобразованияgo_mem_limit: 2GB # мягкий лимит heap-памяти для сборщика мусора Go. При достижении лимита сборщик мусора начинает работать с большей частотой, чтобы удерживать потребление памяти в заданных пределах (в документации go – GOMEMLIMIT)# если параметр не указан в copywala.yaml, лимит памяти будет автоматически установлен в размере 1/4 от общего объема RAM, доступного в системе (например, при 32 ГБ оперативной памяти лимит составит 8 ГБ)# если задано значение 0 – будут использоваться настройки Go по умолчанию# при указании значения – будет установлен заданный лимитgo_gc_percent: 100 # процент роста heap-памяти перед запуском сборки мусора. Значение 100 означает, что сборка мусора запускается после увеличения объёма heap в 2 раза относительно объема после предыдущей сборки (в документации go – GOGC)# более подробное описание параметров приведено в документации go https://go.dev/doc/gc-guide (см. GOMEMLIMIT и GOGC)# --------------------------------------# Настройка ведения журналов приложения (ниже приведены значения по умолчанию)# --------------------------------------log:path: /var/log/pbr/copywala.log # путь к лог-файлуdir_mode: 0700 # настройка прав доступа на создаваемые каталоги. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.file_mode: 0600 # настройка прав доступа на создаваемые файлы. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`max_age: 90 # максимальный срок хранения лог-файла в дняхmax_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограниченоuse_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия
Настройка TLS-сертификатов для Copywala VDB
Для обеспечения взаимодействия с Vector DB по протоколу HTTPS/mTLS выполните описанные ниже шаги:
-
Сгенерируйте корневой сертификат (далее – Root CA).
примечаниеДанный шаг является опциональным, выполните его, если в инфраструктуре отсутствует готовый Root CA. В противном случае следует использовать уже существующий Root CA.
Важно помнить, что при самостоятельной генерации Root CA, его необходимо использовать для подписи сертификата сервера (Vector DB).
Пример команды:
openssl req -subj "/CN=RootCA" -newkey rsa:2048 -nodes \-keyout rootCA.key \-new -x509 \-days 365 \-out rootCA.crtВ результате будут получены:
rootCA.key— приватный ключ Root CA;rootCA.crt— самоподписанный корневой сертификат.
-
Создайте файл
openssl.cnf, указав актуальные значения, включая SAN-параметры:[ req ]default_bits = 2048default_md = sha256prompt = nodistinguished_name = req_distinguished_namereq_extensions = req_ext[ req_distinguished_name ]C = RUST = MoscowL = MoscowO = myCompanyOU = IT DepartmentCN = example.com[ req_ext ]subjectAltName = DNS:<dns_name>, DNS:localhost, IP:<ip>, IP:127.0.0.1Замените
<dns_name>и<ip>на фактические значения, используемые в инфраструктуре. -
Сгенерируйте приватный ключ и CSR (пример команды):
openssl genpkey -algorithm RSA -out copywala-vdb.keyopenssl req -new \-key copywala-vdb.key \-out copywala-vdb.csr \-config openssl.cnf -
Подпишите CSR с использованием Root CA (существующего или сгенерированного):
openssl x509 -req \-in copywala-vdb.csr \-CA rootCA.crt \-CAkey rootCA.key \-CAcreateserial \-out copywala-vdb.crt \-days 365 \-extfile openssl.cnf \-extensions req_extВ результате будет создан сертификат для Copywala VDB –
copywala-vdb.crt. -
Для проверки корректности сертификата используйте команду:
openssl x509 -in copywala-vdb.crt -text -nooutВ результате выполнения команды отображается:
- Subject и Issuer;
- срок действия;
- расширения сертификата (включая SAN);
- другие параметры X.509.
-
После генерации и/или получения сертификатов настройте подключение к Vector DB. Для этого в конфигурационном файле
copywala-vdb.yamlзаполните секциюtls, указав пути к созданным TLS-артефактам.
Проверка результата
Для проверки установки и работоспособности Copywala VDB обратитесь к разделу Чек-лист проверки корректности работы.
После завершения установки данного модуля:
- При необходимости выполните установку других модулей Platform V CopyWala.
- Перейдите к следующему шагу — Настройка интеграции Platform V CopyWala с внешними сервисами.