4.6. 配置代理存储要求
要在基于 Operator 的代理部署中使用持久性存储,您可以在用于创建部署的自定义资源(CR)实例中将 persistenceEnabled
设置为 true
。如果您在 OpenShift 集群中没有容器原生存储,则需要手动置备持久性卷(PV),并确保这些卷可以使用持久性卷声明(PVC)来声明它们。如果要创建带有持久性存储的两个代理集群,例如,您需要有两个 PV 可用。
当您在 OpenShift Container Platform 中手动置备 PV 时,请确保将每个 PV 的重新声明策略设置为 Retain
。如果 PV 的 reclaim 策略没有设置为 Retain
,且 Operator 用于声明 PV 的 PVC 被删除,则 PV 也会被删除。删除 PV 会导致卷中的任何数据丢失。如需有关设置重新声明策略的更多信息,请参阅 OpenShift Container Platform 文档中的了解持久性存储。
默认情况下,PVC 从为集群配置的默认存储类获取每个代理的 2 GiB 存储。您可以覆盖 PVC 中请求的默认大小和存储类,但只有在首次部署 CR 前 在 CR 中配置新值。
4.6.1. 配置代理存储大小和存储类
以下流程演示了如何为代理部署配置自定义资源(CR)实例,以指定每个代理用于持久性消息存储所需的持久性卷声明(PVC)的大小和存储类。
如果在部署 AMQ Broker 后更改 CR 中的存储配置,则不会将更新的配置应用到现有 Pod。但是,更新后的配置将应用到扩展部署时创建的新 Pod。
先决条件
- 您应该熟悉如何使用 CR 实例创建基本代理部署。请参阅 第 3.4.1 节 “部署基本代理实例”。
您必须已经置备了持久性卷(PV),并可供 Operator 声明。例如,如果要创建带有持久性存储的两个代理集群,则需要有两个 PV 可用。
如需有关置备持久性存储的更多信息,请参阅 OpenShift Container Platform 文档中的了解持久性存储。
流程
开始为代理部署配置自定义资源(CR)实例。
使用 OpenShift 命令行界面:
以具有在您要创建部署的项目中部署 CR 的用户身份登录 OpenShift。
oc login -u <user> -p <password> --server=<host:port>
-
打开一个名为
broker_activemqartemis_cr.yaml
的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装的deploy/crs
目录中。
使用 OpenShift Container Platform Web 控制台:
- 以具有在您要创建部署的项目中部署 CR 的用户身份登录控制台。
-
根据主代理 CRD 启动新的 CR 实例。在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
单击 Create ActiveMQArtemis。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
对于基本代理部署,配置可能类似如下。
apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemis metadata: name: ex-aao spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true
观察
broker_activemqartemis_cr.yaml
示例 CR 文件中,image
属性被设置为占位符
的默认值。此值表示,默认情况下image
属性没有指定用于部署的代理容器镜像。要了解 Operator 如何确定要使用的适当代理容器镜像,请参阅 第 2.7 节 “Operator 如何选择容器镜像”。要指定代理存储大小,在 CR 的
deploymentPlan
部分中,添加一个storage
部分。添加size
属性并指定值。例如:spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true storage: size: 4Gi
storage.size
-
每个代理 Pod 需要的持久性卷声明(PVC)的大小,以字节为单位。此属性仅在
persistenceEnabled
设为true
时才适用。您指定的值 必须使用 字节表示法(如 K、M、G)或二进制等效的二进制(Ki、Mi、Gi)包含单元。
要指定每个代理 Pod 需要的存储类,在
storage
部分添加storageClassName
属性并指定一个值。例如:spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true storage: size: 4Gi storageClassName: gp3
storage.storageClassName
在持久性卷声明(PVC)中请求的存储类的名称。存储类为管理员提供了一种描述和分类可用存储的方法。例如,不同的存储类可能会映射到特定的服务质量级别、备份策略等。
如果没有指定存储类,PVC 会声明一个带有为集群配置默认存储类的持久性卷。
注意如果您指定了存储类,只有在卷的存储类与指定存储类匹配时,才会由 PVC 声明持久性卷。
部署 CR 实例。
使用 OpenShift 命令行界面:
- 保存 CR 文件。
切换到您要在其中创建代理部署的项目。
$ oc project <project_name>
创建 CR 实例。
$ oc create -f <path/to/custom_resource_instance>.yaml
使用 OpenShift Web 控制台:
- 配置完 CR 后,点 Create。