Red Hat Data Grid 8.1 发行注记

Red Hat Data Grid 8.1

获取 Data Grid 8.1 的发行信息

Red Hat Customer Content Services

摘要

了解 Data Grid 8.1 中的功能和增强功能,了解当前已知问题和已解决的问题,查看红帽支持的配置等。

Red Hat Data Grid

Data Grid 是一个高性能分布式内存数据存储。

无架构数据结构
将不同对象存储为键值对的灵活性。
基于网格的数据存储
旨在在集群中分发和复制数据。
弹性扩展
动态调整节点数量,以便在不中断服务的情况下满足需求。
数据互操作性
从不同端点在网格中存储、检索和查询数据。

Data Grid 文档

红帽客户门户网站中提供了 Data Grid 的文档。

Data Grid 下载

访问红帽客户门户上的 Data Grid 软件下载

注意

您必须有一个红帽帐户才能访问和下载数据中心软件。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 升级到最新的 Data Grid 版本

红帽建议尽快将任何部署从 8.1.x 升级到最新的 Data Grid 8 版本。Data Grid 团队定期修补安全漏洞,并主动修复软件的最新版本的问题。

1.1. Apache Log4j 安全漏洞

Data Grid 包括 Apache Log4j 组件:

  • Data Grid Server distribution
  • Red Hat OpenShift 的 Data Grid Server 容器镜像

Data Grid 8.2.2 修复 CVE-2021-44228,它是一个关键安全漏洞。Data Grid 8.2.3 修复几个 Log4j CVE 为 moderate (中度)。如需更多信息,请参阅 Data Grid 8.2 发行注记Data Grid Operator 8.2 发行注记。您可以在 Red Hat Data Grid 产品文档中找到最新的 Data Grid 文档

注意

Data Grid Operator 版本 8.2.7 对应于 Data Grid 8.2.2。

如果您无法升级数据网格部署,您必须按照以下步骤缓解 RHSB-2021-009 Log4Shell - Remote Code Execution security bulletin 中所述的关键漏洞。

第 2 章 Data Grid Release Information

了解新功能,获取最新的数据网格发行信息。

2.1. Data Grid 8.1.1 的新功能

Data Grid 8.1.1 为您提供了可用性和性能改进,并提高安全性。检查 8.1.1. 中提供的所有增强功能和更新。

2.1.1. Data Grid Server

此发行版本包括对 Data Grid Server 的几个改进。

可自定义的服务器文件系统

Data Grid Server 现在包含系统属性,用于覆盖服务器根目录下文件夹的默认位置。

目录描述系统属性覆盖

/server/conf

包含服务器配置文件。

infinispan.server.config.path

/server/data

包含按容器名称组织的数据文件。

infinispan.server.data.path

/server/lib

包含服务器扩展文件。
该目录是递归扫描的,并用作类路径。

Infinispan.server.lib.path
使用以下分隔符分隔多个路径
在 Unix / Linux
; on Windows

/server/log

包含服务器日志文件。

infinispan.server.log.path

从文件中设置系统属性

现在,您可以使用 -P--properties 选项从文件中为 Data Grid Server 设置系统属性,例如:

$ ./bin/server.sh -P path/to/system.properties
作为系统服务运行

Data Grid Server 提供系统 init 文件,以便您可以将服务器实例作为服务在 Red Hat Enterprise Linux 上运行。

如需更多信息,请参阅 将 JBoss Data Grid 7 作为 RHEL 7 服务(红帽知识库)。

集群传输的端口偏移获取效率

当您为 Data Grid Server 指定端口偏移时,该端口偏移现在应用到 jgroups.bind.portjgroups.mcast.port

2.1.2. Data Grid Operator

此发行版本包括对 Data Grid Operator 的几个改进。

为 Data Grid 节点配置 Anti-Affinity

反关联性设置可防止工作负载出现单点故障。

Data Grid Operator 在 Infinispan CR 中提供 spec.affinity 字段,用于配置反关联性功能。

禁用加密

现在,您可以为客户端连接禁用加密。

security:
  endpointEncryption:
          type: None
安装到多个命名空间中

在这个版本中,您可以将 Data Grid Operator 安装到特定命名空间或多个命名空间中。

2.1.3. Data Grid CLI 配置

