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

globals.yaml.gotmplFile で MinIO エンドポイントを設定します。

  1. S3 互換ストレージ内のデータをバックアップするためのリポジトリを作成します。
    注: Elasticsearch バックアップのリポジトリのみを作成できます。デフォルトでは、 globals.yaml.gotmpl ファイルは MySQL および PostgreSQL の repo2リポジトリを使用します。
    CODE
    appdcli run es_backup create-s3-repo virtual-appliance-repo-minio
  2. データストアの s3 セクションを有効にし、MinIO サーバーを使用してバックアップします。globals.yaml.gotmpl ファイルを参照してください。
    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 }}
    注: MySQL は現在、HTTP エンドポイントのみをサポートしているため、 HTTPS エンドポイントは指定しないでください。

Back Up the Virtual Appliance Data in S3 Compatible Storage

Snapshots capture the state of the datastore and can be used to restore data. You can store multiple snapshots in a single repository. The following commands stores the snapshots in the virtual-appliance-repo-minio repository.

Create a snapshot for each datastore:

Elasticsearch
CODE
appdcli run es_backup create-snapshot <repo-name> <snapshot-name>
Example
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>
Example
CODE
appdcli run pg_backup create-snapshot repo2 pg-snapshot
MySQL
CODE
appdcli run mysql_backup create-snapshot <snapshot-name>
Example
CODE
appdcli run mysql_backup create-snapshot 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>

Delete the Snapshots from the MinIO S3 Compatible Storage

If you no longer require the snapshot, you can delete the snapshot from the MinIO S3 Compatible Storage.

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