Red Hat Data Grid 8.3 发行注记
Red Hat Data Grid 复制链接链接已复制到粘贴板!
Data Grid 是一个高性能分布式内存数据存储。
- 无架构数据结构
- 将不同对象存储为键值对的灵活性。
- 基于网格的数据存储
- 旨在在集群中分发和复制数据。
- 弹性扩展
- 动态调整节点数量,以便在不中断服务的情况下满足需求。
- 数据互操作性
- 从不同端点在网格中存储、检索和查询数据。
Data Grid 文档 复制链接链接已复制到粘贴板!
红帽客户门户网站中提供了 Data Grid 的文档。
Data Grid 下载 复制链接链接已复制到粘贴板!
访问 红帽客户门户上的 Data Grid 软件下载。
您必须有一个红帽帐户才能访问和下载数据中心软件。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 Data Grid 发行信息 复制链接链接已复制到粘贴板!
了解新功能并获取最新的 Data Grid 版本信息。
1.1. Data Grid 8.3.0 中的新功能 复制链接链接已复制到粘贴板!
Data Grid 8.3 提高了可用性、提高性能并提高安全性。了解新内容。
1.1.1. Java 17 支持 复制链接链接已复制到粘贴板!
Data Grid 8.3 为嵌入式和远程缓存完全支持 Java 17。
1.1.2. Data Grid Helm Chart 复制链接链接已复制到粘贴板!
Data Grid 8.3 引入了一个 Helm chart,用于在 Red Hat OpenShift 上部署 Data Grid 集群。Data Grid Helm Chart 会为无法部署 Data Grid Operator 管理的集群或需要手动配置、部署和管理数据中心集群的场景提供替代方案。
Data Grid Helm Chart 包括 deploy.infinispan 值,可让您使用 Helm 客户端或通过 OpenShift Web 控制台将自定义配置应用到 Data Grid Server 节点。
1.1.3. Data Grid 配置 复制链接链接已复制到粘贴板!
Data Grid 提供声明式和编程配置属性,用于自定义缓存和底层机制,如安全性和集群传输。
polyglot 配置
Data Grid 8.3 可让您创建 JSON 和 YAML 格式的声明配置,除了 XML 外。您可以为任何部署平台重复使用相同的 Data Grid 配置文件:Red Hat Enterprise Linux (RHEL)或 Red Hat OpenShift via Data Grid Operator 或 Data Grid Helm Chart。
动态缓存的可变配置属性
Data Grid 8.3 可让您在运行时动态创建的缓存修改某些配置属性。这意味着您不再需要删除,然后重新创建缓存以更改配置属性,如 lifetimespan for expiration 或 max-count 进行驱除。
对缓存配置的更改必须与现有配置兼容。例如,您无法修改缓存配置,将 replicated-cache 元素更改为 distributed-cache,或使用 max-count 属性,而不是 max-size 属性。
更改可变配置属性
Data Grid 命令行界面(CLI)和 REST API 提供了以下机制:
- 检索可变配置属性的列表。
- 在运行时更改可变配置属性。
缓存大小统计
从 Data Grid 8.3 开始,currentNumberOfEntries 统计默认返回 -1 以提高性能。
现在,如果要恢复这个统计 的准确值,Data Grid 还为指标配置提供准确的大小 属性。但是,这是资源密集型计算,建议只在开发环境中使用。将值设为 true,如下所示:
声明
<cache-container> <metrics accurate-size="true"/> </cache-container>
<cache-container>
<metrics accurate-size="true"/>
</cache-container>
programmatic
GlobalConfigurationBuilder b = new GlobalConfigurationBuilder(); b.metrics().accurateSize(true);
GlobalConfigurationBuilder b = new GlobalConfigurationBuilder();
b.metrics().accurateSize(true);
计划在以后的 Data Grid 版本中提供大约缓存大小统计的指标。
1.1.4. 持久性存储 复制链接链接已复制到粘贴板!
Data Grid 8.3 为使用持久性存储提供新的改进的缓存存储实现。
基于文件的默认缓存存储实现
为了通过使用较少的内存资源并避免碎片来提高性能,SoftIndexFileStore 现在是 Data Grid 中基于文件的缓存存储的默认实现。从 8.3 开始,包括在缓存配置中包括 文件存储 持久性,会创建一个基于软索引文件的缓存存储,而不是单文件缓存存储。
当您升级到 8.3 时,数据平面会自动将任何文件 存储配置迁移到 SoftIndexFileStore。
如果您从早期版本迁移到 Data Grid 8.3,且您的缓存配置包括 soft-index-file-store 元素,您应该将其转换为 file-store 元素。如需更多信息,请参阅 迁移到 Data Grid 8。
Data Grid 8.2
Data Grid 8.3
SQL 缓存存储
Data Grid 8.3 引入了 SQL 缓存存储,简化了对持久性存储中的数据的访问,并通过 JDBC 连接预加载缓存。
您可以创建两种类型的 SQL 缓存存储:
- 表
- Data Grid 从单个数据库表中加载条目。
- 查询
- Data Grid 使用 SQL 查询来加载条目,并执行插入、更新和删除操作。
JDBC 连接工厂
从 Data Grid 8.3 Data Grid 开始,在 org.infinispan.persistence.jdbc.common.configuration 软件包中为 JDBC 连接提供了 ConnectionFactory 实现。您可以在 SQL 缓存存储和基于 JDBC 字符串的缓存存储中使用这些连接工厂。
1.1.5. Data Grid Server 复制链接链接已复制到粘贴板!
数据中心服务器在专用 Java 虚拟机(JVM)中运行,并为远程缓存提供可扩展且容错的集群。
分布式安全域
Data Grid Server 现在允许您将多个安全域合并到一个域中。在验证用户时,Data Grid Server 会依次使用每个安全域,直到找到可以执行身份验证的安全域。
例如,以下安全域包含一个 LDAP 域和一个属性 realm 和 distributed-realm 元素:
多个端点配置
您可以将 Data Grid 服务器配置为将多个端点绑定到不同的套接字,并使用不同的安全域。
以下示例中,以下片段包含两个不同的端点配置。一个端点绑定到"公共"套接字,使用"应用程序"安全域,并禁用管理功能。另一个端点绑定到"私有"套接字,使用"管理"安全域,并启用管理功能。
从 8.3 开始,endpoint 元素现在是一个或多个端点配置的打包程序。如果将子元素添加到 端点,则必须使用 endpoint 元素。
如果您要从 Data Grid 8.2 或更早版本升级,并且配置多个端点,您必须将配置调整为 8.3 模式。如需更多信息,请参阅 迁移到 Data Grid 8。
安全增强
集群传输的安全域
指定包含 TLS 服务器身份来保护集群传输的安全域,例如:
<cache-container> <transport server:security-realm="tls-transport"/> </cache-container>
<cache-container>
<transport server:security-realm="tls-transport"/>
</cache-container>
此配置还加密用于跨站点复制的 RELAY 消息,并提供 JGroups SYM_ENCRYPT 和 ASYM_ENCRYPT 协议的替代选择。您必须在参与跨站点复制的所有 Data Grid 集群上配置安全性。
PEM 文件密钥存储和信任存储
直接向 Data Grid 服务器配置添加 PEM 文件,将它们用作 TLS 服务器身份中的信任存储和密钥存储。
- PEM 文件作为密钥存储必须包含 PKCS1141 或 PKCS the8 格式的私钥,以及一个或多个证书。
- PEM 文件作为信任存储必须包含一个或多个证书。
-
PEM 文件需要一个空密码
password=""。
使用 OpenSSL 完全支持 TLSv1.3
Data Grid Server 默认支持 TLS 版本 1.2 和 1.3。您可以使用以下配置限制客户端连接到 TLSv1.3 的安全协议:
<engine enabled-protocols="TLSv1.3" />
<engine enabled-protocols="TLSv1.3" />
配置覆盖
Data Grid Server 可以使用重复 --server-config= 或 -c 参数来解析您在启动时覆盖的多个配置文件。
bin/server.sh -c infinispan.xml -c overlay.yaml
$ bin/server.sh -c infinispan.xml -c overlay.yaml
您可以根据需要使用多个配置覆盖文件,按任何顺序使用。配置覆盖文件:
- 必须为每个数据中心配置有效。
- 只要您的覆盖文件组合产生完整的配置,不需要完全配置。
Data Grid Server 不会检测覆盖文件间的冲突配置。每个覆盖文件会覆盖上述配置中的任何冲突配置。
缓存配置
如果您在覆盖文件中添加缓存配置,Data Grid 服务器不会在其他节点上动态创建该缓存。
覆盖文件不能包含缓存配置片段。例如,要在覆盖文件 -c mycache.yaml 中创建分布式缓存,您必须包含 infinispan 和 cacheContainer 字段,如下所示:
侦听所有地址
如果您将 0.0.0.0 meta-address (INADDR_ANY)指定为 Data Grid 服务器的绑定地址,它会侦听所有可用网络接口上的进入客户端连接。
性能和可用性改进
- Data Grid Server 8.3 整合线程池以使用较少的主机资源。
-
Data Grid Server 安装现在包含
bin/service.bat脚本,用于作为 Microsoft Windows 服务运行。
1.1.6. Data Grid 控制台 复制链接链接已复制到粘贴板!
Data Grid Console 是一个图形用户界面,用于监控和管理远程缓存,其中包括 8.3 中的以下功能和增强:
- 缓存现在必须具有适当的编码才能查看 Entries 选项卡。
您可以为缓存打开和关闭集群重新平衡操作。
重要您应该仅在短时间内禁用集群重新平衡,以避免在重启节点或添加多个节点时重复重新平衡操作。始终尽快启用集群重新平衡,以防止数据丢失。
- 添加缓存对话框中不再提供缓存 模板,除非您将自定义模板添加到 Data Grid Server 配置中。
- 自动检测 JSON 编码和 Protobuf 自定义类型。
- 缓存条目编辑现在被类型识别。
- 对警报模态、工具提示和内联帮助进行了更新,以改进用户体验。
- 改进了错误处理和统计收集。
1.1.7. Data Grid 命令行界面(CLI) 复制链接链接已复制到粘贴板!
Data Grid CLI 允许您脚本并为远程缓存自动执行管理操作。
在运行时修改配置属性
通过 change 命令,您可以在运行时修改 Data Grid 配置属性。
-
使用
--file选项指定具有一个或多个属性修改的配置文件。 -
使用
--attribute和--value选项修改特定的配置属性。
alter cache mycache --attribute=clustering.remote-timeout --value=5000
alter cache mycache --attribute=clustering.remote-timeout --value=5000
控制缓存可用性
可用 命令允许您在网络分区中管理集群缓存的可用性。
-
使用
--mode=[AVAILABLE|DEGRADED_MODE]选项,在使用 DENY_READ_WRITES 或 ALLOW_READ_WRITES 或 ALLOW_READS 分区处理策略时,将缓存可用性设置为 AVAILABLE 或 DEGRADED_MODE。
availability --mode=AVAILABLE mycache
availability --mode=AVAILABLE mycache
启用和禁用重新平衡操作
rebalance 命令可让您为缓存打开和关闭重新平衡操作。
您应该仅在短时间内禁用集群重新平衡,以避免在重启节点或添加多个节点时重复重新平衡操作。始终尽快启用集群重新平衡,以防止数据丢失。
使用
rebalance disable命令来关闭重新平衡。[//containers/default]> rebalance disable
[//containers/default]> rebalance disableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
rebalance enable命令打开重新平衡。[//containers/default]> rebalance enable
[//containers/default]> rebalance enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow
hot Rod 集群迁移
migrate 命令提供了将数据从一个正在运行的 Data Grid 集群迁移到另一个选项。
-
使用
migrate cluster connect命令,从源集群建立到目标集群的连接。 -
使用
migrate cluster synchronize命令将数据从源集群迁移到目标集群。 -
在迁移数据后,使用
migrate cluster disconnect命令结束集群间的连接。
检索跨站点复制转发节点
site 命令可让您找出 Data Grid 集群中的哪些节点处理跨站点复制的 RELAY 消息。
-
使用
site is-relay-node命令找出节点是否为中继节点。 -
使用
site relay-nodes命令获取集群中中继节点的列表。
原生 CLI
在 8.3 中更新原生 CLI,以改进作为 oc 客户端插件的使用,并与 Red Hat OpenShift 上运行的 Data Grid pod 交互。
1.1.8. REST API 复制链接链接已复制到粘贴板!
Data Grid 可让您通过 REST 使用 HTTP 访问远程缓存和容器。
在运行时修改配置属性
检索缓存的所有可变缓存配置属性。
GET /rest/v2/caches/{cacheName}?action=get-mutable-attributesGET /rest/v2/caches/{cacheName}?action=get-mutable-attributesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改可变缓存配置属性。
POST /rest/v2/caches/{cacheName}?action=set-mutable-attributes&attribute-name={attributeName}&attribute-value={attributeValue}POST /rest/v2/caches/{cacheName}?action=set-mutable-attributes&attribute-name={attributeName}&attribute-value={attributeValue}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
控制缓存可用性
检索缓存的可用性。
GET /v2/caches/{cacheName}?action=get-availabilityGET /v2/caches/{cacheName}?action=get-availabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用 DENY_READ_WRITES 或 ALLOW_READS 分区处理策略时,更改集群缓存的可用性。
POST /v2/caches/{cacheName}?action=set-availability&availability={AVAILABILITY}POST /v2/caches/{cacheName}?action=set-availability&availability={AVAILABILITY}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
启用和禁用重新平衡操作
为所有缓存打开自动重新平衡。
POST /rest/v2/cache-managers/{cacheManagerName}?action=enable-rebalancingPOST /rest/v2/cache-managers/{cacheManagerName}?action=enable-rebalancingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为所有缓存关闭自动重新平衡。
POST /rest/v2/cache-managers/{cacheManagerName}?action=disable-rebalancingPOST /rest/v2/cache-managers/{cacheManagerName}?action=disable-rebalancingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为特定缓存打开自动重新平衡。
POST /v2/caches/{cacheName}?action=enable-rebalancingPOST /v2/caches/{cacheName}?action=enable-rebalancingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为特定缓存关闭自动重新平衡。
POST /v2/caches/{cacheName}?action=disable-rebalancingPOST /v2/caches/{cacheName}?action=disable-rebalancingCopy to Clipboard Copied! Toggle word wrap Toggle overflow
hot Rod 迁移
REST API 会公开控制,允许您将数据从一个正在运行的 Data Grid 集群迁移到另一个网格集群。
从源集群到目标集群建立连接。
POST /v2/caches/myCache?action=connect-source
POST /v2/caches/myCache?action=connect-sourceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据从源集群迁移到目标集群。
POST /v2/caches/myCache?action=sync-data
POST /v2/caches/myCache?action=sync-dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在迁移数据后,在集群间终止连接。
DELETE /v2/caches/myCache/rolling-upgrade/source-connection
DELETE /v2/caches/myCache/rolling-upgrade/source-connectionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
检索跨站点复制转发节点
获取为跨站点复制发送和接收 RELAY 消息的节点列表:
GET /rest/v2/cache-managers/{cacheManagerName}GET /rest/v2/cache-managers/{cacheManagerName}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 XML、JSON 和 YAML 之间转换缓存配置
使用有效配置和 ?action=convert 参数调用 POST 请求。Data Grid 使用 Accept 标头指定的类型中配置的等效表示响应。
POST /rest/v2/caches?action=convert
POST /rest/v2/caches?action=convert
带有服务器事件的缓存条目和缓存配置监听程序
使用服务器事件接收与配置更改相关的事件。
GET /rest/v2/container/config?action=listen
GET /rest/v2/container/config?action=listenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用服务器事件接收缓存事件。
GET /rest/v2/caches/{name}?action=listenGET /rest/v2/caches/{name}?action=listenCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.9. 查询 API 复制链接链接已复制到粘贴板!
Data Grid 可让您使用 Ickle 查询语言来索引缓存并执行关系或全文本查询。
通过查询删除
您可以使用以下语法从 Data Grid 缓存中删除条目:
DELETE FROM <entityName> [WHERE condition]
DELETE FROM <entityName> [WHERE condition]
-
仅引用具有 <
entityName> 的单一实体。DELETE 查询无法使用加入。 - WHERE 条件是可选的。
查询执行方法
Query API 提供了在缓存上执行 Ickle 查询的方法:
-
query.execute ()运行 SELECT 语句并返回结果。 -
query.executeStatement ()运行 DELETE 语句并修改数据。
您应该始终调用 executeStatement () 来修改数据并调用 execute () 来获取查询的结果。
1.1.10. 跨站点复制 复制链接链接已复制到粘贴板!
跨站点复制可让您在多个地理位置备份数据中心集群。
改进了可观察性和指标
Data Grid 8.3 更新跨站点复制功能,以提高监控和统计信息。
Data Grid 可让您:
- 通过 CLI、REST API 或 JMX 检索备份位置的详细状态。
检索备份位置的中继节点列表,以查找哪些向跨站点通信发送 JGroups RELAY 消息。
注意JGroups 配置将节点作为"站点 master"节点转发。Data Grid 使用中继节点,因为它更为描述性,并提供了更直观的选择。
Data Grid 8.3 还提供有关每个备份位置和缓存的跨站点复制操作的更多详细信息,包括响应时间和 RELAY 信息的数量。
命名全局集群
cluster 属性允许您为打印到日志消息的全局集群定义名称。这样可以更轻松地将全局集群与 Data Grid 日志中的本地集群区分开。
使用集群属性指定的全局 集群名称 在所有站点都必须相同。
默认情况下,跨站点集群名为 "xsite",但您可以指定一个自定义名称,如以下示例中的 "my-global-cluster" :
<remote-sites default-stack="tcp" cluster="my-global-cluster"> <remote-site name="LON"/> <remote-site name="NYC"/> </remote-sites>
<remote-sites default-stack="tcp" cluster="my-global-cluster">
<remote-site name="LON"/>
<remote-site name="NYC"/>
</remote-sites>
1.1.11. 滚动升级和 Hot Rod 迁移 复制链接链接已复制到粘贴板!
Data Grid 8.3 简化了在集群间执行数据实时迁移的配置和机制,以便从一个版本移到另一个版本。Data Grid 8.3 中的滚动升级:
-
不再需要手动添加
remote-store配置来执行滚动升级。
使用 CLI 或 REST API 连接源和目标集群。 - 在 REST API 和 CLI 命令中提供额外的方法,以进行滚动升级操作。
- 可让您通过 Console、CLI、REST API 或 Hot Rod API 动态创建的缓存执行滚动升级。
1.2. Data Grid 8.3.1 中的新功能 复制链接链接已复制到粘贴板!
Data Grid 8.3 提高了可用性、提高性能并提高安全性。了解新内容。
遵守联邦信息处理标准(FIPS) 140-2
现在,您可以使用 FIPS 140-2 兼容加密的 RHEL 8 系统上安装并运行 Data Grid Server。如需更多信息,请参阅 在带有 FIPS 140-2 兼容加密的系统上配置 Data Grid 服务器。
改进了指标
此发行版本包括对 Data Grid 指标端点的几个改进。
大约缓存大小统计
Data Grid 8.3.1 引入了为缓存大小提供大约值的统计信息。在 8.3.0 中,数据中心禁用了缓存大小统计,因为操作会计算受到负面影响的性能。
在默认指标配置中启用了以下统计:
approximateEntries- 接收请求的服务器中最近缓存中的条目副本数量。在内存和持久性存储中包含条目。
approximateEntriesUnique- 大约要接收请求的服务器是主所有者的条目数。在内存和持久性存储中包含条目。
globalApproximateEntries- 目前在缓存集群范围中的当前条目副本数量。在内存和持久性存储中包含条目。
globalApproximateEntriesUnique- 在集群范围内最近缓存中唯一条目数量。在内存和持久性存储中包含条目。由多个节点拥有的条目仅计算一次。
跨站点连接的远程站点状态指标
Data Grid 现在通过指标端点公开每个备份位置状态 的指标。您可以从支持 OpenMetrics 格式的任何监控工具(如 Prometheus)查看特定站点是在线还是离线。
通过指标端点公开的 JGroups 属性
Data Grid 可让您通过指标端点消耗 Java 管理扩展(JMX)统计信息。现在,您可以监控 JGroups 协议事件。
跨站点复制的性能增强
此发行版本包括对跨站点复制功能的几个改进,可提高性能,包括异步备份策略的冲突检测和解析。
Data Grid 还允许您配置定期清理元数据的频率,称为 tombstones。您可以通过为 tombstone 映射定义目标大小以及任务运行之间的最大延迟来配置清理任务的频率。
如需更多信息,请参阅 Data Grid Cross-Site Replication。
1.3. Data Grid 8.3 支持的 Java 版本 复制链接链接已复制到粘贴板!
根据您如何安装数据仓库,红帽支持不同的 Java 版本。
嵌入式缓存
当使用 Data Grid 在自定义应用程序中嵌入缓存时,红帽支持 Java 8、Java 11 和 Java 17。
远程缓存
红帽支持用于 Data Grid Server 安装的 Java 11 和 Java 17。对于 Hot Rod Java 客户端,红帽支持 Java 8、Java 11 和 Java 17。
在裸机安装上运行 Data Grid Server 时,Java 17 不提供 JavaScript 引擎。
Java 8 弃用
从 Data Grid 8.2 开始,对 Java 8 的支持已被弃用,目前计划在 Data Grid 8.4 中删除。
自定义应用程序中具有嵌入式缓存的用户应计划升级到 Java 11 或在支持可用时升级到 Java 17。
在需要 Java 8 的应用中运行的热 Rod Java 客户端可以继续使用旧版本的客户端库。红帽支持将旧的 Hot Rod Java 客户端版本与最新的 Data Grid Server 版本结合使用。
第 2 章 已知问题 复制链接链接已复制到粘贴板!
了解 Data Grid 中已知的问题,并了解哪些问题已解决。
2.1. Data Grid 的已知问题 复制链接链接已复制到粘贴板!
对于影响使用 Data Grid Operator 管理的 Data Grid 集群的问题,您应该参考 Data Grid Operator 8.3 发行注记。
当 putAll () 操作写入带有 optimistic 锁定的过期条目时,会发生死锁
问题: JDG-5087
描述 : 使用 optimistic 锁定的事务缓存时,即使写入操作触发过期,命令也会删除过期的条目获取锁定。在某些情况下,当将 All () 操作写入过期条目时,此行为可能会导致死锁。
临时解决方案: 这个问题还没有临时解决方案。
当网络分区发生时,事务不一致
问题: JDG-3935
描述 : 在为 Data Grid 集群发生网络分区的情况下,在分区修复后回滚事务。
临时解决方案: 这个问题还没有临时解决方案。
Red Hat JBoss Web Server 到 Data Grid 8.3 的会话外部化,可通过 7.3.8 或 Tomcat 会话客户端的 8.1.1 版本提供
问题: JDG-4599
描述 : Data Grid 8.3 尚未包含 Tomcat 会话客户端,该客户端将在 EAP 7.4 GA 之后可用。
临时解决方案: 使用以下配置将 Data Grid Server 8.3 与 Tomcat 会话客户端的 Data Grid 8.1.1 版本结合使用:
Data Grid Conflict 解析性能
问题: JDG-3636
描述 : 在某些情况下,Data Grid 分区处理功能比预期执行冲突解析所需的时间要长。
临时解决方案: 这个问题还没有临时解决方案。
Data Grid Server 无法使用一些凭证存储
问题: JDG-4711
描述 : 在某些情况下,Data Grid 服务器在使用凭证密钥存储时记录以下异常:
java.lang.RuntimeException: org.wildfly.security.credential.store.CredentialStoreException: ELY09508: Cannot write credential to store ... Caused by: org.wildfly.security.credential.store.CredentialStoreException: ELY09508: Cannot write credential to store ... Caused by: java.security.KeyStoreException: Cannot store non-PrivateKeys
java.lang.RuntimeException: org.wildfly.security.credential.store.CredentialStoreException: ELY09508: Cannot write credential to store
...
Caused by: org.wildfly.security.credential.store.CredentialStoreException: ELY09508: Cannot write credential to store
...
Caused by: java.security.KeyStoreException: Cannot store non-PrivateKeys
在大多数情况下,此错误表示 JKS 密钥存储包含对称密钥,而不是公钥和私钥。
临时解决方案: 确保凭证存储使用非对称密钥。
2.2. 修复了 Data Grid 8.3.0 复制链接链接已复制到粘贴板!
Data Grid 8.3.0 包括以下显著的修复:
- JDG-4947 异步跨站点复制会导致 tombstone 泄漏
-
使用
putAll ()或getAll ()操作处理过期条目时,JDG-5028 数据竞争 - jDG-4763 客户端无法连接到使用 TLS/SSL 加密的远程缓存
- jDG-4797 Hot Rod 客户端手动集群交换机无法正常工作
- jDG-4860 Hot Rod Java 客户端重试操作的次数太多
- jDG-3629 最大闲置过期时间不适用于配置了传递的驱除和缓存存储
- jDG-3916 Data Grid Console 在打开或关闭时记录不完整的信息
- jDG-4530 跨站点复制自动状态传输,使用 set state 模式为空
- jDG -4 the Data Grid Console 在缓存配置无效时提示用户选择缓存模板
- 如果 Hot Rod 客户端已连接,则作为 Microsoft Windows 服务运行的 JDG-4852 Data Grid 服务器不会关闭
2.3. 修复了 Data Grid 8.3.1 复制链接链接已复制到粘贴板!
Data Grid 8.3.1 包括以下显著的修复:
- jDG-2796 Data Grid 无法正确传递 JWS 会话
- 在成功重启后,JDG-4092 缓存持久性状态不会被删除
- JDG-5220 Ickle fulltext 查询无法使用查询参数
- 当 Protobuf 模式键包含正斜杠时,j DG-5097 备份会失败
- 如果没有 实现等号,则 j DG-5076 RemoveExpiredCommand 不会删除备份中的条目
- JDG-5104 Data Grid Modules for Red Hat JBoss EAP (EAP)缺少依赖项
- 当没有绑定地址参数和服务器不在同一子网中时,j DG-4657 Hot Rod 客户端无法连接
- jDG-5245 ClassCastException with Oracle string-keyed-jdbc-store
- 当从持久性存储中删除内容时,JDG-5161 Compactor 会失败
2.4. 主机系统和依赖项问题 复制链接链接已复制到粘贴板!
在某些情况下,Data Grid 部署可能会遇到主机系统或外部依赖项导致的错误。本节详细介绍了任何已知问题,以及故障排除和临时解决方案。
Red Hat Enterprise Linux 7 上的 TLS
RHEL 7 提供 OpenSSL 库的版本,它尚不提供对 TLSv1.3 的支持。但是,Data Grid Server 8.3 默认启用 TLSv1.3 和 TLSv1.2,这会导致加密 Hot Rod 和 REST 端点的客户端连接出现错误。
Data Grid Server 还记录如下信息:
WARN [org.infinispan.HOTROD] ISPN004098: Closing connection due to transport error org.infinispan.client.hotrod.exceptions.TransportException:: ISPN004077: Closing channel due to error in unknown operation.
WARN [org.infinispan.HOTROD] ISPN004098: Closing connection due to transport error
org.infinispan.client.hotrod.exceptions.TransportException:: ISPN004077:
Closing channel due to error in unknown operation.
如果您在 RHEL 7 上安装 Data Grid Server,您应该使用以下 JVM 选项禁用 OpenSSL 来使用原生 Java SSL 库:
-Dorg.infinispan.openssl=false
-Dorg.infinispan.openssl=false