使用命令别名和自定义启动属性配置命令行界面(CLI)。您还可以定义 CLI 存储配置的文件系统的位置。

2.1.4. 改进了 Non-Blocking Thread Pool Usage

在以前的版本中,Data Grid 使用 Java ThreadPoolExecutor 类来管理阻塞线程池。在本发行版本中,Data Grid 将 ThreadPoolExecutor 替换为一个 EnhancedQueueExecutor 类,该类仅在没有空闲线程时分配新的线程。此更改通过确保仅在需要时分配线程,从而提高了非阻塞线程池使用情况的效率。

2.1.5. ProtoStream API Upgraded

Data Grid 8.1.1 升级 ProtoStream API 4.3.4。

重要

在以前的版本中,ProtoStream API 没有正确地嵌套消息类型,从而导致消息只生成顶层。因此,如果您在持久缓存存储中有 Protobuf 消息,并升级到 Data Grid 8.1.1,您应该修改 Java 类,以便 Protobuf 注解位于顶级。这样可确保您的持久消息嵌套与 Java 类中的嵌套匹配,否则可能会出现数据不兼容的问题。

2.1.6. 为文档添加和修订

Data Grid 文档已更新,使其包含以下内容:

2.2. Data Grid 8.1.0 中的新功能

Data Grid 8.1.0 提高了可用性、提高性能并提高安全性。了解 8.1.0 中的新功能。

2.2.1. 跨站点复制

Red Hat OpenShift 的全面支持

Data Grid Operator 现在完全支持数据网格跨站点复制。在 OpenShift 上创建全局 Data Grid 集群,该集群在数据中心中备份。

请参阅在 OpenShift 中配置跨站点复制

异步备份的冲突解析

在使用跨站点复制功能时,Data Grid 8.1 显著提高异步备份。此发行版本引入了冲突的条目和解析机制的检测,以便在多个活跃站点间复制多个活跃站点时保证数据一致性。

了解 Data Grid 如何检测并解决文档中的冲突信息。

请参阅 Concurrent Writes 和 Conflicting Entries

多个站点 Master

Data Grid 使用 JGroups RELAY2 协议来促进跨站点复制的集群间通信。每个集群都有一个站点 master,用于处理站点之间的流量。

注意

Data Grid Operator 控制在 OpenShift 上使用跨站点复制时,哪些节点成为站点 master。您不能使用 Data Grid Operator 修改 RELAY2 配置。

从 8.1 开始,您可以在 RELAY2 配置中设置多个站点 master,以平衡集群间通信。使用 max_site_masters 属性,如下例所示:

<relay.RELAY2 site="NYC" 1
              max_site_masters="100"/> 2
1
定义本地站点的名称。
2
指定站点 master 的数量。默认值为 1。您可以将值增加到大于 1 的任何数字。如果您设置了等于或大于 Data Grid 集群中的节点数量的值,则所有节点都充当站点 master。

请参阅 设置跨站点复制

2.2.2. Data Grid Server

Data Grid Server 8.1 提供了增强的安全性和新的配置选项。

自动身份验证

Data Grid Server 使用了一个默认属性域,它会自动在远程端点上强制实施用户身份验证。

请参阅 添加数据网格凭证,以创建用于访问 Data Grid 控制台、命令行界面(CLI)、REST API 或 Hot Rod 端点的用户名和密码。

请参阅安全访问数据网格服务器 以了解配置不同的身份验证机制。

注意

如果安装了 Data Grid Server 8.0,升级到 8.1 并使用具有默认安全性的配置模式。

JDBC 缓存存储的共享数据源

Data Grid Server 可让您在使用 JDBC 缓存存储将缓存条目持久到数据库时创建共享数据源。

请参阅配置数据网格服务器数据源

缓存授权的全局角色

如果您使用基于角色的访问控制配置缓存授权,则应用全局配置中声明的角色,除非在缓存中明确声明角色。

<infinispan>
   <cache-container name="default">
      <security>
         <authorization> 1
            <identity-role-mapper/>
            <role name="AdminRole" permissions="ALL"/>
            <role name="ReaderRole" permissions="READ"/>
            <role name="WriterRole" permissions="WRITE"/>
            <role name="SupervisorRole" permissions="READ WRITE EXEC BULK_READ"/>
         </authorization>
      </security>
      <distributed-cache name="secured">
         <security>
            <authorization/> 2
         </security>
      </distributed-cache>
   </cache-container>
   ...
