使用 Helm 构建和部署 Data Grid 集群
Red Hat Data Grid 复制链接链接已复制到粘贴板!
Data Grid 是一个高性能分布式内存数据存储。
- 无架构数据结构
- 将不同对象存储为键值对的灵活性。
- 基于网格的数据存储
- 旨在在集群中分发和复制数据。
- 弹性扩展
- 动态调整节点数量,以便在不中断服务的情况下满足需求。
- 数据互操作性
- 从不同端点在网格中存储、检索和查询数据。
Data Grid 文档 复制链接链接已复制到粘贴板!
红帽客户门户网站中提供了 Data Grid 的文档。
Data Grid 下载 复制链接链接已复制到粘贴板!
访问 红帽客户门户上的 Data Grid 软件下载。
您必须有一个红帽帐户才能访问和下载数据中心软件。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 将 Data Grid 集群部署为 Helm Chart 发行版本 复制链接链接已复制到粘贴板!
使用 Helm 构建、配置和部署 Data Grid 集群。Data Grid 提供了一个 Helm chart,它打包了在 OpenShift 上运行 Data Grid 集群的资源。
安装 Data Grid chart 以创建一个 Helm 发行版本,它会在 OpenShift 项目中实例化 Data Grid 集群。
1.1. 通过 OpenShift 控制台安装 Data Grid chart 复制链接链接已复制到粘贴板!
使用 OpenShift Web 控制台从红帽开发人员目录安装 Data Grid 图。安装 chart 会创建一个 Helm 发行版本,它将部署 Data Grid 集群。
先决条件
- 有权访问 OpenShift。
流程
- 登录 OpenShift Web 控制台。
- 选择 Developer 视角。
- 打开 Add 视图,然后选择 Helm Chart 以浏览 Red Hat Developer 目录。
- 找到并选择 Data Grid 图。
- 为 chart 指定名称并选择版本。
在 Data Grid 图表的以下部分定义值:
- 镜像将 容器镜像配置为在为您的 Data Grid 集群创建 pod 时使用。
部署配置 您的 Data Grid 集群。
提示要查找每个值的描述,请选择 YAML view 选项并访问 schema。编辑 yaml 配置以自定义您的 Data Grid chart。
- 选择 Install。
验证
- 在 Developer 视角中选择 Helm 视图。
- 选择您创建的 Helm 发行版本来查看详情、资源和其他信息。
1.2. 在命令行中安装 Data Grid 图 复制链接链接已复制到粘贴板!
使用命令行在 OpenShift 上安装 Data Grid 图并实例化 Data Grid 集群。安装 chart 会创建一个 Helm 发行版本,它将部署 Data Grid 集群。
先决条件
-
安装
helm客户端。 - 添加 OpenShift Helm Charts 存储库。
- 有权访问 OpenShift 集群。
-
有一个
oc客户端。
流程
创建一个值文件来配置您的 Data Grid 集群。
例如,以下值文件会创建一个具有两个节点的集群:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 Data Grid chart 并指定您的值文件。
helm install infinispan openshift-helm-charts/redhat-data-grid --values infinispan-values.yaml
$ helm install infinispan openshift-helm-charts/redhat-data-grid --values infinispan-values.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 --set 标志覆盖部署配置值。例如,要创建带有三个节点的集群:
--set deploy.replicas=3
--set deploy.replicas=3
验证
观察 pod,以确保 Data Grid 集群中的所有节点都已成功创建。
oc get pods -w
$ oc get pods -w
1.3. 升级 Data Grid Helm 发行版本 复制链接链接已复制到粘贴板!
通过升级 Helm 发行版本在运行时修改您的 Data Grid 集群配置。
先决条件
- 部署 Data Grid 图。
-
具有
helm客户端。 -
有一个
oc客户端。
流程
- 根据情况修改 Data Grid 部署的值文件。
使用
helm客户端应用您的更改,例如:helm upgrade infinispan openshift-helm-charts/redhat-data-grid --values infinispan-values.yaml
$ helm upgrade infinispan openshift-helm-charts/redhat-data-grid --values infinispan-values.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
观察重建 pod,以确保所有更改都成功应用到您的 Data Grid 集群。
oc get pods -w
$ oc get pods -w
1.4. 卸载 Data Grid Helm 发行版本 复制链接链接已复制到粘贴板!
卸载 Data Grid chart 的发行版本,以删除 pod 和其他部署工件。
此流程演示了如何在命令行中卸载 Data Grid 部署,但您可以使用 OpenShift Web 控制台。具体步骤请参阅 OpenShift 文档。
先决条件
- 部署 Data Grid 图。
-
具有
helm客户端。 -
有一个
oc客户端。
流程
列出已安装的 Data Grid Helm 发行版本。
helm list
$ helm listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
helm客户端卸载发行版本并删除 Data Grid 集群:helm uninstall <helm_release_name>
$ helm uninstall <helm_release_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc客户端删除生成的 secret。oc delete secret <helm_release_name>-generated-secret
$ oc delete secret <helm_release_name>-generated-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5. 部署配置值 复制链接链接已复制到粘贴板!
通过部署配置值,您可以自定义 Data Grid 集群。
您还可以在 Data Grid chart README 中找到字段和值描述。
| 字段 | 描述 | 默认值 |
|---|---|---|
|
| 指定 Data Grid 集群中的节点数量,以及为每个节点创建的 pod。 |
|
|
| 将 JVM 选项传递给 Data Grid 服务器。 | 没有默认值。 |
|
| 定义存储是临时还是永久的。 |
默认值为 |
|
| 定义为每个 Data Grid pod 分配多少存储。 | 1Gi |
|
|
指定用于持久性卷声明(PVC)的 |
没有默认值。默认情况下,持久性卷声明使用将 |
|
| 为每个 Data Grid pod 定义 CPU 限制(以 CPU 单位)。 | 500m |
|
| 定义每个 Data Grid pod 的最大内存量(以字节为单位)。 | 512Mi |
|
| 指定每个 Data Grid pod 的最大 CPU 请求(以 CPU 单元为单位)。 | 500m |
|
| 指定每个 Data Grid pod 的最大内存请求(以字节为单位)。 | 512Mi |
|
| 指定创建凭证并配置安全授权的 secret 名称。 |
没有默认值。如果您创建自定义安全 secret,则 |
|
| 为 Data Grid 命令行界面(CLI)提供批处理文件,以便在启动时创建凭证并配置安全授权。 | 没有默认值。 |
|
| 指定在网络上公开 Hot Rod 和 REST 端点的服务,并提供对 Data Grid 集群的访问,包括 Data Grid 控制台。 |
|
|
| 指定默认 30000 到 32767 范围内的节点端口服务的网络端口。 | 0 如果没有指定端口,平台会选择一个可用的端口。 |
|
| (可选)指定公开路由的主机名。 | 没有默认值。 |
|
| 为在网络上公开数据平面的服务添加注解。 | 没有默认值。 |
|
| 配置 Data Grid 集群日志类别和级别。 | 没有默认值。 |
|
| 为您创建的每个 Data Grid pod 添加标签。 | 没有默认值。 |
|
| 为您创建的每个服务添加标签。 | 没有默认值。 |
|
| 为包括 pod 和服务在内的所有 Data Grid 资源添加标签。 | 没有默认值。 |
|
|
允许写入每个 Data Grid Server 节点 |
|
|
| 为所有 Data Grid 集群资源指定一个名称。 | Helm Chart 发行版本名称。 |
|
| Data Grid 服务器配置。 | Data Grid 提供默认的服务器配置。有关配置服务器实例的更多信息,请参阅 Data Grid 服务器配置值。 |
第 2 章 配置 Data Grid 服务器 复制链接链接已复制到粘贴板!
将自定义 Data Grid 服务器配置应用到您的部署中。
2.1. 自定义 Data Grid 服务器配置 复制链接链接已复制到粘贴板!
将自定义 deploy.infinispan 值应用到 Data Grid 集群,该集群配置缓存管理器和底层服务器机制,如安全域或 Hot Rod 和 REST 端点。
修改 deploy.infinispan 值时,您必须始终提供完整的 Data Grid 服务器配置。
如果要为您的 Data Grid 集群使用监控功能,请不要修改或删除默认的 "metrics" 配置。
流程
根据需要修改 Data Grid 服务器配置:
使用
deploy.infinispan.cacheContainer字段为 Cache Manager 指定配置值。例如,您可以使用任何 Data Grid 配置在启动时创建缓存,或添加缓存模板,并使用它们根据需要创建缓存。
-
使用
deploy.infinispan.cacheContainer.security.authorization字段配置安全授权来控制用户角色和权限。 -
选择其中一个默认 JGroups 堆栈,或使用
deploy.infinispan.cacheContainer.transport字段配置集群传输。 -
使用
deploy.infinispan.server.endpoints字段配置 Data Grid Server 端点。 -
使用
deploy.infinispan.server.interfaces和deploy.infinispan.server.socketBindings字段配置 Data Grid Server 网络接口和端口。 使用
deploy.infinispan.server.security字段配置 Data Grid Server 安全机制。注意Data Grid 图目前不支持 TLS/SSL 安全域和加密的客户端连接。
2.2. Data Grid 服务器配置值 复制链接链接已复制到粘贴板!
Data Grid Server 配置值可让您自定义 Cache Manager 并修改在 OpenShift pod 中运行的服务器实例。
Data Grid 服务器配置
Data Grid 缓存配置
缓存模板
集群传输
第 3 章 配置身份验证和授权 复制链接链接已复制到粘贴板!
通过添加凭证并分配具有不同权限的角色来控制对 Data Grid 集群的访问。
3.1. 默认凭证 复制链接链接已复制到粘贴板!
Data Grid 在 < helm_release_name>-generated-secret secret 中添加默认凭证。
| 用户名 | 描述 |
|---|---|
|
|
具有对 Data Grid 资源具有完全访问权限的 |
|
|
具有可通过端口 |
3.1.1. 检索凭证 复制链接链接已复制到粘贴板!
从身份验证 secret 获取 Data Grid 凭证。
先决条件
- 安装 Data Grid Helm Chart。
-
有一个
oc客户端。
流程
使用以下命令,从 &
lt;helm_release_name>-generated-secret 或自定义凭证中检索默认凭证:oc get secret <helm_release_name>-generated-secret \ -o jsonpath="{.data.identities-batch}" | base64 --decode$ oc get secret <helm_release_name>-generated-secret \ -o jsonpath="{.data.identities-batch}" | base64 --decodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. 添加自定义用户凭证 复制链接链接已复制到粘贴板!
创建 Data Grid 用户凭证并分配授予集群访问权限安全授权的角色。
流程
通过在
deploy.security.batch字段中指定user create命令创建凭证。具有隐式授权的用户
deploy: security: batch: 'user create admin -p changeme'deploy: security: batch: 'user create admin -p changeme'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 具有特定角色的用户
deploy: security: batch: 'user create personone -p changeme -g deployer'deploy: security: batch: 'user create personone -p changeme -g deployer'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 安装或升级您的 Data Grid Helm 发行版本。
3.2.1. 用户角色和权限 复制链接链接已复制到粘贴板!
Data Grid 使用基于角色的访问控制来授权用户访问集群资源和数据。为提高安全性,您应该在添加凭证时为 Data Grid 用户授予适当的角色。
| 角色 | 权限 | 描述 |
|---|---|---|
|
| ALL | 带有所有权限的超级用户,包括缓存管理器生命周期的控制。 |
|
| ALL_READ, ALL_WRITE, LISTEN, EXEC, MONITOR, CREATE |
除了 |
|
| ALL_READ, ALL_WRITE, LISTEN, EXEC, MONITOR |
除了 |
|
| ALL_READ, MONITOR |
除了 |
|
| MONITOR | 可以查看 Data Grid 集群的统计信息。 |
3.2.2. 使用身份验证 secret 添加多个凭证 复制链接链接已复制到粘贴板!
使用身份验证 secret 为 Data Grid 集群添加多个凭证。
先决条件
-
有一个
oc客户端。
流程
创建一个
identity-batch文件,其中包含用于添加凭证的命令。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 identity
-batch 文件创建身份验证 secret。oc apply -f identities-batch.yaml
$ oc apply -f identities-batch.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
deploy.security.SecretName字段中指定身份验证 secret。deploy: security: authentication: true secretName: 'connect-secret'deploy: security: authentication: true secretName: 'connect-secret'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 安装或升级您的 Data Grid Helm 发行版本。
3.3. 禁用身份验证 复制链接链接已复制到粘贴板!
允许用户访问 Data Grid 集群和操作数据,而无需提供凭证。
如果无法从 OpenShift 集群外部访问端点,则不要禁用身份验证。您应该只为开发环境禁用身份验证。
流程
-
从"default"安全域中删除
propertiesRealm字段。 - 安装或升级您的 Data Grid Helm 发行版本。
3.4. 禁用安全授权 复制链接链接已复制到粘贴板!
允许 Data Grid 用户执行任何操作,而不考虑它们的角色。
流程
将
null设置为deploy.infinispan.cacheContainer.security字段的值。提示将
--set deploy.infinispan.cacheContainer.security=null参数与helm客户端一起使用。- 安装或升级您的 Data Grid Helm 发行版本。
第 4 章 配置网络访问 复制链接链接已复制到粘贴板!
为您的 Data Grid 部署配置网络访问,并了解内部网络服务。
4.1. 在网络上公开 Data Grid 集群 复制链接链接已复制到粘贴板!
在网络上提供 Data Grid 集群,以便您可以访问 Data Grid 控制台以及 REST 和 Hot Rod 端点。默认情况下,Data Grid chart 通过路由公开部署,但您可以将它配置为通过 Load Balancer 或 Node Port 来公开集群。您还可以配置 Data Grid chart,以便不会在网络上公开部署,且仅在 OpenShift 集群内部可用。
流程
为
deploy.expose.type字段指定以下内容之一:Expand 选项 描述 Route通过路由公开数据仓库。这是默认值。
LoadBalancer通过负载均衡器服务公开数据仓库。
NodePort通过节点端口服务公开数据仓库。
""(空值)禁用在网络上公开数据平面。
-
如果您通过路由公开 Data Grid,可选使用
deploy.expose.host字段指定主机名。 -
如果您通过节点端口服务公开 Data Grid,可选使用
deploy.expose.nodePort字段指定端口。 - 安装或升级您的 Data Grid Helm 发行版本。
4.2. 检索网络服务详情 复制链接链接已复制到粘贴板!
获取网络服务详情,以便您可以连接到 Data Grid 集群。
先决条件
- 在网络上公开您的 Data Grid 集群。
-
有一个
oc客户端。
流程
使用以下命令之一检索网络服务详情:
如果您通过路由公开 Data Grid:
oc get routes
$ oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您通过负载均衡器或节点端口服务公开 Data Grid:
oc get services
$ oc get servicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 网络服务 复制链接链接已复制到粘贴板!
Data Grid 图为内部访问创建默认网络服务。
| 服务 | 端口 | 协议 | 描述 |
|---|---|---|---|
|
|
| TCP | 提供对 Data Grid Hot Rod 和 REST 端点的访问。 |
|
|
| TCP | 提供对 Data Grid 指标的访问。 |
|
|
| TCP | 允许 Data Grid pod 相互发现并组成集群。 |
您可以检索内部网络的详情,如下所示:
oc get services
$ oc get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
infinispan ClusterIP 192.0.2.0 <none> 11222/TCP,11223/TCP
infinispan-ping ClusterIP None <none> 8888/TCP
第 5 章 连接到 Data Grid 集群 复制链接链接已复制到粘贴板!
配置和部署 Data Grid 集群后,您可以通过 Data Grid Console、命令行界面(CLI)、Hot Rod 客户端或 REST API 建立远程连接。
5.1. 访问数据网格控制台 复制链接链接已复制到粘贴板!
访问控制台以创建缓存、执行管理操作和监控您的 Data Grid 集群。
先决条件
- 在网络上公开您的 Data Grid 集群。
- 检索网络服务详细信息。
流程
从
$SERVICE_HOSTNAME:$PORT的任何浏览器访问 Data Grid Console。将
$SERVICE_HOSTNAME:$PORT替换为网络上可用的 Data Grid 的主机名和端口。
5.2. 使用命令行界面(CLI) 复制链接链接已复制到粘贴板!
使用 Data Grid CLI 连接到集群并创建缓存、操作数据并执行管理操作。
先决条件
- 在网络上公开您的 Data Grid 集群。
- 检索网络服务详细信息。
- 从 Data Grid 软件下载。
-
将原生 Data Grid CLI 发行版本的
.zip存档提取到主机文件系统。
流程
使用网络服务启动 Data Grid CLI 作为
-c参数的值,例如:{native_cli} -c http://cluster-name-myroute.hostname.net/$ {native_cli} -c http://cluster-name-myroute.hostname.net/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 提示时输入您的 Data Grid 凭证。
根据需要执行 CLI 操作。
提示按 tab 键或使用
--help参数查看可用选项和帮助文本。-
使用 exit 命令来
退出CLI。
5.3. 连接在 OpenShift 上运行的 Hot Rod 客户端 复制链接链接已复制到粘贴板!
使用与 Data Grid 集群在同一 OpenShift 集群中运行的 Hot Rod 客户端访问远程缓存。
先决条件
- 检索网络服务详细信息。
流程
在客户端配置中指定您的 Data Grid 集群的内部网络服务详情。
在以下配置示例中,
$SERVICE_HOSTNAME:$PORT表示允许访问您的 Data Grid 集群的主机名和端口。- 指定您的凭证,以便客户端可以使用 Data Grid 进行身份验证。
如果需要,配置客户端智能。
在 OpenShift 上运行的热 Rod 客户端可以使用任何客户端智能,因为它们可以访问 Data Grid pod 的内部 IP 地址。
建议使用默认的智能功能HASH_DISTRIBUTION_AWARE,因为它允许客户端将请求路由到主所有者,从而提高性能。
编程配置
hot Rod 客户端属性
5.4. 连接在 OpenShift 外部运行的 Hot Rod 客户端 复制链接链接已复制到粘贴板!
使用在部署 Data Grid 集群的 OpenShift 集群外部运行的 Hot Rod 客户端访问远程缓存。
先决条件
- 在网络上公开您的 Data Grid 集群。
- 检索网络服务详细信息。
流程
在客户端配置中指定您的 Data Grid 集群的内部网络服务详情。
在以下配置示例中,
$SERVICE_HOSTNAME:$PORT表示允许访问您的 Data Grid 集群的主机名和端口。- 指定您的凭证,以便客户端可以使用 Data Grid 进行身份验证。
-
将客户端配置为使用
BASIC智能。
编程配置
hot Rod 客户端属性
5.5. 访问 REST API 复制链接链接已复制到粘贴板!
Data Grid 提供了一个 RESTful 接口,您可以使用 HTTP 客户端与之交互。
先决条件
- 在网络上公开您的 Data Grid 集群。
- 检索网络服务详细信息。
流程
使用
$SERVICE_HOSTNAME:$PORT/rest/v2的任何 HTTP 客户端访问 REST API。将
$SERVICE_HOSTNAME:$PORT替换为网络上可用的 Data Grid 的主机名和端口。