MinIO の S3 互換ストレージを使用したバックアップ

仮想アプライアンスのデータを MinIO S3 互換ストレージにバックアップできます。仮想アプライアンスのデータをバックアップするには、次の手順に従います。

  1. MinIO S3 互換ストレージを設定します
  2. 仮想アプライアンスでの MinIO 証明書を設定します
  3. MinIO エンドポイントを設定します
  4. 仮想アプライアンスデータをバックアップします
  5. 仮想アプライアンスを復元します

MiniIO S3 互換ストレージの設定

MinIO を使用して仮想アプライアンスデータをバックアップする前に、次の手順に従って MinIO サーバーを設定します。

注: 9000 ポートが MinIO サーバーで使用可能であることを確認します。
  1. Linux OS の MinIO サーバーをダウンロードします。
  2. MinIO ファイルに実行権限を付与します。
    CODE
    chmod +x minio
  3. CA 証明書を保存するディレクトリを作成します。
    CODE
    mkdir -p ~/.minio/certs/CAs
    cd ~/.minio/certs
  4. MinIO サーバーの秘密キーと証明書署名要求を生成します。
    CODE
    openssl genpkey -algorithm RSA -out private.key
    openssl req -new -key private.key -out cert.csr
    openssl x509 -req -days 365 -in cert.csr -signkey private.key -out public.crt
    ./minio server --address :9000 /mnt/data

仮想アプライアンスでの MinIO 証明書の設定

MinIO サーバーとストアスナップショットの間で SSL 接続を確立するには、仮想アプライアンスでの MinIO の CA 証明書が必要です。

MinIO の public.crt を仮想アプライアンスクラスターにコピーします。

PostgreSQL
CODE
/var/appd/config/postgres-s3-ca.crt

MySQL
CODE
/var/appd/config/mysql-s3-ca.crt

Elasticsearch には JKS 形式が必要なため、public.crt を JKS ファイルに変換します。

  1. 次のコマンドを実行して、public.crt から JKS ファイルを生成します。
    CODE
    keytool -importcert -keystore es-s3-ca.jks -storepass changeit -file public.crt -alias minio
  2. es-s3-ca.jks ファイル を次の場所にコピーします。
    CODE
    /var/appd/config
  3. secrets.yaml でトラストストアパスワードを設定します。たとえば、changeit です。「secrets.yaml.encrypted ファイルの編集」を参照してください。
    注:
    • MinIO コンソールにアクセスし、アクセス鍵と秘密鍵を生成します。
    • es-s3-ca.jksstorepassword を、シークレットの truststorePassword として指定します。
    • secret.yaml の変更を同期するには、appdcli sync コマンドを実行します。
    CODE
    # S3 secrets
    ##
    backup:
    elasticsearch:
    s3:
    access_key: WTFaWld3c1NHWWNOSzBWeDlXaHI=
    secret_key: TWtJY0NweVdIcEhJV0pxdzdIWkRnVld3dzAxODRqbjhnS1pnZHozag==
    trustStorePassword: changeit

Configure the MinIO Endpoint in theglobals.yaml.gotmplFile

  1. Create a repository to back up the data in the S3 compatible storage.
    注: You can create repository only for the Elasticsearch backup. By default, the globals.yaml.gotmpl file uses the repo2 repository for MySQL and PostgreSQL.
    CODE
    appdcli run es_backup create-s3-repo virtual-appliance-repo-minio
  2. Enable thes3 section for the datastores to back up using the MinIO server. See globals.yaml.gotmpl file.
    Elasticsearch
    JSON
    # Backup config for datastores
    backup:
    elasticsearch:
    s3:
    enabled: true
    endpoint: https://s3-endpoint
    protocol: https
    bucket: es-bucket
    region: us-east-1
    {{ if isFile "/var/appd/config/es-s3-ca.jks" }}
    certFile: {{ readFile "/var/appd/config/es-s3-ca.jks" | b64enc | quote }}
    {{ end }}
    PostgreSQL
    JSON
    # Backup config for datastores
    backup:
    postgresql:
    s3:
    enabled: true
    repoName: repo2
    endpoint: https://10.0.203.142:9000
    bucket: postgresql-bucket
    region: us-east-1
    {{ if isFile "/var/appd/config/postgres-s3-ca.crt" }}
    certFile: {{ readFile "/var/appd/config/postgres-s3-ca.crt" | b64enc | quote }}
    {{ end }}
    MySQL
    JSON
    # Backup config for datastores
    backup:
    mysql:
    s3:
    enabled: true
    repoName: repo2
    endpoint: http://10.0.203.142:9000
    bucket: mysql-bucket
    region: us-east-1
    {{ if isFile "/var/appd/config/mysql-s3-ca.crt" }}
    certFile: {{ readFile "/var/appd/config/mysql-s3-ca.crt" | b64enc | quote }}
    {{ end }}
    注: Do not specify the HTTPS endpoint because MySQL currently supports only HTTP endpoint.