</infinispan>
1
定义映射到权限的用户角色。
2
隐式使用全局配置中的所有授权角色。

请参阅配置数据网格授权

2.2.3. Data Grid 命令行界面(CLI)

Data Grid 8.1 CLI 为服务器配置、用户管理和故障排除提供了额外的功能。

用户管理

从 8.1 开始,CLI 提供了一个 user 命令,它取代了 Data Grid Server 发行版中包含的 user-tool 脚本。

user 命令允许您管理基于属性的安全域的用户凭证和组。例如,以下命令添加了具有 "admin" 权限的凭证:

[disconnected]> user create myusername --password=qwer1234! --groups=admin

请参阅 Adding Data Grid Credentials

日志记录配置

现在,您可以在运行时修改服务器日志配置。例如,要为 org.infinispan 类别启用 DEBUG 日志消息:

[hostname@cluster//containers/default]> logging set --level=DEBUG org.infinispan

请参阅在运行时更改数据网格服务器日志配置

诊断报告

Data Grid Server 提供了一个聚合日志,其中包含可用于监控和排除部署的信息,如线程转储、内存配置和打开套接字等。

使用带有 CLI 的 report 命令,如下例所示:

[hostname@cluster//containers/default]> server report
Downloaded report 'infinispan-hostname-timestamp-report.tar.gz'

请参阅 获取数据网格服务器的诊断报告

注意

Data Grid Server 的诊断报告目前仅适用于 Linux/ Unix 系统。

2.2.4. Data Grid 控制台

Data Grid 8.1 控制台提供额外的功能,例如:

  • 创建和删除缓存条目。
  • 跨站点复制管理。
  • 架构管理.
  • 使用 Ickle 查询搜索数据容器。
  • 与 Red Hat SSO 集成,以便访问数据网格控制台通过 realm 登录页面获取凭证。

有关访问数据网格控制台并创建缓存的详情,请参考使用 Data Grid 控制台创建缓存

2.2.5. REST API

POST 方法现在支持使用 ?action URL 参数调用 Data Grid REST API。如果响应包含内容或状态 204,则调用返回状态 200

计划删除对使用 GET 方法的 ?action URL 参数的支持。

2.2.6. 热 Rod Java 客户端

通过 URI 配置

热 Rod Java 客户端配置现在支持以下格式的 URI:

hotrod[s]://[user[:password]@]host[:port][,host2[:port]][?property=value[&property2=value2]]

这为配置 Hot Rod Java 客户端连接提供了更紧凑的方式。请参阅 Hot Rod Client 配置

使用自动缓存创建的每个缓存配置

当 Hot Rod Java 客户端尝试访问不存在的缓存时,它们会返回 getCache ("<cache_name>")调用的 null。您可以更改此默认行为,以便客户端使用 XML 格式的缓存配置模板或 Data Grid 缓存定义在首次访问时自动创建缓存。

请参阅 在首次 访问时创建缓存

2.2.7. Data Grid Queries

数据网格索引和查询功能具有降低配置开销的改变,并在搜索数据存储时提供更好的性能。

主要变更包括:

  • Data Grid Lucene Directory 已弃用。
  • 弃用 org.infinispan.query.SearchManager 接口。

Data Grid 不再支持 Apache Lucene 和 Hibernate Search 的原生对象。使用 org.infinispan.query.Search 类作为基于字符串搜索的入口点,并带有 Ickle 查询语言。

重要

您应该计划迁移已弃用的搜索功能的任何用法,包括基于 Lucene 的查询,并开始使用 org.infinispan.query.Search 类作为使用 Ickle 查询语言执行搜索的入口点。

请参见以下信息:

2.2.8. 简化的配置

Data Grid 8.1 弃用了几个配置属性,以简化用户选项并改进声明性和程序化设置之间的一致性。

内存 配置是 Data Grid 8.1 中最显著的变化。它可让您将数据容器配置为:

  • 将条目存储在 JVM 堆或非堆内存中。
  • 控制数据容器的大小。您可以设置缓存可以保存的最大条目数,或者设置缓存可以使用的最大内存量。

与之前的版本一样,内存 配置也可以配置 Data Grid 以二进制格式存储条目。但是,从 8.1 开始,二进制存储配置已弃用。相反,您应该为缓存定义编码。如果要使用二进制存储,请在缓存定义中为任何二进制格式指定 MediaType。

2.2.9. Non-Blocking I/0

Data Grid 将线程池整合为两个:

  • 非阻塞线程池
  • 阻塞线程池

从这个版本开始,几乎所有的 Data Grid 内部组件都使用非阻塞线程池,这可以提高吞吐量,缩短延迟,并改进了大型 I/O 工作负载的整体响应。

任何阻塞 I/O 路径,现在使用阻塞线程池以避免包含非阻塞调用。

NonBlockingStore SPI

Data Grid 8.1 引入了用于实施持久性缓存存储的 NonBlockingStore 接口。名称意味着 NonBlockingStore SPI 公开必须阻止调用线程的方法。

为了处理阻塞操作,Data Grid 提供了一个 BlockingManager 工具类。

请参见以下信息:

2.2.10. Red Hat JBoss EAP 模块

Red Hat JBoss EAP 的 Data Grid Modules for Red Hat JBoss EAP 提供了一个临时解决方案,直到 Red Hat JBoss EAP 能够直接管理 infinispan 子系统。

请参阅 Red Hat JBoss EAP 的 Data Grid 模块

2.3. Data Grid 8.1 中支持的 Java 版本

根据您安装 Data Grid 的方式,红帽支持不同的 Java 版本。

嵌入式缓存

在自定义应用程序中对嵌入式缓存使用 Data Grid 时,红帽支持 Java 8 和 Java 11。

远程缓存

红帽支持仅对 Data Grid Server 安装支持 Java 11。对于 Hot Rod Java 客户端,红帽支持 Java 8 和 Java 11。

Java 8 弃用

下一版本 Data Grid 8.2 中已弃用对 Java 8 的支持,目前计划在 Data Grid 8.4 中删除。

在自定义应用程序中具有内嵌缓存的用户应该计划在支持可用时升级到 Java 11 或 Java 17。

在需要 Java 8 的应用程序中运行的热 Rod Java 客户端可以继续使用旧版本的客户端库。红帽支持将较旧的 Hot Rod Java 客户端版本与最新的数据网格服务器版本相结合。

第 3 章 已知的和修复的问题

了解 Data Grid 中已知的问题,并找出哪些问题已被解决。

3.1. Data Grid 的已知问题

使用事务缓存执行滚动升级时 IllegalArgumentException

问题: JDG-4315

描述 : 无法使用事务缓存执行滚动升级。升级失败,以下例外写入日志:

Caused by: java.lang.IllegalArgumentException: Cannot create a transactional context without a valid Transaction instance.
    at org.infinispan.context.impl.TransactionalInvocationContextFactory.createInvocationContext(TransactionalInvocationContextFactory.java:63)
[...]
    at org.infinispan.cache.impl.DecoratedCache.putIfAbsent(DecoratedCache.java:688)
    at org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.putIfAbsent(AbstractDelegatingAdvancedCache.java:328)
    at org.infinispan.cache.impl.EncoderCache.putIfAbsent(EncoderCache.java:450)
    at org.infinispan.persistence.remote.upgrade.MigrationTask.lambda$migrateEntriesWithMetadata$0(MigrationTask.java:128)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1771)

临时解决方案: 这个问题还没有临时解决方案。

OpenShift 上的 Data Grid CLI 发生 IOException

问题: JDG-4292

描述: 从 OpenShift 上运行的 Data Grid pod 运行命令行界面(CLI)会导致 java.io.IOException: Permission denied 消息。

例如,如果您使用 oc rsh <pod-name > 连接到 pod,然后在退出 CLI 时从 /opt/infinispan/bin 目录中调用 CLI,则抛出异常。

此例外与 Aesh 组件相关,可以安全地忽略。

临时解决方案: 下载 Data Grid Server 并在本地主机系统上使用 CLI。

$ bin/cli.sh -c https://$SERVICE_HOSTNAME:11222/ --trustall
OpenShift 上的数据网格在 OOM 异常后持续重启

问题: JDG-3991

描述 : 如果内存不足异常会导致 Data Grid Server 在 OpenShift 上终止,则节点无法重启。以下异常写入 pod 日志文件:

FATAL (main) [org.infinispan.SERVER] ISPN080028: Red Hat Data Grid Server failed to start java.util.concurrent.ExecutionException: org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.commons.CacheException: Initial state transfer timed out for cache org.infinispan.LOCKS on <pod-name-id>

临时解决方案: 这个问题还没有临时解决方案。

无法从 HotRod Store 或 NodeJS 客户端与 Data Grid 服务器进行身份验证

问题: JDG-3868

描述 : 如果您使用红帽 JBoss EAP 上的 HotRod 存储,请将会话数据外部化到 Data Grid,或者使用 Hot Rod NodeJS 客户端,则无法连接到需要客户端身份验证的 Data Grid 服务器,这是默认配置。

临时解决方案:remote-store 实现与服务器身份验证结合使用。若要在红帽 JBoss EAP 上使用 HotRod 存储,或者使用 Hot Rod NodeJS 客户端,您必须禁用数据网格服务器身份验证。

索引缓存包含非索引的 Protobuf 实体时的查询行为不一致

问题: JDG-3972

描述 : 如果缓存被索引但包含没有索引的 Protobuf 实体,则该缓存上的搜索操作会返回不一致的结果。

临时解决方案: 这个问题还没有临时解决方案。

数据网格解析性能

问题: JDG-3636

描述 : 在一些测试案例中,Data Grid 分区处理功能所需的时间比预期要长于执行冲突解析。

临时解决方案: 这个问题还没有临时解决方案。

Data Grid Does Not Passivate JWS Sessionsectly

问题: JDG-2796

描述 : 当从 JBoss Web 服务器(JWS)外部会话时,如果使用 FINE 持久性策略,会话无法正确传递。

临时解决方案: 这个问题还没有临时解决方案。

3.2. 在 Data Grid 8.1.1 中修复

Data Grid 8.1.1 包括以下修复:

  • JDG-4274 Rolling 升级操作不适用于存储 POJOs "application/x-java-objects" 的缓存。
  • 配置分区处理时,会迭代嵌入式缓存时,JDG-4262 Exceptions。
  • JDG-4270 收集会降低性能的统计信息时,指标端点调用大小。
  • 如果条目同时被同时替换,则 JDG-4212 Possible deadlocks 发生。
  • JDG-4202 控制台在 配置缓存授权时显示一个空白页面。
  • JDG-3367 Hot Rod C++ 客户端不能安装在 Red Hat Enterprise Linux 8 上
  • JDG-4043 Potential 竞争条件存在于 EncoderCache 中。
  • 当服务器未运行时,JDG-4062 Hot Rod C++ 客户端的行为会意外行为。
  • 从 8.0 升级时,JDG-4116 Data Grid Operator 升级过程会失败。
  • JDG-4162 Implicit 身份验证配置会覆盖自定义身份验证配置。
  • JDG-4177 服务器垃圾回收日志记录配置在 Java 11 中无效。
  • JDG-4200 REST 端点提供不完整的块的静态资源。
  • 如果备份位置不可用,则 JDG-3989 性能降级发生。
  • JDG-4016 Data Grid Operator 覆盖创建时间戳。
  • 当访问状态传输操作期间的数据时,会发生 JDG-3956 Null pointer 异常。
  • 当写入使用离线备份的缓存时,JDG-3971 Excessive 消息写入日志文件。
  • JDG-3494 Cannot Access Caches if Names Contain the "/" Character.
  • JDG-3504 Remote Cache Stores Cannot Use Preload with EAP Session Externalization.

3.3. 在 Data Grid 8.1.0 中修复

Data Grid 8.1.0 包括以下修复:

  • JDG-3826 全局持久位置无法检索服务器数据路径属性。
  • JDG-3591 Data Grid Operator 默认不加密端点。
  • JDG-3624 Data Grid 服务器允许未经身份验证的用户的 REST 和 Hot Rod 操作
  • 当 numOwners 为 1 时,由 PartitionStrategy 导致的 JDG-3799 缓存配置异常必须是 ALLOW_READ_WRITES。
  • 在使用 SyncConsistentHashFactory 进行重新平衡后,JDG-3738 Uneven segment 发行版本可能会发生。
  • JDG-3675 日志通过 stdout 包括共同代码。
  • 如果没有提供配置,JDG-3586 控制台会创建一个本地缓存。

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.