|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
配置备份目标
备份目标是用于访问备份存储的端点。可以在SUSE Storage UI上配置备份目标(设置 > 备份目标)。备份存储是存储Longhorn卷备份的服务器。您可以使用NFS、SMB/CIFS、Azure Blob存储和兼容S3的服务器。
|
从v1.8.0开始,SUSE Storage支持使用多个备份存储。建议在创建新备份目标之前设置默认备份目标。 |
保存到像S3这样的对象存储更可取,因为它通常提供更好的可靠性。 另一个优点是您不需要挂载和卸载目标,这样可以避免故障转移和升级过程变得复杂。
有关SUSE Storage中备份存储工作原理的更多信息,请参见概念。
如果您无法访问AWS S3或想先尝试备份存储,我们还提供了一种方法来设置本地S3测试备份存储,使用 MinIO。
SUSE Storage还支持通过SUSE Storage UI或Kubernetes存储类设置卷的定期快照/备份作业。有关详细信息,请参见这里。
备份信息在下一个轮询间隔期间重新同步。有关更多信息,请参见 问题#9530。 |
默认备份目标
默认备份目标(default)在全新安装时会自动创建。您可以在安装过程中或安装后使用 Helm 或 清单 YAML 文件(longhorn.yaml)设置默认备份目标。
使用 Helm 设置默认备份目标
在 values.yaml 文件中,您可以设置三个参数来管理默认备份目标。
-
defaultBackupStore.backupTarget:用于访问默认备份存储的端点。 -
defaultBackupStore.backupTargetCredentialSecret:与默认备份目标关联的 Kubernetes 密钥的名称。 -
defaultBackupStore.pollInterval:SUSE Storage 等待的秒数,然后检查默认备份存储以获取新备份。
# -- Setting that allows you to update the default backupstore.
defaultBackupStore:
# -- Endpoint used to access the default backupstore.
backupTarget: ~
# -- Name of the Kubernetes secret associated with the default backup target.
backupTargetCredentialSecret: ~
# -- Number of seconds that {longhorn-product-name} waits before checking the default backupstore for new backups.
pollInterval: ~
使用清单 YAML 文件设置默认备份目标
从 v1.8.0 开始,您可以使用新 ConfigMap 资源,该资源名为 longhorn-default-resource,来管理资源的设置,包括默认备份目标资源。
-
backup-target:用于访问默认备份存储的端点。 -
backup-target-credential-secret:与默认备份目标关联的 Kubernetes 密钥的名称。 -
backupstore-poll-interval:Longhorn 等待的秒数,然后检查默认备份存储是否有新备份。
# Example
apiVersion: v1
kind: ConfigMap
metadata:
name: longhorn-default-resource
namespace: longhorn-system
data:
default-resource.yaml: |
"backup-target": "s3://example@us-west-1/"
"backup-target-credential-secret": "example-secret"
"backupstore-poll-interval": "180"
设置 AWS S3 备份存储
-
在 AWS S3. 中创建一个新桶
-
为 SUSE Storage 设置权限。有两种选项来设置凭据。第一种是您可以设置一个包含 AWS IAM 用户凭据的 Kubernetes 密钥。第二种是您可以使用第三方应用程序通过注释管理 Pod 的临时 AWS IAM 权限,而不是使用 AWS 凭据。
-
选项 1:创建一个包含 IAM 用户凭据的 Kubernetes 密钥
-
按照 指南 创建一个新的 AWS IAM 用户,并设置以下权限。编辑
Resource部分以使用您的 S3 存储桶名称:{ "Version": "2012-10-17", "Statement": [ { "Sid": "GrantLonghornBackupstoreAccess0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::<your-bucket-name>", "arn:aws:s3:::<your-bucket-name>/*" ] } ] } -
在 SUSE Storage 命名空间中创建一个名为
aws-secret的 Kubernetes 密钥(默认情况下为longhorn-system)。该密钥必须在longhorn-system命名空间中创建,以便 SUSE Storage 访问它:kubectl create secret generic <aws-secret> \ --from-literal=AWS_ACCESS_KEY_ID=<your-aws-access-key-id> \ --from-literal=AWS_SECRET_ACCESS_KEY=<your-aws-secret-access-key> \ -n longhorn-system -
按照 指南 创建一个新的 AWS IAM 角色,用于 AWS S3 服务,并设置以下权限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GrantLonghornBackupstoreAccess0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::<your-bucket-name>", "arn:aws:s3:::<your-bucket-name>/*" ] } ] } -
编辑 AWS IAM 角色,设置以下信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<AWS_EC2_NODE_INSTANCE_ROLE>" }, "Action": "sts:AssumeRole" } ] } -
在 命名空间中创建一个名为
aws-secret的 Kubernetes 密钥(默认情况下为longhorn-system`Longhorn)。该密钥必须在 `longhorn-system命名空间中创建,以便 SUSE Storage 访问它:kubectl create secret generic <aws-secret> \ --from-literal=AWS_IAM_ROLE_ARN=<your-aws-iam-role-arn> \ -n longhorn-system
-
-
-
在 SUSE Storage 界面上,转到 备份和恢复 > 备份目标,然后创建或编辑备份目标。
将 URL 设置为:
s3://<your-bucket-name>@<your-aws-region>/确保在结尾有
/,否则您将收到错误。可以使用子目录(前缀):s3://<your-bucket-name>@<your-aws-region>/mypath/还要确保您已在 URL 中设置了
<your-aws-region>。例如,对于 AWS,您可以在 这里找到区域代码。
对于 Google Cloud Storage,您可以在 这里找到区域代码。
将 凭证密钥 设置为:
aws-secret
这是带有 AWS 凭证或 AWS IAM 角色的密钥名称。
结果: SUSE Storage 可以在 S3 中存储备份。要创建备份,请参见 本节。
如果您在代理后操作 SUSE Storage,并且想要使用 AWS S3 作为备份存储,您必须在 aws-secret 中提供关于您的代理的 SUSE Storage 信息,如下所示:
|
kubectl create secret generic <aws-secret> \
--from-literal=AWS_ACCESS_KEY_ID=<your-aws-access-key-id> \
--from-literal=AWS_SECRET_ACCESS_KEY=<your-aws-secret-access-key> \
--from-literal=HTTP_PROXY=<your-proxy-ip-and-port> \
--from-literal=HTTPS_PROXY=<your-proxy-ip-and-port> \
--from-literal=NO_PROXY=<excluded-ip-list> \
-n longhorn-system
确保`NO_PROXY`包含应排除使用代理的网络地址、网络地址范围和域。为了使SUSE Storage正常运行,`NO_PROXY`的最低要求值为:
-
localhost
-
127.0.0.1
-
0.0.0.0
-
10.0.0.0/8(K8s组件的IP)
-
192.168.0.0/16(集群中的内部IP)
设置GCP云存储备份存储
-
在 Google Cloud Storage中创建一个新桶
-
在 IAM & Admin中创建一个GCP服务账户
-
授予GCP服务账户在桶中读取、写入和删除对象的权限。
服务账户将需要`roles/storage.objectAdmin`角色以读取、写入和删除桶中的对象。
这是您可以为服务账户 https://cloud.google.com/storage/docs/access-control/iam-roles.授予访问权限的GCP IAM角色的参考。
|
考虑创建IAM条件,以减少此服务账户对多少桶具有对象管理员访问权限。在Google Cloud控制台中,转到*Cloud Storage > Buckets*,并选择目标桶。在*桶详细信息*屏幕上,转到*权限*选项卡,点击*授予访问权限*,并为目标桶授予您的服务账户存储对象管理员权限。 |
-
导航到您的 云存储中的桶,并选择您新创建的桶。
-
转到云存储的设置菜单,并导航到 互操作性选项卡
-
向下滚动到_服务账户HMAC_并按`+ CREATE A KEY FOR A SERVICE ACCOUNT`
-
选择您之前创建的GCP服务账户并按`CREATE KEY`
-
保存_访问密钥_和_密钥_。
在互操作性菜单中,记下配置的_存储URI_,位于_请求端点_下。
-
访问密钥将映射到我们稍后创建的 Kubernetes 密钥中的`AWS_ACCESS_KEY_ID`字段。
-
密钥将映射到我们稍后创建的 Kubernetes 密钥中的`AWS_SECRET_ACCESS_KEY`字段。
-
存储URI将映射到我们稍后创建的 Kubernetes 密钥中的`AWS_ENDPOINTS`字段。
-
-
访问SUSE Storage用户界面。在顶部导航栏中,点击*备份和恢复/备份目标*,并创建或编辑备份目标。
将 URL 设置为:
s3://${BUCKET_NAME}@us/将 凭证密钥 设置为:
longhorn-gcp-backups
-
在`longhorn-system`命名空间中创建一个名为`longhorn-gcp-backups`的 Kubernetes 密钥,内容如下:
apiVersion: v1
kind: Secret
metadata:
name: longhorn-gcp-backups
namespace: longhorn-system
type: Opaque
stringData:
AWS_ACCESS_KEY_ID: GOOG1EBYHGDE4WIGH2RDYNZWWWDZ5GMQDRMNSAOTVHRAILWAMIZ2O4URPGOOQ
AWS_ENDPOINTS: https://storage.googleapis.com
AWS_SECRET_ACCESS_KEY: BKoKpIW021s7vPtraGxDOmsJbkV/0xOVBG73m+8f
| 密钥可以命名为您喜欢的任何名称,只要与 SUSE Storage 的设置匹配。 |
一旦密钥创建并且 SUSE Storage 的设置已保存,请导航到 SUSE Storage 中的备份选项卡。如果有任何问题,它们应该会以弹窗通知的形式弹出。
如果没有错误消息,请尝试创建备份并确认内容已推送到您的新存储桶。
用户界面上的SUSE Storage*备份目标*屏幕显示每个备份目标的状态。如果状态为*错误*且没有提供其他详细信息,您可以使用浏览器的*检查*功能查看`/v1/backuptargets`的响应数据。来自GCP的错误标记为"AWS错误"(例如,AWS Error: AccessDenied)。有关更多信息,请参见 问题#10428。
设置本地测试备份存储。
SUSE Storage提供用于测试目的的示例备份存储服务器设置。 您可以在`longhorn/deploy/backupstores`文件夹中找到AWS S3(MinIO)、Azure、CIFS和NFS的示例。
-
在`longhorn-system`名称空间中设置MinIO S3服务器作为备份存储。
kubectl create -f https://raw.githubusercontent.com/longhorn/longhorn/v1.11.2/deploy/backupstores/minio-backupstore.yaml -
访问SUSE Storage用户界面,点击*备份和恢复/备份目标*,并创建或编辑备份目标。
将 URL 设置为:
s3://backupbucket@us-east-1/
将 凭证密钥 设置为:
minio-secret
`minio-secret`的yaml看起来像这样:
apiVersion: v1 kind: Secret metadata: name: minio-secret namespace: longhorn-system type: Opaque data: AWS_ACCESS_KEY_ID: bG9uZ2hvcm4tdGVzdC1hY2Nlc3Mta2V5 # longhorn-test-access-key AWS_SECRET_ACCESS_KEY: bG9uZ2hvcm4tdGVzdC1zZWNyZXQta2V5 # longhorn-test-secret-key AWS_ENDPOINTS: aHR0cHM6Ly9taW5pby1zZXJ2aWNlLmRlZmF1bHQ6OTAwMA== # https://minio-service.default:9000 AWS_CERT: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMRENDQWhTZ0F3SUJBZ0lSQU1kbzQycGhUZXlrMTcvYkxyWjVZRHN3RFFZSktvWklodmNOQVFFTEJRQXcKR2pFWU1CWUdBMVVFQ2hNUFRHOXVaMmh2Y200Z0xTQlVaWE4wTUNBWERUSXdNRFF5TnpJek1EQXhNVm9ZRHpJeApNakF3TkRBek1qTXdNREV4V2pBYU1SZ3dGZ1lEVlFRS0V3OU1iMjVuYUc5eWJpQXRJRlJsYzNRd2dnRWlNQTBHCkNTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEWHpVdXJnUFpEZ3pUM0RZdWFlYmdld3Fvd2RlQUQKODRWWWF6ZlN1USs3K21Oa2lpUVBvelVVMmZvUWFGL1BxekJiUW1lZ29hT3l5NVhqM1VFeG1GcmV0eDBaRjVOVgpKTi85ZWFJNWRXRk9teHhpMElPUGI2T0RpbE1qcXVEbUVPSXljdjRTaCsvSWo5Zk1nS0tXUDdJZGxDNUJPeThkCncwOVdkckxxaE9WY3BKamNxYjN6K3hISHd5Q05YeGhoRm9tb2xQVnpJbnlUUEJTZkRuSDBuS0lHUXl2bGhCMGsKVHBHSzYxc2prZnFTK3hpNTlJeHVrbHZIRXNQcjFXblRzYU9oaVh6N3lQSlorcTNBMWZoVzBVa1JaRFlnWnNFbQovZ05KM3JwOFhZdURna2kzZ0UrOElXQWRBWHExeWhqRDdSSkI4VFNJYTV0SGpKUUtqZ0NlSG5HekFnTUJBQUdqCmF6QnBNQTRHQTFVZER3RUIvd1FFQXdJQ3BEQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBVEFQQmdOVkhSTUIKQWY4RUJUQURBUUgvTURFR0ExVWRFUVFxTUNpQ0NXeHZZMkZzYUc5emRJSVZiV2x1YVc4dGMyVnlkbWxqWlM1awpaV1poZFd4MGh3Ui9BQUFCTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDbUZMMzlNSHVZMzFhMTFEajRwMjVjCnFQRUM0RHZJUWozTk9kU0dWMmQrZjZzZ3pGejFXTDhWcnF2QjFCMVM2cjRKYjJQRXVJQkQ4NFlwVXJIT1JNU2MKd3ViTEppSEtEa0Jmb2U5QWI1cC9VakpyS0tuajM0RGx2c1cvR3AwWTZYc1BWaVdpVWorb1JLbUdWSTI0Q0JIdgpnK0JtVzNDeU5RR1RLajk0eE02czNBV2xHRW95YXFXUGU1eHllVWUzZjFBWkY5N3RDaklKUmVWbENtaENGK0JtCmFUY1RSUWN3cVdvQ3AwYmJZcHlERFlwUmxxOEdQbElFOW8yWjZBc05mTHJVcGFtZ3FYMmtYa2gxa3lzSlEralAKelFadHJSMG1tdHVyM0RuRW0yYmk0TktIQVFIcFc5TXUxNkdRakUxTmJYcVF0VEI4OGpLNzZjdEg5MzRDYWw2VgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t有关创建密钥的更多信息,请参见 Kubernetes文档。该密钥必须在`longhorn-system`名称空间中创建,以便SUSE Storage访问它。
生成base64编码时,请确保使用`echo -n`,否则字符串末尾会添加换行符,这会导致访问S3时出错。 -
在用户界面中点击*备份*选项卡。它应该报告一个空列表,没有任何错误。
结果: SUSE Storage 可以在 S3 中存储备份。要创建备份,请参见本节。
使用自签名SSL证书进行S3通信
如果您想使用自签名SSL证书,可以在您提供给SUSE Storage的Kubernetes密钥中指定AWS_CERT。请参见设置本地测试备份存储中的示例。 重要的是要注意,证书需要是PEM格式,并且必须是其自己的CA。或者,必须包含一个包含CA证书的证书链。 要包含多个证书,只需将不同的证书(PEM文件)连接在一起。
为S3兼容的备份存储启用虚拟主机样式访问
当您想要为您的S3兼容备份存储启用这种新的寻址方法时
-
您现在想切换到这种新的访问样式,以便您不必担心 亚马逊S3路径弃用计划;
-
您使用的备份存储仅支持虚拟主机样式访问,例如,阿里云(Aliyun)OSS;
-
您已将
MINIO_DOMAIN环境变量配置为 为 MinIO 服务器启用虚拟主机样式请求; -
错误`…… error: AWS Error: SecondLevelDomainForbidden Please use virtual hosted style to access. …..`被触发。
启用虚拟主机样式访问的方法
-
向您的备份目标密钥添加一个新字段`VIRTUAL_HOSTED_STYLE`,其值为`true`。例如:
apiVersion: v1 kind: Secret metadata: name: s3-compatible-backup-target-secret namespace: longhorn-system type: Opaque data: AWS_ACCESS_KEY_ID: bG9uZ2hvcm4tdGVzdC1hY2Nlc3Mta2V5 AWS_SECRET_ACCESS_KEY: bG9uZ2hvcm4tdGVzdC1zZWNyZXQta2V5 AWS_ENDPOINTS: aHR0cHM6Ly9taW5pby1zZXJ2aWNlLmRlZmF1bHQ6OTAwMA== VIRTUAL_HOSTED_STYLE: dHJ1ZQ== # true -
部署或更新密钥。
-
在 备份和恢复 > 备份目标 中创建相应的备份目标,提供以下详细信息:
-
名称:输入您希望为备份目标指定的名称。
-
URL:使用格式
s3://<bucket-name>@<region>/指定 S3 URL。 -
凭证密钥:选择凭证密钥。在此示例中为
s3-compatible-backup-target-secret。
-
设置 NFS 备份存储
确保 NFS 服务器支持 NFSv4,并且目标 URL 指向该服务。
示例:
nfs://longhorn-test-nfs-svc.default:/opt/backupstore
默认挂载选项为 actimeo=1,soft,timeo=300,retry=2。 要使用其他选项,请将关键字 "nfsOptions" 和选项字符串附加到目标 URL。
示例:
nfs://longhorn-test-nfs-svc.default:/opt/backupstore?nfsOptions=soft,timeo=330,retrans=3
您指定的任何挂载选项将替换默认选项,而不是添加到默认选项中。
您可以在 这里 找到一个用于测试的 NFS 备份存储示例。
结果: SUSE Storage 可以在 NFS 中存储备份。要创建备份,请参见本节。
设置 SMB/CIFS 备份存储
在配置 SMB/CIFS 备份存储之前,可以通过创建和部署备份存储的凭证密钥。
#!/bin/bash
USERNAME=${Username of SMB/CIFS Server}
PASSWORD=${Password of SMB/CIFS Server}
CIFS_USERNAME=`echo -n ${USERNAME} | base64`
CIFS_PASSWORD=`echo -n ${PASSWORD} | base64`
cat <<EOF >>cifs_secret.yml
apiVersion: v1
kind: Secret
metadata:
name: cifs-secret
namespace: longhorn-system
type: Opaque
data:
CIFS_USERNAME: ${CIFS_USERNAME}
CIFS_PASSWORD: ${CIFS_PASSWORD}
EOF
kubectl apply -f cifs_secret.yml
在 SUSE Storage 界面上,转到 备份和恢复 > 备份目标。
-
创建或编辑备份目标。
将 URL 设置为:
cifs://longhorn-test-cifs-svc.default/backupstore
默认 CIFS 挂载选项为 "soft"。 要使用其他选项,请将关键字 "cifsOptions" 和选项字符串附加到目标 URL。
示例:
cifs://longhorn-test-cifs-svc.default/backupstore?cifsOptions=rsize=65536,wsize=65536,soft
您指定的任何挂载选项将替换默认选项,而不是添加到默认选项中。
-
设置*备份目标凭证密钥*。
将 凭证密钥 设置为:
cifs-secret
这是带有CIFS凭证的密钥名称。
您可以在 这里找到一个用于测试目的的CIFS备份存储示例。
结果: SUSE Storage 可以在 CIFS 中存储备份。要创建备份,请参见本节。
设置 Azure Blob 存储备份存储。
-
验证 Azure Blob 存储 中是否存在备份存储的容器。
-
授予 Azure 服务帐户在容器中读取、写入和删除对象的权限。
有关更多信息,请参见 Microsoft 文档中的 使用 Azure 门户管理 Blob 容器。
-
转到*主页 →
serviceaccount→ 安全性 + 网络 → 访问密钥*。 -
保存以下信息:
-
Storage account name:映射到您将创建的Kubernetes密钥中的`AZBLOB_ACCOUNT_NAME`字段。 -
Key:映射到您将创建的Kubernetes密钥中的`AZBLOB_ACCOUNT_KEY`字段。
-
-
访问SUSE Storage用户界面。在顶部导航栏中,点击*备份和恢复/备份目标*,并创建或编辑备份目标。
设置*URL*。目标URL应如下所示:
azblob://[your-container-name]@core.windows.net/确保在末尾有
/,否则您将收到错误。可以使用子目录(前缀):azblob://[your-container-name]@core.windows.net/my-path/设置*凭证密钥*。
longhorn-azblob-secret -
创建一个名为`longhorn-azblob-secret`的Kubernetes密钥。
此密钥用于在SUSE Storage名称空间(默认:
longhorn-system)中访问备份存储,内容如下:#!/bin/bash cat <<EOF >>longhorn-azblob-secret.yml apiVersion: v1 kind: Secret metadata: name: longhorn-azblob-secret namespace: longhorn-system type: Opaque stringData: AZBLOB_ACCOUNT_NAME: "<Storage account name>" AZBLOB_ACCOUNT_KEY: "<Key>" ... # Parameters below are used for the compatible azure server for instance `Azurite` or # you have a proxy to redirect the requests. #AZBLOB_ENDPOINT: "" #AZBLOB_CERT: "" #HTTP_PROXY: "" #HTTPS_PROXY: "" EOF kubectl apply -f longhorn-azblob-secret.yml
配置上述设置后,您可以在Azure Blob存储上管理备份。有关详细信息,请参见如何创建备份。