S3 互換ストレージでの仮想アプライアンスデータのバックアップ

スナップショットはデータストアの状態をキャプチャし、データを復元するために使用できます。1 つのリポジトリに複数のスナップショットを保存できます。次のコマンドは、スナップショットを virtual-appliance-repo-minio リポジトリに保存します。

各データストアのスナップショットを作成します。

Elasticsearch
CODE
appdcli run es_backup create-snapshot <repo-name> <snapshot-name>
CODE
appdcli run es_backup create-snapshot virtual-appliance-repo-minio es-snapshot
PostgreSQL
CODE
appdcli run pg_backup create-snapshot <repo-name> <snapshot-name>
CODE
appdcli run pg_backup create-snapshot repo2 pg-snapshot
MySQL
CODE
appdcli run mysql_backup create-snapshot <repo-name> <snapshot-name>
CODE
appdcli run mysql_backup create-snapshot repo2 mysql-snapshot

MinIO サーバーからスナップショットを復元する

MinIO サーバーに保存したスナップショットを使用してデータストアを復元します。

注: 大規模なバックアップを復元しているときに問題が発生する可能性があります。このような場合は、コントローラを停止します。
CODE
helm delete controller -n cisco-controller
  1. リポジトリでスナップショットを一覧表示します。
    Elasticsearch
    CODE
    appdcli run es_backup list-snapshot <repo-name>
    CODE
    appdcli run es_backup list-snapshot virtual-appliance-repo-mino
    PostgreSQL
    CODE
    appdcli run pg_backup list-snapshot <repo-name>
    CODE
    appdcli run pg_backup list-snapshot repo2
    MySQL
    CODE
    appdcli run mysql_backup list-snapshot <repo-name>
    CODE
    appdcli run mysql_backup list-snapshot repo2
  2. 次のいずれかのスナップショットにより、データストアを復元します。
    Elasticsearch
    CODE
    appdcli run es_backup restore-snapshot <repo-name> <snapshot-name>
    CODE
    appdcli run es_backup restore-snapshot virtual-appliance-repo-mino es_snapshot
    PostgreSQL
    CODE
    appdcli run pg_backup restore-snapshot <repo-name>
    CODE
    appdcli run pg_backup restore-snapshot repo2 pg_snapshot
    MySQL
    CODE
    appdcli run mysql_backup restore-snapshot <repo-name>
    CODE
    appdcli run mysql_backup restore-snapshot repo2 mysql_snapshot

復元が成功し、コントローラがダウンしている場合は、次のコマンドを実行します。

CODE
appdcli sync appd <profile>

MinIO S3 互換ストレージからのスナップショットの削除

スナップショットが不要になった場合は、MinIO S3 互換ストレージからスナップショットを削除できます。

Elasticsearch
CODE
appdcli run es_backup delete-snapshot <repo-name> <snapshot-name>
CODE
appdcli run es_backup delete-snapshot virtual-appliance-repo-mino es_snapshot
PostgreSQL
CODE
appdcli run pg_backup delete-snapshot <repo-name>
CODE
appdcli run pg_backup delete-snapshot repo2 pg_snapshot
MySQL
CODE
appdcli run mysql_backup delete-snapshot <repo-name>
CODE
appdcli run mysql_backup delete-snapshot repo2 mysql_snapshot