4.4. 配置代理存储要求
要在基于 Operator 的代理部署中使用持久性存储,您可以在用于创建部署的自定义资源(CR)实例中将 persistenceEnabled 设置为 true。如果您的 OpenShift 集群中没有容器原生虚拟化,则需要手动置备持久性卷(PV),并确保 Operator 可以使用持久性卷声明(PVC)来声明它们。如果您想创建一个有两个带有持久性存储的代理集群,例如,您需要有两个 PV 可用。
当您在 OpenShift Container Platform 中手动置备 PV 时,请确保将每个 PV 的重新声明策略设置为 Retain。如果 PV 的重新声明策略没有设置为 Retain,并且 Operator 用于声明 PV 的 PVC 会被删除,则 PV 也会被删除。删除 PV 会导致卷上任何数据丢失。如需更多信息,请参阅 OpenShift Container Platform 文档中的了解持久性存储。
默认情况下,PVC 从为集群配置的默认存储类获取每个代理的 2 GiB 存储。您可以覆盖 PVC 中请求的默认大小和存储类,但仅在首次部署 CR 前 在 CR 中配置新值。
4.4.1. 配置代理存储大小和存储类 复制链接链接已复制到粘贴板!
以下流程演示了如何为代理部署配置自定义资源(CR)实例,以指定每个用于持久性消息存储所需的持久性卷声明(PVC)的大小和存储类。
在首次部署 CR 之前,您必须将代理存储大小和存储类的配置添加到代理部署的主 CR 中。您无法将 配置添加到已在运行的代理部署中。
先决条件
- 您应该熟悉如何使用 CR 实例创建基本代理部署。请参阅 第 3.4.1 节 “部署基本代理实例”。
您必须已经置备持久性卷(PV),并由 Operator 声明这些持久性卷(PV)。例如,如果要创建带有持久性存储的两个代理集群,则需要有两个 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 application: ex-aao-app spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true观察到
broker_activemqartemis_cr.yaml示例 CR 文件中,image属性设为占位符默认值。此值表示默认情况下,image属性不指定用于部署的代理容器镜像。要了解 Operator 如何确定要使用的适当代理容器镜像,请参阅 第 2.4 节 “Operator 如何选择容器镜像”。要指定代理存储大小,在 CR 的
deploymentPlan部分中添加storage部分。添加size属性并指定值。例如:spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true storage: size: 4Gistorage.size-
每个代理 Pod 需要用于持久性存储的持久性卷声明(PVC)大小(以字节为单位)。此属性仅在将
persistenceEnabled设为true时才适用。您指定的值 必须使用 字节表示法(例如 K、M、G)或者二进制等同的单元(Ki、Mi、Gi)。
要在
storage部分指定每个代理 Pod 需要持久性存储的存储类,请添加storageClassName属性并指定值。例如:spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true storage: size: 4Gi storageClassName: gp3storage.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。