使用 Helm 构建和部署 Data Grid 集群
Red Hat Data Grid 复制链接链接已复制到粘贴板!
Data Grid 是一个高性能分布式内存数据存储。
- 无架构数据结构
- 将不同对象存储为键值对的灵活性。
- 基于网格的数据存储
- 旨在在集群中分发和复制数据。
- 弹性扩展
- 动态调整节点数量,以便在不中断服务的情况下满足需求。
- 数据互操作性
- 从不同端点在网格中存储、检索和查询数据。
Data Grid 文档 复制链接链接已复制到粘贴板!
红帽客户门户网站中提供了 Data Grid 的文档。
Data Grid 下载 复制链接链接已复制到粘贴板!
访问红帽客户门户上的 Data Grid 软件下载。
您必须有一个红帽帐户才能访问和下载数据中心软件。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO 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 控制台从 Red Hat developer 目录安装 Data Grid chart。安装 chart 会创建一个 Helm 发行版本来部署 Data Grid 集群。
先决条件
- 具有 OpenShift 访问权限。
流程
- 登录 OpenShift Web 控制台。
- 选择 Developer 视角。
- 打开 Add 视图,然后选择 Helm Chart 来浏览 Red Hat developer 目录。
- 找到并选择 Data Grid chart。
- 为 chart 指定名称并选择版本。
在 Data Grid chart 的以下部分中定义值:
- 镜像 将容器镜像配置为在为您的 Data Grid 集群创建 pod 时使用。
部署配置 您的 Data Grid 集群。
提示要查找每个值的描述,请选择 YAML view 选项并访问 schema。编辑 yaml 配置以自定义您的 Data Grid chart。
- 选择 Install。
验证
- 在 Developer 视角中选择 Helm 视图。
- 选择您创建的 Helm 发行版本来查看详情、资源和其他信息。
1.2. 在命令行中安装 Data Grid chart 复制链接链接已复制到粘贴板!
使用命令行在 OpenShift 上安装 Data Grid chart 并实例化一个 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 chart。
-
具有
helm客户端。 -
有一个
oc客户端。
流程
- 根据需要修改 Data Grid 部署的 values 文件。
使用
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 chart。
-
具有
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 中找到字段和值描述。
| 字段 | 描述 | 默认值 |
|---|---|---|
|
| 指定内部 Kubernetes 集群域。 |
|
|
| 指定 Data Grid 集群中的节点数量,并为每个节点创建一个 pod。 |
|
|
| 将 JVM 选项传递给 Data Grid 服务器。 | 没有默认值。 |
|
| 要在服务器启动前下载库。指定代表为 URL 或 Maven 协调的多个、以空格分隔的工件。将提取 .tar、.tar.gz 或 .zip 格式的存档工件。 | 没有默认值。 |
|
| 定义存储是临时还是永久的。 |
默认值为 |
|
| 定义为每个 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 端点的服务,并提供对数据网格集群(包括数据网格控制台)的访问。 |
|
|
| 为默认 30000 到 32767 的节点端口服务指定网络端口。 | 0 如果没有指定端口,则平台会选择一个可用的端口。 |
|
| (可选)指定公开路由的主机名。 | 没有默认值。 |
|
| 向在网络上公开 Data Grid 的服务添加注解。 | 没有默认值。 |
|
| 配置 Data Grid 集群日志类别和级别。 | 没有默认值。 |
|
| 为您创建的每个 Data Grid pod 添加标签。 | 没有默认值。 |
|
| 为您创建的每个服务添加标签。 | 没有默认值。 |
|
| 为包括 pod 和服务在内的所有 Data Grid 资源添加标签。 | 没有默认值。 |
|
|
允许为每个 Data Grid Server 节点 |
|
|
| 配置 StatefulSet pod 使用的 securityContext。 |
|
|
|
使用 |
|
|
| 为所有 Data Grid 集群资源指定一个名称。 | Helm Chart 发行版本名称。 |
|
| 定义集群的 StatefulSet 使用的 nodeAffinity 策略 |
|
|
| 定义集群的 StatefulSet 使用的 podAffinity 策略 |
|
|
| 定义集群的 StatefulSet 使用的 podAntiAffinity 策略 |
|
|
| 数据网格服务器配置。 | Data Grid 提供默认的服务器配置。有关配置服务器实例的更多信息,请参阅 Data Grid Server 配置值。 |
第 2 章 配置数据网格服务器 复制链接链接已复制到粘贴板!
将自定义 Data Grid Server 配置应用到您的部署。
2.1. 自定义 Data Grid 服务器配置 复制链接链接已复制到粘贴板!
将自定义 deploy.infinispan 值应用到 Data Grid 集群,以配置 Cache Manager 和底层服务器机制,如安全域或 Hot Rod 和 REST 端点。
修改 deploy.infinispan 值时,您必须始终提供完整的 Data Grid 服务器配置。
如果要对 Data Grid 集群使用监控功能,请不要修改或删除默认的"metrics"配置。
流程
根据需要修改 Data Grid Server 配置:
使用
deploy.infinispan.cacheContainer字段为 Cache Manager 指定配置值。例如,您可以在启动时使用任何数据网格配置或添加缓存模板来创建缓存,并使用它们根据需要创建缓存。
-
使用
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 安全机制。
2.2. Data Grid 服务器配置值 复制链接链接已复制到粘贴板!
借助 Data Grid Server 配置值,您可以自定义 Cache Manager 并修改在 OpenShift 容器集中运行的服务器实例。
Data Grid 服务器配置
Data Grid 缓存配置
缓存模板
集群传输
第 3 章 配置身份验证和授权 复制链接链接已复制到粘贴板!
通过添加凭证和分配具有不同权限的角色,控制对 Data Grid 集群的访问。
3.1. 默认凭证 复制链接链接已复制到粘贴板!
Data Grid 在 < helm_release_name>-generated-secret secret 中添加默认凭证。
| 用户名 | 描述 |
|---|---|
|
|
具有 |
|
|
具有 |
3.1.1. 检索凭证 复制链接链接已复制到粘贴板!
从身份验证 secret 获取 Data Grid 凭据。
先决条件
- 安装 Data Grid Helm Chart。
-
有一个
oc客户端。
流程
使用以下命令从 <
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
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 |
除了监控权限外,还具有对 Data Grid |
|
| MONITOR | 可以查看 Data Grid 集群的统计信息。 |
3.2.2. 添加凭证存储 复制链接链接已复制到粘贴板!
创建 Data Grid 凭证存储,以避免在服务器配置 ConfigMap 中以明文形式公开密码。有关用例,请参阅 第 4.1 节 “启用 TLS 加密”。
流程
通过在
deploy.security.batch字段中指定credentials add命令,创建凭据存储。为存储添加密码
deploy: security: batch: 'credentials add keystore -c password -p secret --path="credentials.pfx"'deploy: security: batch: 'credentials add keystore -c password -p secret --path="credentials.pfx"'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,凭据存储需要添加到服务器配置中。
配置凭证存储
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. 使用身份验证 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字段的值。提示使用带有
helm客户端的--set deploy.infinispan.cacheContainer.security=null参数。- 安装或升级 Data Grid Helm 发行版本。
第 4 章 配置加密 复制链接链接已复制到粘贴板!
为您的 Data Grid 配置加密。
4.1. 启用 TLS 加密 复制链接链接已复制到粘贴板!
对于端点和集群传输,可以独立启用加密。
先决条件
- 包含证书或密钥存储的 secret。端点和集群应该使用不同的 secret。
- 包含访问密钥存储所需的任何密码的凭据密钥存储。请参阅 Adding credentials keystore。
流程
在部署配置中设置 secret 名称。
提供包含密钥存储的 secret 名称:
deploy: ssl: endpointSecretName: "tls-secret" transportSecretName: "tls-transport-secret"deploy: ssl: endpointSecretName: "tls-secret" transportSecretName: "tls-transport-secret"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用集群传输 TLS。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用端点 TLS。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 5 章 配置网络访问 复制链接链接已复制到粘贴板!
为您的 Data Grid 部署配置网络访问权限,并找出内部网络服务。
5.1. 在网络上公开 Data Grid 集群 复制链接链接已复制到粘贴板!
使 Data Grid 集群在网络上可用,以便您可以访问数据网格控制台以及 REST 和 Hot Rod 端点。默认情况下,Data Grid chart 通过 Route 公开部署,但您可以通过 Load Balancer 或 Node Port 将其配置为公开集群。您还可以配置 Data Grid chart,以便部署不会在网络上公开,且仅在 OpenShift 集群内部可用。
流程
为
deploy.expose.type字段指定以下之一:Expand 选项 描述 Route通过路由公开数据网格。这是默认值。
LoadBalancer通过负载均衡器服务公开数据网格。
NodePort通过节点端口服务公开数据网格。
""(空值)禁用在网络上公开 Data Grid。
-
如果您通过路由公开 Data Grid,则可选使用
deploy.expose.host字段指定主机名。 -
如果您通过节点端口服务公开 Data Grid,可以选择使用
deploy.expose.nodePort字段指定端口。 - 安装或升级 Data Grid Helm 发行版本。
5.2. 检索网络服务详情 复制链接链接已复制到粘贴板!
获取网络服务详情,以便您可以连接到 Data Grid 集群。
先决条件
- 在网络上公开您的 Data Grid 集群。
-
有一个
oc客户端。
流程
使用以下命令之一检索网络服务详情:
如果您通过一个路由公开数据网格:
oc get routes
$ oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您通过负载均衡器或节点端口服务公开数据网格:
oc get services
$ oc get servicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. 网络服务 复制链接链接已复制到粘贴板!
Data Grid chart 为内部访问创建默认网络服务。
| Service | 端口 | 协议 | 描述 |
|---|---|---|---|
|
|
| TCP | 提供对 Data Grid Hot Rod 和 REST 端点的访问。 |
|
|
| TCP | 提供对 Data Grid 指标的访问。 |
|
|
| TCP | 允许 Data Grid pod 相互发现并组成集群。 |
您可以检索有关内部网络服务的详情,如下所示:
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
$ 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
第 6 章 连接到 Data Grid 集群 复制链接链接已复制到粘贴板!
配置和部署 Data Grid 集群后,您可以通过 Data Grid 控制台、命令行界面(CLI)、Hot Rod 客户端或 REST API 建立远程连接。
6.1. 访问数据网格控制台 复制链接链接已复制到粘贴板!
访问控制台以创建缓存、执行管理操作并监控您的数据网格集群。
先决条件
- 在网络上公开您的 Data Grid 集群。
- 检索网络服务详细信息。
流程
从位于
$SERVICE_HOSTNAME 的任何浏览器访问数据网格控制台:$PORT.将
$SERVICE_HOSTNAME:$PORT替换为在网络上提供 Data Grid 的主机名和端口。
6.2. 使用命令行界面(CLI)连接 复制链接链接已复制到粘贴板!
使用 Data Grid CLI 连接到集群并创建缓存、操作数据并执行管理操作。
先决条件
- 在网络上公开您的 Data Grid 集群。
- 检索网络服务详细信息。
- 从 Data Grid 软件下载原生 Data Grid CLI 分发。
-
将原生 Data Grid CLI 发行版本的
.zip存档提取到主机文件系统中。
流程
使用 network 服务启动 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参数查看可用选项和帮助文本。-
使用
quit命令退出 CLI。
6.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,因为它允许客户端将请求路由到主所有者,从而提高性能。
编程配置
热 Rod 客户端属性
6.3.1. 获取所有 Data Grid pod 的 IP 地址 复制链接链接已复制到粘贴板!
您可以检索用于运行 Data Grid pod 的所有 IP 地址列表。
建议使用 Hot Rod 客户端连接 OpenShift 上运行的 Hot Rod 客户端,因为它确保了与其中一个可用容器集的初始连接。
流程
使用以下方法获取正在运行的 Data Grid pod 的所有 IP 地址:
使用 OpenShift API:
-
访问
${APISERVER}/api/v1/namespaces/<chart-namespace>/endpoints/<helm-release-name> 来检索与 <helm-release-name> 服务关联的端点OpenShift 资源。
-
访问
使用 OpenShift DNS 服务:
-
查询 DNS 服务以获取名称 &
lt;helm-release-name>-ping,以获取集群中所有节点的 IP。
-
查询 DNS 服务以获取名称 &
6.4. 连接在 OpenShift 外部运行的 Hot Rod 客户端 复制链接链接已复制到粘贴板!
使用外部部署到部署 Data Grid 集群的 OpenShift 集群的 Hot Rod 客户端访问远程缓存。
先决条件
- 在网络上公开您的 Data Grid 集群。
- 检索网络服务详细信息。
流程
在客户端配置中为您的 Data Grid 集群指定内部网络服务详情。
在以下配置示例,
$SERVICE_HOSTNAME:$PORT表示允许访问您的 Data Grid 集群的主机名和端口。- 指定您的凭证,以便客户端可以通过 Data Grid 进行身份验证。
-
将客户端配置为使用
BASIC智能。
编程配置
热 Rod 客户端属性
6.5. 访问 REST API 复制链接链接已复制到粘贴板!
Data Grid 提供了一个 RESTful 接口,您可以使用 HTTP 客户端与之交互。
先决条件
- 在网络上公开您的 Data Grid 集群。
- 检索网络服务详细信息。
流程
使用位于
$SERVICE_HOSTNAME:$PORT/rest/v2的任何 HTTP 客户端访问 REST API。将
$SERVICE_HOSTNAME:$PORT替换为在网络上提供 Data Grid 的主机名和端口。