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 Server 入门 复制链接链接已复制到粘贴板!
快速设置数据网格服务器并了解基础知识。
1.1. 数据网格服务器要求 复制链接链接已复制到粘贴板!
Data Grid Server 需要 Java 虚拟机。有关支持版本的详情,请参阅 Data Grid 支持的配置。
1.2. 下载服务器发布 复制链接链接已复制到粘贴板!
Data Grid 服务器分发是 Java 库(JAR 文件)、配置文件 和数据 目录的存档。
流程
- 访问红帽客户门户。
- 从 软件下载部分 下载 Red Hat Data Grid 8.2 Server。
使用服务器下载存档作为参数运行
md5sum或sha256sum命令,例如:sha256sum jboss-datagrid-${version}-server.zip$ sha256sum jboss-datagrid-${version}-server.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
与 Data Grid Software Details 页面中的
MD5或SHA-256校验和值进行比较。
参考
- Data Grid Server README 描述了服务器分发的内容。
1.3. 安装 Data Grid Server 复制链接链接已复制到粘贴板!
在主机系统上安装 Data Grid Server 分发。
前提条件
下载数据网格服务器分发存档。
流程
- 使用任何合适的工具将 Data Grid Server 存档提取到主机文件系统中。
unzip redhat-datagrid-8.2.3-server.zip
$ unzip redhat-datagrid-8.2.3-server.zip
生成的目录是 $RHDG_HOME。
1.4. 启动 Data Grid Servers 复制链接链接已复制到粘贴板!
在任何受支持主机上的 Java 虚拟机(JVM)中运行 Data Grid Server 实例。
前提条件
- 下载并安装服务器分发。
流程
-
在
$RHDG_HOME中打开一个终端。 使用
服务器脚本启动 Data Grid 服务器实例。- Linux
bin/server.sh
$ bin/server.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Microsoft Windows
bin\server.bat
bin\server.batCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当数据网格服务器记录以下信息时,它成功运行:
ISPN080004: Protocol SINGLE_PORT listening on 127.0.0.1:11222 ISPN080034: Server '...' listening on http://127.0.0.1:11222 ISPN080001: Data Grid Server <version> started in <mm>ms
ISPN080004: Protocol SINGLE_PORT listening on 127.0.0.1:11222
ISPN080034: Server '...' listening on http://127.0.0.1:11222
ISPN080001: Data Grid Server <version> started in <mm>ms
验证
-
在任何浏览器中打开
127.0.0.1:11222/console/。 - 在提示符处输入您的凭证,并继续 Data Grid 控制台。
1.5. 创建和修改用户 复制链接链接已复制到粘贴板!
添加 Data Grid 用户凭证并分配权限以控制对数据的访问。
Data Grid 服务器安装使用属性域来验证 Hot Rod 和 REST 端点的用户。这意味着,您需要在访问 Data Grid 前至少创建一个用户。
默认情况下,用户还需要具有访问缓存的权限并与 Data Grid 资源交互的角色。您可以单独为用户分配角色,或将用户添加到具有角色权限的组中。
您可以在 Data Grid 命令行界面(CLI)中使用 user 命令创建用户并分配角色。
从 CLI 会话运行 help user 以获取完整的命令详情。
1.5.1. 添加凭证 复制链接链接已复制到粘贴板!
您需要一个 admin 用户用于 Data Grid 控制台,并对数据网格环境进行完全控制。因此,您应该在第一次添加凭证时创建带有 admin 权限的用户。
流程
-
在
$RHDG_HOME中打开一个终端。 在 CLI 中,使用
user create命令创建admin用户。bin/cli.sh user create myuser -p changeme -g admin
$ bin/cli.sh user create myuser -p changeme -g adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,用户名 "admin" 会自动获得
admin权限。bin/cli.sh user create admin -p changeme
$ bin/cli.sh user create admin -p changemeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用任何文本编辑器打开
user.properties和groups.properties,以验证用户和组。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.2. 为用户分配角色 复制链接链接已复制到粘贴板!
为用户分配角色,以便他们具有访问数据和修改数据和修改数据的正确权限。
流程
使用
admin用户启动 CLI 会话。bin/cli.sh
$ bin/cli.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
deployer角色分配给 "katie"。[//containers/default]> user roles grant --roles=deployer katie
[//containers/default]> user roles grant --roles=deployer katieCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出 "katie" 的角色。
[//containers/default]> user roles ls katie ["deployer"]
[//containers/default]> user roles ls katie ["deployer"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.3. 在组中添加用户 复制链接链接已复制到粘贴板!
组可让您更改多个用户的权限。您可以为组分配角色,然后将用户添加到该组。用户从组角色继承权限。
流程
-
使用
admin用户启动 CLI 会话。 使用
user create命令创建组。-
使用
--groups参数指定"developers"作为组名称。 为组设置用户名和密码。
在属性域中,组是特殊类型的用户,它还需要用户名和密码。
[//containers/default]> user create --groups=developers developers -p changeme
[//containers/default]> user create --groups=developers developers -p changemeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
使用
列出组。
[//containers/default]> user ls --groups ["developers"]
[//containers/default]> user ls --groups ["developers"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
application角色分配给"developers"组。[//containers/default]> user roles grant --roles=application developers
[//containers/default]> user roles grant --roles=application developersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出"developers"组的角色。
[//containers/default]> user roles ls developers ["application"]
[//containers/default]> user roles ls developers ["application"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据需要向组添加现有用户。
[//containers/default]> user groups john --groups=developers
[//containers/default]> user groups john --groups=developersCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.4. 用户角色和权限 复制链接链接已复制到粘贴板!
Data Grid 包括一组默认的角色,为用户授予访问数据的权限并与 Data Grid 资源交互。
ClusterRoleMapper 是 Data Grid 用来将安全主体与授权角色关联的默认机制。
ClusterRoleMapper 将主体名称与角色名称匹配。名为 admin 的用户会自动获得 admin 权限,名为 deployer 的用户会收到 部署器 权限,以此类推。
| 角色 | 权限 | 描述 |
|---|---|---|
|
| ALL | 具有所有权限的超级用户,包括控制缓存管理器生命周期。 |
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR、CREATE |
除了 |
|
| ALL_READ, ALL_WRITE, LISTEN, EXEC, MONITOR |
除 |
|
| ALL_READ, MONITOR |
除了监控权限外,还具有对 Data Grid |
|
| MONITOR |
可以通过 JMX 和 |
1.6. 验证集群视图 复制链接链接已复制到粘贴板!
同一网络上的 Data Grid 节点会自动发现相互发现并形成集群。
完成此流程,在使用本地运行的 Data Grid Server 实例的默认 TCP 堆栈中使用 MPING 协议观察集群发现。如果要针对自定义网络要求调整集群传输,请参阅设置 Data Grid 集群的文档。
此流程旨在演示集群发现的原则,它不适用于生产环境。在命令行中指定端口偏移等操作不是为生产环境配置集群传输的可靠方法。
前提条件
有一个 Data Grid Server 实例正在运行。
流程
-
在
$RHDG_HOME中打开一个终端。 将根目录复制到
server2。cp -r server server2
$ cp -r server server2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定端口偏移和
server2目录。bin/server.sh -o 100 -s server2
$ bin/server.sh -o 100 -s server2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
您可以在控制台的 127.0.0.1:11222/console/cluster-membership 中查看集群成员资格。
Data Grid 还会在节点加入集群时记录以下信息:
1.7. 关闭 Data Grid 服务器 复制链接链接已复制到粘贴板!
停止单独运行的服务器,或者安全地关闭集群。
流程
- 创建与 Data Grid 的 CLI 连接。
使用以下方法之一关闭 Data Grid 服务器:
使用
shutdown cluster命令停止集群中的所有节点,例如:[//containers/default]> shutdown cluster
[//containers/default]> shutdown clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将集群状态保存到集群中每个节点的
data文件夹。如果使用缓存存储,shutdown cluster命令也会保留缓存中的所有数据。使用
shutdown server命令和服务器主机名停止单个服务器实例,例如:[//containers/default]> shutdown server <my_server01>
[//containers/default]> shutdown server <my_server01>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
shutdown server 命令不会等待重新平衡操作完成,如果同时指定了多个主机名,这可能会导致数据丢失。
有关使用 命令的更多详细信息,运行 help shutdown。
验证
在关闭服务器时,Data Grid 会记录以下信息:
ISPN080002: Data Grid Server stopping ISPN000080: Disconnecting JGroups channel cluster ISPN000390: Persisted state, version=<$version> timestamp=YYYY-MM-DDTHH:MM:SS ISPN080003: Data Grid Server stopped
ISPN080002: Data Grid Server stopping
ISPN000080: Disconnecting JGroups channel cluster
ISPN000390: Persisted state, version=<$version> timestamp=YYYY-MM-DDTHH:MM:SS
ISPN080003: Data Grid Server stopped
1.7.1. 重启 Data Grid 集群 复制链接链接已复制到粘贴板!
当您将 Data Grid 集群在关闭后重新上线时,您应该在添加或删除节点或修改集群状态前等待集群可用。
如果您使用 shutdown server 命令关闭集群节点,则必须以相反的顺序重启每台服务器。
例如,如果您关闭 server1,然后关闭 server2,您应该首先启动 server2,然后启动 server1。
如果您使用 shutdown cluster 命令关闭集群,集群只有在所有节点重新加入后才能完全正常工作。
您可以以任何顺序重启节点,但集群处于 DEGRADED 状态,直到关闭前加入的所有节点都处于运行状态。
1.8. Data Grid Server Filesystem 复制链接链接已复制到粘贴板!
Data Grid Server 在主机文件系统上使用 $RHDG_HOME 的以下文件夹:
有关 $RHDG_HOME 目录中每个文件夹的描述,以及可以用来自定义文件系统的系统属性,请参阅 Data Grid Server README。
1.8.1. 服务器根目录 复制链接链接已复制到粘贴板!
除了 bin 和 docs 文件夹中的资源外,您应该与之交互的 $RHDG_HOME 下的唯一文件夹是服务器根目录,默认情况下名为 server。
您可以在同一 $RHDG_HOME 目录或不同的目录中创建多个节点,但每个 Data Grid Server 实例必须具有自己的服务器根目录。例如,5 个节点的集群可以在文件系统中有以下服务器根目录:
├── server ├── server1 ├── server2 ├── server3 └── server4
├── server
├── server1
├── server2
├── server3
└── server4
每个服务器根目录都应该包含以下文件夹:
├── server │ ├── conf │ ├── data │ ├── lib │ └── log
├── server
│ ├── conf
│ ├── data
│ ├── lib
│ └── log
server/conf
包含 Data Grid Server 实例的 infinispan.xml 配置文件。
Data Grid 将配置分成两个层:
- dynamic
-
为数据可扩展性创建可变缓存配置。
Data Grid 服务器会永久保存您在运行时创建的缓存,以及跨节点分布的集群状态。每个加入节点都会收到一个完整的集群状态,在发生更改时 Data Grid Server 同步所有节点。 - Static
-
将配置添加到
infinispan.xml中用于底层服务器机制,如集群传输、安全性和共享数据源。
server/data
提供 Data Grid 服务器用来维护集群状态的内部存储。
切勿直接删除或修改 server/data 中的内容。
在服务器运行时 修改 cache.xml 等文件可能会导致损坏。删除内容可能会导致状态不正确,这意味着集群在关闭后无法重启。
server/lib
包含用于自定义过滤器、自定义事件监听程序、JDBC 驱动程序、自定义 ServerTask 实现等的扩展 JAR 文件。
server/log
包含 Data Grid Server 日志文件。
第 2 章 网络接口和端点 复制链接链接已复制到粘贴板!
通过将 Data Grid Server 绑定到 IP 地址,通过网络接口公开数据网格服务器。然后,您可以将端点配置为使用接口,以便 Data Grid 服务器可以处理来自远程客户端应用程序的请求。
默认情况下,Data Grid 服务器公开了一个自动检测到入站请求的协议的端口。
2.1. 网络接口 复制链接链接已复制到粘贴板!
Data Grid Server 多路端点到单个 TCP/IP 端口,并自动检测入站客户端请求的协议。您可以配置 Data Grid 服务器如何绑定到网络接口来侦听客户端请求。
互联网协议(IP)地址
回送地址
非循环地址
任何地址
Link local
站点本地
匹配和回退策略
Data Grid Server 可以枚举主机系统上的所有网络接口,并绑定到与值匹配的接口、主机或 IP 地址,该地址可以包括正则表达式来获得额外的灵活性。
匹配主机
匹配接口
匹配地址
Fallback
2.2. 套接字绑定 复制链接链接已复制到粘贴板!
套接字绑定将端点连接器映射到服务器接口和端口。
默认情况下,Data Grid 服务器提供以下套接字绑定:
<socket-bindings default-interface="public" port-offset="${infinispan.socket.binding.port-offset:0}">
<socket-binding name="default" port="${infinispan.bind.port:11222}"/>
<socket-binding name="memcached" port="11221"/>
</socket-bindings>
<socket-bindings default-interface="public" port-offset="${infinispan.socket.binding.port-offset:0}">
<socket-binding name="default" port="${infinispan.bind.port:11222}"/>
<socket-binding name="memcached" port="11221"/>
</socket-bindings>
-
socket-bindings声明默认的接口和端口偏移。 -
默认绑定到 hotrod 和 rest 连接器到默认端口11222。 Memcached将 memcached 连接器绑定到端口11221。注意默认情况下禁用 memcached 端点。
要覆盖 socket-binding 声明的默认接口,请指定 interface 属性。
例如,您可以添加名为 "private" 的接口 声明:
然后,您可以在 socket-binding 声明中指定 interface="private" 来绑定到私有 IP 地址,如下所示:
<socket-bindings default-interface="public" port-offset="${infinispan.socket.binding.port-offset:0}">
...
<socket-binding name="private_binding" interface="private" port="1234"/>
</socket-bindings>
<socket-bindings default-interface="public" port-offset="${infinispan.socket.binding.port-offset:0}">
...
<socket-binding name="private_binding" interface="private" port="1234"/>
</socket-bindings>
2.3. 更改 Data Grid 服务器的默认绑定地址 复制链接链接已复制到粘贴板!
您可以使用 server -b 开关或 infinispan.bind.address 系统属性绑定到不同的地址。
例如,将 公共接口 绑定到 127.0.0.2,如下所示:
- Linux
bin/server.sh -b 127.0.0.2
$ bin/server.sh -b 127.0.0.2
- Windows
bin\server.bat -b 127.0.0.2
bin\server.bat -b 127.0.0.2
2.4. 指定端口偏移 复制链接链接已复制到粘贴板!
在同一主机上运行多个实例时,使用 Data Grid 服务器配置端口偏移。默认端口偏移为 0。
使用带有 Data Grid CLI 或 infinispan.socket.binding.port-offset 系统属性的 -o 开关来设置端口偏移。
例如,启动偏移为 100 的服务器实例,如下所示:使用默认配置时,这会导致 Data Grid 服务器侦听端口 11322。
- Linux
bin/server.sh -o 100
$ bin/server.sh -o 100
- Windows
bin\server.bat -o 100
bin\server.bat -o 100
2.5. Data Grid Endpoints 复制链接链接已复制到粘贴板!
Data Grid 端点通过不同的连接器协议公开 CacheManager 接口,以便您可以远程访问数据并执行操作来管理和维护 Data Grid 集群。
您可以在不同的套接字绑定中定义多个端点连接器。
2.5.1. 热 Rod 复制链接链接已复制到粘贴板!
热 Rod 是一种二进制 TCP 客户端-服务器协议,与基于文本的协议相比,提供更快的数据访问和提高性能。
Data Grid 以 Java、C++、C++、Node.js 和其他编程语言提供 Hot Rod 客户端库。
拓扑状态传输
Data Grid 使用拓扑缓存为客户端提供集群视图。拓扑缓存包含将内部 JGroups 传输地址映射到公开的 Hot Rod 端点的条目。
当客户端发送请求时,Data Grid 服务器会将请求标头中的拓扑 ID 与缓存中的拓扑 ID 进行比较。如果客户端有旧的拓扑 ID,则数据网格服务器会发送新的拓扑视图。
集群拓扑视图允许 Hot Rod 客户端在节点加入和离开时立即检测,从而启用动态负载平衡和故障转移。
在分布式缓存模式中,一致的哈希算法也使得 Hot Rod 客户端请求直接路由到主要所有者。
2.5.2. REST 复制链接链接已复制到粘贴板!
参考
Data Grid 公开了一个 RESTful 接口,它允许 HTTP 客户端访问数据、监控和维护集群,以及执行管理操作。
您可以使用标准 HTTP 负载均衡器为客户端提供负载均衡和故障转移功能。但是,HTTP 负载均衡器会维护静态集群视图,并在集群拓扑更改时需要手动更新。
2.5.3. 协议比较 复制链接链接已复制到粘贴板!
| 热 Rod | HTTP / REST | |
|---|---|---|
| Topology-aware | Y | N |
| hash-aware | Y | N |
| 加密 | Y | Y |
| 身份验证 | Y | Y |
| 条件操作 | Y | Y |
| bulk ops | Y | N |
| Transactions | Y | N |
| 监听器 | Y | N |
| 查询 | Y | Y |
| 执行 | Y | N |
| 跨站点故障切换 | Y | N |
2.6. 端点连接器 复制链接链接已复制到粘贴板!
您可以使用连接器声明配置数据网格服务器端点,用于指定套接字绑定、身份验证机制和加密配置。
默认端点连接器配置如下:
<endpoints socket-binding="default" security-realm="default"/>
<endpoints socket-binding="default" security-realm="default"/>
-
端点包含端点连接器声明,并为端点定义全局配置,如默认套接字绑定、安全域,以及客户端是否需要提供有效的 TLS 证书。 -
<HotRod-connector/> 声明 Hot Rod 连接器。 -
<REST-connector/> 声明 REST 连接器。 -
<memcached-connector socket-binding="memcached"/> 声明使用 memcached 套接字绑定的 Memcached 连接器。
声明空 < ;endpoints/> 元素会隐式启用 Hot Rod 和 REST 连接器。
可以有多个 端点 绑定到不同的套接字。它们可以使用不同的安全域,并提供不同的身份验证和加密配置。以下配置在不同的套接字绑定中启用两个端点,每个端点都有一个专用安全域。此外,公共端点 将禁用管理功能,如控制台和 CLI。
参考
urn:infinispan:server 模式提供所有可用的端点配置。
2.6.1. 热 Rod Connectors 复制链接链接已复制到粘贴板!
热 Rod 连接器声明启用 Hot Rod 服务器。
-
name="hotrod"逻辑上命名 Hot Rod 连接器。默认情况下,名称派生自套接字绑定名称,如 hotrod-default。 -
topology-state-transfer调整为 Hot Rod 客户端提供集群拓扑的状态传输操作。 -
身份验证配置SASL 身份验证机制。 -
加密配置客户端连接的 TLS 设置。
参考
urn:infinispan:server 模式提供所有可用的 Hot Rod 连接器配置。
2.6.2. REST Connectors 复制链接链接已复制到粘贴板!
REST 连接器声明启用 REST 服务器。
-
name="rest"逻辑上命名 REST 连接器。默认情况下,名称派生自套接字绑定名称,如 rest-default。 -
身份验证配置身份验证机制。 -
CORS
-rules为跨域请求指定 CORS (Cross Origin 资源共享)规则。 -
加密配置客户端连接的 TLS 设置。
参考
urn:infinispan:server 模式提供所有可用的 REST 连接器配置。
2.7. 数据网格服务器端口和协议 复制链接链接已复制到粘贴板!
Data Grid Server 在您的网络上公开端点以进行远程客户端访问。
| 端口 | 协议 | 描述 |
|---|---|---|
|
| TCP | hot Rod 和 REST 端点 |
|
| TCP | Memcached 端点,默认为禁用。 |
2.8. 单个端口 复制链接链接已复制到粘贴板!
Data Grid 服务器通过单个 TCP 端口公开多个协议,默认为 11222。使用单一端口处理多个协议简化了配置,并在部署数据网格集群时降低管理复杂性。使用单个端口还可以通过最大程度减少网络上的攻击面来提高安全性。
数据网格服务器通过单一端口处理 HTTP/1.1、HTTP/2 和 Hot Rod 协议请求,以不同的方式处理来自客户端的 HTTP/1.1、HTTP/2 和 Hot Rod 协议请求。
HTTP/1.1 升级标头
客户端请求可以包含 HTTP/1.1 升级标头字段,以启动与 Data Grid 服务器的 HTTP/1.1 连接。然后,客户端应用程序可以发送 Upgrade: protocol 标头字段,其中 protocol 是服务器端点。
Application-Layer Protocol Negotiation (ALPN)/Transport Layer Security (TLS)
客户端请求包括 Data Grid Server 端点的 Server Name Indication (SNI)映射,以通过 TLS 连接协商协议。
应用程序必须使用支持 ALPN 扩展的 TLS 库。Data Grid 为 Java 使用 WildFly OpenSSL 绑定。
自动 Hot Rod 检测
包含 Hot Rod 标头的客户端请求会自动路由到 Hot Rod 端点。
2.8.1. 为远程连接配置网络防火墙 复制链接链接已复制到粘贴板!
调整任何防火墙规则,以允许服务器和外部客户端之间的流量。
流程
例如,在 Red Hat Enterprise Linux (RHEL)工作站中,您可以使用 firewalld 允许到端口 11222 的流量,如下所示:
firewall-cmd --add-port=11222/tcp --permanent firewall-cmd --list-ports | grep 11222
# firewall-cmd --add-port=11222/tcp --permanent
success
# firewall-cmd --list-ports | grep 11222
11222/tcp
要配置在网络间应用的防火墙规则,您可以使用 nftables 工具。
第 3 章 Security Realms 复制链接链接已复制到粘贴板!
安全域为 Data Grid Server 端点定义身份、加密、身份验证和授权配置。
3.1. 属性 Realms 复制链接链接已复制到粘贴板!
属性域使用属性文件来定义用户和组。
users.properties 以纯文本格式将用户名映射到密码。如果您使用 DIGEST-MD5 SASL 机制或 Digest HTTP 机制,也可以预先提取密码。
myuser=a_password user2=another_password
myuser=a_password
user2=another_password
groups.properties 将用户映射到角色。
myuser=supervisor,reader,writer user2=supervisor
myuser=supervisor,reader,writer
user2=supervisor
端点身份验证机制
当您将 Data Grid Server 配置为使用属性域时,您可以将端点配置为使用以下身份验证机制:
-
hot Rod (SASL):
PLAIN,DIGEST114, 和SCRAM114 -
REST (HTTP):
Basic和Digest
属性域配置
3.1.1. 创建和修改用户 复制链接链接已复制到粘贴板!
添加 Data Grid 用户凭证并分配权限以控制对数据的访问。
Data Grid 服务器安装使用属性域来验证 Hot Rod 和 REST 端点的用户。这意味着,您需要在访问 Data Grid 前至少创建一个用户。
默认情况下,用户还需要具有访问缓存的权限并与 Data Grid 资源交互的角色。您可以单独为用户分配角色,或将用户添加到具有角色权限的组中。
您可以在 Data Grid 命令行界面(CLI)中使用 user 命令创建用户并分配角色。
从 CLI 会话运行 help user 以获取完整的命令详情。
3.1.1.1. 添加凭证 复制链接链接已复制到粘贴板!
您需要一个 admin 用户用于 Data Grid 控制台,并对数据网格环境进行完全控制。因此,您应该在第一次添加凭证时创建带有 admin 权限的用户。
流程
-
在
$RHDG_HOME中打开一个终端。 在 CLI 中,使用
user create命令创建admin用户。bin/cli.sh user create myuser -p changeme -g admin
$ bin/cli.sh user create myuser -p changeme -g adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,用户名 "admin" 会自动获得
admin权限。bin/cli.sh user create admin -p changeme
$ bin/cli.sh user create admin -p changemeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用任何文本编辑器打开
user.properties和groups.properties,以验证用户和组。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.1.2. 为用户分配角色 复制链接链接已复制到粘贴板!
为用户分配角色,以便他们具有访问数据和修改数据和修改数据的正确权限。
流程
使用
admin用户启动 CLI 会话。bin/cli.sh
$ bin/cli.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
deployer角色分配给 "katie"。[//containers/default]> user roles grant --roles=deployer katie
[//containers/default]> user roles grant --roles=deployer katieCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出 "katie" 的角色。
[//containers/default]> user roles ls katie ["deployer"]
[//containers/default]> user roles ls katie ["deployer"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.1.3. 在组中添加用户 复制链接链接已复制到粘贴板!
组可让您更改多个用户的权限。您可以为组分配角色,然后将用户添加到该组。用户从组角色继承权限。
流程
-
使用
admin用户启动 CLI 会话。 使用
user create命令创建组。-
使用
--groups参数指定"developers"作为组名称。 为组设置用户名和密码。
在属性域中,组是特殊类型的用户,它还需要用户名和密码。
[//containers/default]> user create --groups=developers developers -p changeme
[//containers/default]> user create --groups=developers developers -p changemeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
使用
列出组。
[//containers/default]> user ls --groups ["developers"]
[//containers/default]> user ls --groups ["developers"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
application角色分配给"developers"组。[//containers/default]> user roles grant --roles=application developers
[//containers/default]> user roles grant --roles=application developersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出"developers"组的角色。
[//containers/default]> user roles ls developers ["application"]
[//containers/default]> user roles ls developers ["application"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据需要向组添加现有用户。
[//containers/default]> user groups john --groups=developers
[//containers/default]> user groups john --groups=developersCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. LDAP 域 复制链接链接已复制到粘贴板!
LDAP 域连接到 LDAP 服务器,如 OpenLDAP、红帽目录服务器、Apache 目录服务器或 Microsoft Active Directory,以验证用户并获取成员资格信息。
LDAP 服务器可以有不同的条目布局,具体取决于服务器和部署的类型。本文档超出了本文档的范围,为所有可能配置提供示例。
端点身份验证机制
当您将 Data Grid Server 配置为使用 LDAP 域时,您可以将端点配置为使用以下身份验证机制:
-
hot Rod (SASL):
PLAIN,DIGEST114, 和SCRAM114 -
REST (HTTP):
Basic和Digest
LDAP 域配置
LDAP 连接的主体必须具有执行 LDAP 查询和访问特定属性所需的权限。
作为使用 direct-verification 属性验证用户凭据的替代方法,您可以使用 user-password-mapper 元素指定 LDAP 密码。
rdn-identifier 属性指定一个 LDAP 属性,它根据提供的标识符查找用户条目,通常是用户名;例如 uid 或 sAMAccountName 属性。在配置中添加 search-recursive="true" 以以递归方式搜索目录。默认情况下,搜索用户条目使用 (rdn_identifier={0}) 过滤器。使用 filter-name 属性指定不同的过滤器。
attribute-mapping 元素检索用户所属的所有组。通常可通过两种方式存储成员资格信息:
-
在组条目下,通常在
member属性中具有 classgroupOfNames。在这种情况下,您可以使用属性过滤器,如上例配置中所示。此过滤器搜索与提供的过滤器匹配的条目,该条目将找到与用户的 DN 相等的成员属性的组。然后,过滤器提取组条目的 CN (由 指定),并将其添加到用户的Roles中。 在
memberOf属性的用户条目中。在这种情况下,您应该使用如下属性引用:<attribute-reference reference="memberOf" from="cn" to="Roles" />此引用从用户条目中获取所有
memberOf属性,提取由 指定的 CN,并将它们添加到用户的Roles中。
3.2.1. LDAP Realm Principal Rewriting 复制链接链接已复制到粘贴板!
有些 SASL 身份验证机制,如 GSSAPI、GS2-KRB5 和 Negotiate,提供需要 清理 的用户名,然后才能使用它来搜索 LDAP 服务器。
3.3. 令牌域 复制链接链接已复制到粘贴板!
令牌域使用外部服务来验证令牌,并需要与 RFC-7662 (OAuth2 Token Introspection)兼容的提供程序,如 Red Hat SSO。
端点身份验证机制
当您将 Data Grid Server 配置为使用令牌域时,您必须将端点配置为使用以下身份验证机制:
-
hot Rod (SASL):
OAUTHBEARER -
REST (HTTP):
Bearer
令牌域配置
3.4. 信任存储域 复制链接链接已复制到粘贴板!
信任存储域使用证书或证书链,在数据协商连接时验证数据网格服务器和客户端身份。
- keystores
- 包含向客户端提供 Data Grid 服务器身份的服务器证书。如果您使用服务器证书配置密钥存储,则数据网格服务器使用行业标准 SSL/TLS 协议加密流量。
- 信任存储
- 包含数据网格服务器的客户端证书或证书链。客户端信任存储是可选的,并允许 Data Grid 服务器执行客户端证书身份验证。
客户端证书身份验证
如果您希望 Data Grid Server 验证或验证客户端证书,您必须将 require-ssl-client-auth="true" 属性添加到端点配置中。
端点身份验证机制
如果您只使用密钥存储配置 Data Grid 服务器,您可以将加密与任何身份验证机制结合使用。
当您将 Data Grid Server 配置为使用客户端信任存储时,您必须配置端点以使用以下身份验证机制:
-
hot Rod (SASL):
EXTERNAL -
REST (HTTP):
CLIENT_CERT
信任存储域配置
第 4 章 配置端点身份验证机制 复制链接链接已复制到粘贴板!
使用 SASL 或 HTTP 身份验证机制配置 Hot Rod 和 REST 连接器,以与客户端进行身份验证。
Data Grid 服务器需要用户身份验证才能访问命令行界面(CLI)和控制台以及 Hot Rod 和 REST 端点。Data Grid 服务器还根据您定义的安全域自动配置身份验证机制。
4.1. Data Grid 服务器身份验证 复制链接链接已复制到粘贴板!
Data Grid 服务器根据您分配给端点的安全域自动配置身份验证机制。
SASL 身份验证机制
以下 SASL 身份验证机制适用于 Hot Rod 端点:
| Security Realm | SASL 身份验证机制 |
|---|---|
| 属性 Realms 和 LDAP Realms | SCRAMJPEG, DIGEST可以, CRAM-MD5 |
| 令牌域 | OAUTHBEARER |
| 信任 Realms | EXTERNAL |
| Kerberos Identities | GSSAPI, GS2-KRB5 |
| SSL/TLS 标识 | PLAIN |
HTTP 身份验证机制
以下 HTTP 身份验证机制适用于 REST 端点:
| Security Realm | HTTP 身份验证机制 |
|---|---|
| 属性 Realms 和 LDAP Realms | 摘要 |
| 令牌域 | BEARER_TOKEN |
| 信任 Realms | CLIENT_CERT |
| Kerberos Identities | SPNEGO |
| SSL/TLS 标识 | BASIC |
默认配置
Data Grid 服务器提供了一个名为 "default" 的安全域,它使用一个属性 realm,在 $RHDG_HOME/server/ conf/users.properties 中定义的纯文本凭证,如以下代码片段所示:
端点配置将"默认"安全域分配给 Hot Rod 和 REST 连接器,如下所示:
<endpoints socket-binding="default" security-realm="default"> <hotrod-connector name="hotrod"/> <rest-connector name="rest"/> </endpoints>
<endpoints socket-binding="default" security-realm="default">
<hotrod-connector name="hotrod"/>
<rest-connector name="rest"/>
</endpoints>
由于上述配置,Data Grid 服务器需要使用属性 realm 支持的机制进行身份验证。
4.2. 手动配置 Hot Rod 身份验证 复制链接链接已复制到粘贴板!
明确配置 Hot Rod 连接器身份验证,以覆盖 Data Grid 服务器用于安全域的默认 SASL 身份验证机制。
流程
-
在 Hot Rod 连接器配置中添加
身份验证定义。 - 指定 Hot Rod 连接器用来进行身份验证的 Data Grid 安全域。
- 指定要使用的 Hot Rod 端点的 SASL 身份验证机制。
- 根据需要配置 SASL 身份验证属性。
4.2.1. 热 Rod 身份验证配置 复制链接链接已复制到粘贴板!
带有 SCRAM、DIGEST 和 PLAIN 验证的热 Rod 连接器
带有 Kerberos 验证的热 Rod 连接器
4.2.2. 热 Rod 端点身份验证机制 复制链接链接已复制到粘贴板!
Data Grid 支持带有 Hot Rod 连接器的以下 SASL 验证机制:
| 身份验证机制 | 描述 | 相关详情 |
|---|---|---|
|
|
以纯文本格式使用凭据。您应该只在加密连接中使用 |
与 |
|
|
使用哈希算法和非ce 值。热 Rod 连接器支持 |
与 |
|
|
除了哈希算法和非ce 值外,还使用 salt 值。热 Rod 连接器支持 |
与 |
|
|
使用 Kerberos 票据并需要一个 Kerberos 域控制器。您必须在 realm 配置中添加对应的 |
与 |
|
|
使用 Kerberos 票据并需要一个 Kerberos 域控制器。您必须在 realm 配置中添加对应的 |
与 |
|
| 使用客户端证书。 |
与 |
|
|
使用 OAuth 令牌并需要一个 |
与EARER |
4.2.3. SASL 服务质量(QoP) 复制链接链接已复制到粘贴板!
如果 SASL 机制支持完整性和隐私保护设置,您可以使用 qop 属性将它们添加到 Hot Rod 连接器配置中。
| QoP 设置 | 描述 |
|---|---|
|
| 仅进行身份验证。 |
|
| 使用完整性保护进行身份验证。 |
|
| 使用完整性和隐私保护进行身份验证。 |
4.2.4. SASL 策略 复制链接链接已复制到粘贴板!
SASL 策略可让您控制哪些身份验证机制 Hot Rod 连接器可以使用。
| 策略 | 描述 | 默认值 |
|---|---|---|
|
| 只使用支持会话之间转发保密的 SASL 机制。这意味着破坏一个会话不会自动提供破坏未来会话的信息。 | false |
|
| 仅使用需要客户端凭证的 SASL 机制。 | false |
|
| 不要使用易受简单纯文本攻击的 SASL 机制。 | false |
|
| 不要使用易受活跃、非字典、攻击的 SASL 机制。 | false |
|
| 不要使用易受被动字典攻击的 SASL 机制。 | false |
|
| 不要使用接受匿名登录的 SASL 机制。 | true |
数据网格缓存授权根据角色和权限限制对缓存的访问。如果配置缓存授权,您可以设置 < no-anonymous value=false /> 以允许匿名登录并将访问逻辑委派给缓存授权。
使用 SASL 策略配置的热 Rod 连接器
由于上述配置,Hot Rod 连接器使用 GSSAPI 机制,因为它是唯一适用于所有策略的机制。
4.3. 手动配置 REST 身份验证 复制链接链接已复制到粘贴板!
明确配置 REST 连接器身份验证,以覆盖 Data Grid 服务器用于安全域的默认 HTTP 身份验证机制。
流程
-
在 REST 连接器配置中添加
身份验证定义。 - 指定 REST 连接器用来进行身份验证的 Data Grid 安全域。
- 指定要使用的 REST 端点的身份验证机制。
4.3.1. REST 身份验证配置 复制链接链接已复制到粘贴板!
带有 BASIC 和 DIGEST 验证的 REST 连接器
带有 Kerberos 验证的 REST 连接器
4.3.2. REST 端点身份验证机制 复制链接链接已复制到粘贴板!
Data Grid 通过 REST 连接器支持以下验证机制:
| 身份验证机制 | 描述 | 相关详情 |
|---|---|---|
|
|
以纯文本格式使用凭据。您应该只使用带有加密连接的 |
对应于 |
|
|
使用哈希算法和非ce 值。REST 连接器支持 |
对应于 |
|
|
使用 Kerberos 票据并需要一个 Kerberos 域控制器。您必须在 realm 配置中添加对应的 |
对应于 |
|
|
使用 OAuth 令牌并需要一个 |
对应于 |
|
| 使用客户端证书。 |
与 |
4.4. 禁用身份验证 复制链接链接已复制到粘贴板!
在本地开发环境或隔离的网络中,您可以配置 Data Grid 以允许未经身份验证的客户端请求。
当您禁用用户身份验证时,您还应在 Data Grid 安全配置中禁用授权。
流程
-
打开
infinispan.xml进行编辑。 -
从端点配置中删除任何
security-realm属性。 确保 Hot Rod 和 REST 连接器不包含任何
身份验证配置。例如,以下配置允许未经身份验证的对 Data Grid 的访问:
<endpoints socket-binding="default"> <hotrod-connector name="hotrod"/> <rest-connector name="rest"/> </endpoints>
<endpoints socket-binding="default"> <hotrod-connector name="hotrod"/> <rest-connector name="rest"/> </endpoints>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
从
cache-container的安全配置和每个缓存配置中删除任何授权元素。
第 5 章 加密数据网格服务器连接 复制链接链接已复制到粘贴板!
您可以通过配置包含 Data Grid 的公钥和私钥的密钥存储来保护使用 SSL/TLS 加密的数据网格服务器连接。如果需要 mutual TLS,您还可以配置客户端证书身份验证。
5.1. 配置 Data Grid Server Keystores 复制链接链接已复制到粘贴板!
将密钥存储添加到 Data Grid Server,并将其配置为显示验证其对客户端身份的 SSL/TLS 证书。如果安全域包含 TLS/SSL 身份,它会加密到使用该安全域的 Data Grid Server 端点的任何连接。
前提条件
- 为 Data Grid 服务器创建包含证书或证书链的密钥存储。
数据网格服务器支持以下密钥存储格式:JKS、JCEKS、PKCS12、BKS、BCFKS 和 UBER。
在生产环境中,服务器证书应由可信证书颁发机构(包括 Root 或 Intermediate CA)签名。
流程
-
将包含 Data Grid 服务器的 SSL/TLS 身份的密钥存储添加到
$RHDG_HOME/server/conf目录。 -
向 Data Grid Server 安全域添加
服务器身份定义。 -
使用
path属性指定密钥存储文件名。 -
为密钥存储密码和证书别名提供
keystore-password和alias属性。
Data Grid Server keystore 配置
后续步骤
使用信任存储配置客户端,以便它们能够验证 Data Grid 服务器的 SSL/TLS 身份。
5.1.1. 自动生成密钥存储 复制链接链接已复制到粘贴板!
配置 Data Grid 服务器,以在启动时自动生成密钥存储。
自动生成的密钥存储:
- 不应该在生产环境中使用。
- 在需要时生成;例如,从客户端获取第一个连接时。
- 包含您可以在 Hot Rod 客户端中使用的证书。
流程
-
在服务器配置中包含
keystore元素的generate-self-signed-certificate-host属性。 - 为服务器证书指定主机名作为值。
带有生成的密钥存储的 SSL 服务器身份
5.1.2. 配置 TLS 版本和密码套件 复制链接链接已复制到粘贴板!
当使用 SSL/TLS 加密来保护部署时,您可以将 Data Grid 服务器配置为使用 TLS 协议的特定版本以及协议中的特定密码套件。
流程
-
将
engine元素添加到 Data Grid 服务器的 SSL 配置中。 将 Data Grid 配置为使用带有
enabled-protocols属性的一个或多个 TLS 版本。默认情况下,Data Grid 服务器支持 TLS 版本 1.2 和 1.3。如果适当,您可以设置
TLSv1.3,以限制客户端连接的安全协议。Data Grid 不推荐启用TLSv1.1,因为它是一个有限的旧协议,并提供弱安全性。您不应该启用任何早于 1.1 的 TLS 版本。警告如果您修改了 Data Grid 服务器的 SSL
引擎配置,则必须使用enabled-protocols属性明确配置 TLS 版本。省略enabled-protocols属性允许任何 TLS 版本。<engine enabled-protocols="TLSv1.3 TLSv1.2" />
<engine enabled-protocols="TLSv1.3 TLSv1.2" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Data Grid 配置为使用带有
enabled-ciphersuites属性的一个或多个密码套件。您必须确保设置了支持您要使用的任何协议功能的密码套件;例如
HTTP/2 ALPN。
SSL 引擎配置
5.2. 配置客户端证书身份验证 复制链接链接已复制到粘贴板!
将 Data Grid Server 配置为使用 mutual TLS 来保护客户端连接。
您可以配置 Data Grid,以两种方式在信任存储中验证来自证书的客户端身份:
- 需要仅包含签名证书的信任存储,通常是证书颁发机构(CA)。任何提供 CA 签名的证书的客户端都可以连接到 Data Grid。
- 除了签名证书外,还需要包含所有客户端证书的信任存储。只有提供信任存储中存在的签名证书的客户端才能连接到 Data Grid。
另外,您还可以提供信任存储,您可以使用共享系统证书。
前提条件
- 创建包含 CA 证书或所有公共证书的客户端信任存储。
- 为 Data Grid 服务器创建密钥存储并配置 SSL/TLS 身份。
流程
-
在您的
端点配置中添加require-ssl-client-auth="true"参数。 -
将客户端信任存储添加到
$RHDG_HOME/server/conf目录中。 -
在 Data Grid Server 安全域配置中指定
truststore元素的路径和密码属性。 -
如果您希望 Data Grid 服务器验证每个客户端证书,请将 <
truststore-realm/> 元素添加到安全域中。
Data Grid Server 信任存储域配置
后续步骤
- 如果使用安全角色和权限控制访问权限,请在 Data Grid Server configuration 中使用客户端证书设置授权。
- 配置客户端,以与 Data Grid Server 协商 SSL/TLS 连接。
5.3. 使用客户端证书配置授权 复制链接链接已复制到粘贴板!
启用客户端证书身份验证意味着您不需要在客户端配置中指定 Data Grid 用户凭证,这意味着您必须将角色与客户端证书中的 Common Name (CN)字段关联。
前提条件
- 为客户端提供 Java 密钥存储,其中包含其公共证书或证书链的一部分,通常是公共 CA 证书。
- 配置 Data Grid Server 来执行客户端证书身份验证。
流程
-
在安全授权配置中启用
common-name-role-mapper。 从客户端证书中为通用名称(
CN)分配具有适当权限的角色。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 为 Data Grid 服务器配置 Kerberos 标识 复制链接链接已复制到粘贴板!
为 Data Grid Server 端点提供 Kerberos 身份,以保证与客户端的连接。
6.1. 设置 Kerberos 标识 复制链接链接已复制到粘贴板!
Kerberos 身份使用 keytab 文件,其中包含来自 Kerberos 密码的服务主体名称和加密密钥。
keytab 文件可以包含用户和服务帐户主体。但是,Data Grid 服务器只使用服务主体。因此,Data Grid 服务器可以为客户端提供身份,并允许客户端与 Kerberos 服务器进行身份验证。
在大多数情况下,您可以为 Hot Rod 和 REST 连接器创建唯一的主体。例如,您在"INFINISPAN.ORG"域中有一个"datagrid"服务器。在这种情况下,您应该创建以下服务主体:
-
HotRod/datagrid@INFINISPAN.ORG标识 Hot Rod 服务。 -
HTTP/datagrid@INFINISPAN.ORG标识 REST 服务。
流程
为 Hot Rod 和 REST 服务创建 keytab 文件。
- Linux
ktutil
$ ktutil ktutil: addent -password -p datagrid@INFINISPAN.ORG -k 1 -e aes256-cts Password for datagrid@INFINISPAN.ORG: [enter your password] ktutil: wkt http.keytab ktutil: quitCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Microsoft Windows
ktpass -princ HTTP/datagrid@INFINISPAN.ORG -pass * -mapuser INFINISPAN\USER_NAME ktab -k http.keytab -a HTTP/datagrid@INFINISPAN.ORG
$ ktpass -princ HTTP/datagrid@INFINISPAN.ORG -pass * -mapuser INFINISPAN\USER_NAME $ ktab -k http.keytab -a HTTP/datagrid@INFINISPAN.ORGCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将 keytab 文件复制到
$ISPN_HOME/server/conf目录中。 -
向 Data
Grid 服务器安全域添加服务器身份定义。 - 指定为 Hot Rod 和 REST 连接器提供服务主体的 keytab 文件的位置。
- 将 Kerberos 服务主体命名为。
6.2. Kerberos 身份配置 复制链接链接已复制到粘贴板!
以下示例为 Data Grid 服务器配置 Kerberos 身份:
第 7 章 在密钥存储中存储数据网格服务器凭证 复制链接链接已复制到粘贴板!
外部服务需要凭证才能与 Data Grid 服务器进行身份验证。要保护敏感文本字符串,如密码,请将它们添加到凭据密钥存储中,而不是直接在 Data Grid Server 配置文件中添加它们。
然后,您可以配置 Data Grid Server 来解密与数据库或 LDAP 目录等服务建立连接的密码。
$RHDG_HOME/server/conf 中的纯文本密码是未加密的。任何对主机文件系统具有读取访问权限的用户帐户都可以查看纯文本密码。
虽然凭据密钥存储是密码保护的加密密码,但对主机文件系统具有写入访问权限的任何用户帐户都可与密钥存储本身篡改。
要完全保护数据网格服务器凭证,您应该只向可配置和运行 Data Grid Server 的用户帐户授予读写访问权限。
7.1. 设置凭证密钥存储 复制链接链接已复制到粘贴板!
创建密钥存储来为 Data Grid 服务器访问加密凭据。
凭据密钥存储至少包含一个与加密密码关联的别名。创建密钥存储后,您可以在连接配置中指定别名,如数据库连接池。然后,在服务尝试身份验证时,从密钥存储解密该别名的密码。
您可以根据需要创建任意数量的凭据密钥存储。
流程
-
在
$RHDG_HOME中打开一个终端。 使用
credentials命令创建密钥存储并向其添加凭据。提示默认情况下,密钥存储的类型是 PKCS12。运行
帮助凭据,以获取有关更改密钥存储默认值的详细信息。以下示例演示了如何创建密钥存储,其中包含密码"changeme"的别名"dbpassword"。在创建密钥存储时,您也使用
-p参数指定密钥存储的密码。- Linux
bin/cli.sh credentials add dbpassword -c changeme -p "secret1234!"
$ bin/cli.sh credentials add dbpassword -c changeme -p "secret1234!"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Microsoft Windows
bin\cli.bat credentials add dbpassword -c changeme -p "secret1234!"
$ bin\cli.bat credentials add dbpassword -c changeme -p "secret1234!"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查别名是否已添加到密钥存储中。
bin/cli.sh credentials ls -p "secret1234!"
$ bin/cli.sh credentials ls -p "secret1234!" dbpasswordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 Data Grid 以使用凭据密钥存储。
-
在
credential-stores配置中指定凭据密钥存储的名称和位置。 在 credentials
-reference 配置中提供凭据密钥存储和别名。提示credential-reference配置中的属性是可选的。-
只有在您有多个密钥存储时,才需要
存储。 -
只有在密钥存储包含多个别名时才需要别名。
-
只有在您有多个密钥存储时,才需要
-
在
参考
7.2. 凭证密钥存储配置 复制链接链接已复制到粘贴板!
检查 Data Grid Server 配置中凭据密钥存储的示例配置。
凭证密钥存储
数据源连接
LDAP 连接
第 8 章 端点 IP 过滤 复制链接链接已复制到粘贴板!
在端点上配置 IP 过滤规则,以根据客户端地址接受或拒绝连接。
8.1. Data Grid Server IP Filter Configuration 复制链接链接已复制到粘贴板!
Data Grid 端点和连接器可以指定一个或多个 IP 过滤规则。这些规则指定在与提供的 CIDR 块连接匹配的客户端时要执行的操作类型。IP 过滤规则按顺序应用,直到第一个匹配为止。
CIDR 块是 IP 地址及其关联的网络掩码的紧凑表示。CIDR 表示法指定 IP 地址、斜杠('/')字符和十进制数字。十进制数是网络掩码中前 1 位的计数。也可以将这个数字视为网络前缀的宽度(以位为单位)。CIDR 表示法中的 IP 地址始终根据 IPv4 或 IPv6 的标准表示。
地址可以表示特定的接口地址,包括主机标识符,如 10.0.0.1/8,也可以是整个网络接口范围的开头地址,可以是主机标识符 0,如 10.0.0.0/8 或 10/8。
例如:
-
192.168.100.14/24代表 IPv4 地址192.168.100.14及其关联的网络前缀192.168.100.0,或者相当于它的子网掩码255.255.255.0,其子网掩码为 24 个前 1 位。 -
IPv4 块
192.168.100.0/22代表192.168.100.0到192.168.103.255的 1024 IPv4 地址。 -
IPv6 block
2001:db8::/48代表从2001:db8:0:0:0:0:0:0到2001:db8:0:ffff:ffff:ffff:ffff:ffff:ffff:ffff 的块。 -
::1/128代表 IPv6 环回地址。其前缀长度是 128,这是地址中的位数。
由于上述配置,Data Grid 服务器只接受来自 192.168.0.0/16 和 10.0.0.0/8 CIDR 块中的地址的连接。Data Grid 服务器拒绝所有其他连接。
8.2. 检查和修改 Data Grid Server IP Filter 规则 复制链接链接已复制到粘贴板!
可以通过 CLI 来处理服务器 IP 过滤规则。
流程
-
在
$RHDG_HOME中打开一个终端。 根据需要检查并修改 IP 过滤规则
服务器连接器 ipfilter命令。列出集群中连接器上活跃的所有 IP 过滤规则:
[//containers/default]> server connector ipfilter ls endpoint-default
[//containers/default]> server connector ipfilter ls endpoint-defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群中设置 IP 过滤规则。
注意此命令替换任何现有规则。
[//containers/default]> server connector ipfilter set endpoint-default --rules=ACCEPT/192.168.0.0/16,REJECT/10.0.0.0/8`
[//containers/default]> server connector ipfilter set endpoint-default --rules=ACCEPT/192.168.0.0/16,REJECT/10.0.0.0/8`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除集群中连接器上的所有 IP 过滤规则。
[//containers/default]> server connector ipfilter clear endpoint-default
[//containers/default]> server connector ipfilter clear endpoint-defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 9 章 配置用户授权 复制链接链接已复制到粘贴板!
授权是一种安全功能,要求用户在访问缓存或与 Data Grid 资源交互之前具有某些权限。您可以将角色分配给提供不同级别权限的用户,从只读访问权限到完整的超级用户权限。
9.1. 在缓存配置中启用授权 复制链接链接已复制到粘贴板!
使用缓存配置中的授权来限制用户访问。在他们可以读取或写入缓存条目或创建和删除缓存之前,用户必须具有足够级别权限的角色。
流程
-
打开
infinispan.xml配置以进行编辑。 如果尚未声明,请在
cache-container的安全元素中添加 <authorization/> 标签。这为 Cache Manager 启用授权,并提供一组缓存可以继承的全局角色和权限。
-
将 &
lt;authorization/> 标签添加到 Data Grid 根据用户角色限制访问的每个缓存中。
以下配置示例演示了如何将隐式授权配置与默认角色和权限搭配使用:
9.2. 用户角色和权限 复制链接链接已复制到粘贴板!
Data Grid 包括一组默认的角色,为用户授予访问数据的权限并与 Data Grid 资源交互。
ClusterRoleMapper 是 Data Grid 用来将安全主体与授权角色关联的默认机制。
ClusterRoleMapper 将主体名称与角色名称匹配。名为 admin 的用户会自动获得 admin 权限,名为 deployer 的用户会收到 部署器 权限,以此类推。
| 角色 | 权限 | 描述 |
|---|---|---|
|
| ALL | 具有所有权限的超级用户,包括控制缓存管理器生命周期。 |
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR、CREATE |
除了 |
|
| ALL_READ, ALL_WRITE, LISTEN, EXEC, MONITOR |
除 |
|
| ALL_READ, MONITOR |
除了监控权限外,还具有对 Data Grid |
|
| MONITOR |
可以通过 JMX 和 |
9.3. 安全授权如何工作 复制链接链接已复制到粘贴板!
Data Grid 授权通过限制用户访问来保护您的安装。
用户应用程序或客户端必须属于分配了足够权限的角色,然后才能对缓存管理器或缓存执行操作。
例如,您可以在特定的缓存实例上配置授权,以便调用 Cache.get () 需要分配具有 read 权限的角色,而 Cache.put () 需要具有写入权限的角色。
在这种情况下,如果具有 io 角色的用户应用程序或客户端尝试写入条目,则 Data Grid 会拒绝请求并抛出安全异常。如果具有 writer 角色的用户应用程序或客户端发送写入请求,则数据网格会验证授权,并为后续操作发布令牌。
身份
身份是类型为 java.security.Principal 的安全主体。使用 javax.security.auth.Subject 类实施的主题代表一组安全主体。换句话说,Subject 代表一个用户以及它所属的所有组。
角色的身份
Data Grid 使用角色映射器,以便安全主体对应于您分配一个或多个权限的角色。
下图演示了安全主体与角色对应:
9.3.1. 权限 复制链接链接已复制到粘贴板!
授权角色有不同的权限,它们具有不同的对数据网格的访问级别。权限可让您限制用户访问缓存管理器和缓存。
9.3.1.1. 缓存管理器权限 复制链接链接已复制到粘贴板!
| 权限 | 功能 | 描述 |
|---|---|---|
| 配置 |
| 定义新的缓存配置。 |
| LISTEN |
| 针对缓存管理器注册监听程序。 |
| 生命周期 |
| 停止缓存管理器。 |
| 创建 |
| 创建和删除容器资源,如缓存、计数器、模式和脚本。 |
| MONITOR |
|
允许访问 JMX 统计信息和 |
| ALL | - | 包括所有缓存管理器权限。 |
9.3.1.2. 缓存权限 复制链接链接已复制到粘贴板!
| 权限 | 功能 | 描述 |
|---|---|---|
| READ |
| 从缓存检索条目。 |
| 写 |
放置 , | 写入、替换、删除、驱除缓存中的数据。 |
| EXEC |
| 允许针对缓存执行代码。 |
| LISTEN |
| 针对缓存注册监听程序。 |
| BULK_READ |
| 执行批量检索操作。 |
| BULK_WRITE |
| 执行批量写入操作。 |
| 生命周期 |
| 启动和停止缓存。 |
| ADMIN |
| 允许访问底层组件和内部结构。 |
| MONITOR |
|
允许访问 JMX 统计信息和 |
| ALL | - | 包括所有缓存权限。 |
| ALL_READ | - | 组合了 READ 和 BULK_READ 权限。 |
| ALL_WRITE | - | 组合 WRITE 和 BULK_WRITE 权限。 |
9.3.2. 角色映射程序 复制链接链接已复制到粘贴板!
Data Grid 包含一个 PrincipalRoleMapper API,它将 Subject 中的安全主体映射到您可以分配给用户的授权角色。
9.3.2.1. 集群角色映射器 复制链接链接已复制到粘贴板!
ClusterRoleMapper 使用持久复制缓存来动态存储默认角色和权限的 principal-to-role 映射。
默认情况下,使用 Principal 名称作为角色名称,并实施 org.infinispan.security.MutableRoleMapper,它公开方法在运行时更改角色映射。
-
Java 类:
org.infinispan.security.mappers.ClusterRoleMapper -
声明性配置:<
;cluster-role-mapper />
9.3.2.2. 身份角色映射器 复制链接链接已复制到粘贴板!
IdentityRoleMapper 使用 Principal 名称作为角色名称。
-
Java class:
org.infinispan.security.mappers.IdentityRoleMapper -
声明性配置:<
;identity-role-mapper />
9.3.2.3. commonName role mappers 复制链接链接已复制到粘贴板!
如果主体名称是可辨识名称(DN),则 CommonNameRoleMapper 使用 Common Name (CN)作为角色名称。
例如,此 DN、cn=managers、ou=people、dc=example、dc=com 映射到 managers 角色。
-
Java class:
org.infinispan.security.mappers.CommonRoleMapper -
声明性配置: <
;common-name-role-mapper />
9.3.2.4. 自定义角色映射器 复制链接链接已复制到粘贴板!
自定义角色映射程序是 org.infinispan.security.PrincipalRoleMapper 的实现。
-
声明性配置: &
lt;custom-role-mapper class="my.custom.RoleMapper" />
9.4. 访问控制列表(ACL)缓存 复制链接链接已复制到粘贴板!
Data Grid 会缓存您在内部授予用户的角色,以获得最佳性能。每当您为用户授予或拒绝角色时,Data Grid 会清除 ACL 缓存,以确保正确应用用户权限。
如有必要,您可以禁用 ACL 缓存或使用 cache-size 和 cache-timeout 属性进行配置。
<security cache-size="1000" cache-timeout="300000"> <authorization /> </security>
<security cache-size="1000" cache-timeout="300000">
<authorization />
</security>
9.5. 自定义角色和权限 复制链接链接已复制到粘贴板!
您可以自定义 Data Grid 配置中的授权设置,以使用具有不同角色和权限组合的角色映射器。
流程
-
打开
infinispan.xml配置以进行编辑。 -
通过声明角色映射器和一组角色和权限,为
cache-container配置授权。 - 配置缓存授权,以根据用户角色限制访问权限。
以下配置示例演示了如何使用角色和权限配置安全授权:
9.6. 禁用安全授权 复制链接链接已复制到粘贴板!
在本地开发环境中,您可以禁用授权,以便用户不需要角色和权限。禁用安全授权意味着任何用户都可以访问数据并与 Data Grid 资源交互。
流程
-
打开
infinispan.xml配置以进行编辑。 -
从
cache-container的安全配置和每个缓存配置中删除任何授权元素。
9.7. 使用客户端证书配置授权 复制链接链接已复制到粘贴板!
启用客户端证书身份验证意味着您不需要在客户端配置中指定 Data Grid 用户凭证,这意味着您必须将角色与客户端证书中的 Common Name (CN)字段关联。
前提条件
- 为客户端提供 Java 密钥存储,其中包含其公共证书或证书链的一部分,通常是公共 CA 证书。
- 配置 Data Grid Server 来执行客户端证书身份验证。
流程
-
在安全授权配置中启用
common-name-role-mapper。 从客户端证书中为通用名称(
CN)分配具有适当权限的角色。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 10 章 设置 Data Grid 集群 复制链接链接已复制到粘贴板!
Data Grid 需要传输层,以便节点可以自动加入和离开集群。传输层还可让数据在网络间复制或分发数据,并执行操作,如重新平衡和状态传输。
10.1. 默认 JGroups Stacks 复制链接链接已复制到粘贴板!
Data Grid 在 infinispan-core-12.1.11.Final 。
-redhat-00001.jar 文件的 default-configs 目录中提供默认的 JGroups 堆栈文件 default-jgroups114.xml
您可以在 $RHDG_HOME/lib 目录中找到此 JAR 文件。
| 文件名 | 堆栈名称 | 描述 |
|---|---|---|
|
|
| 使用 UDP 进行传输和 UDP 多播进行发现。适用于较大的集群(超过 100 个节点),或者使用复制缓存或无效模式。最小化打开的插槽数量。 |
|
|
|
使用 TCP 传输和 |
|
|
|
使用 TCP 进行传输, |
|
|
|
使用 TCP 进行传输,使用 |
|
|
|
使用 TCP 进行传输, |
|
|
|
使用 TCP 进行传输, |
10.2. 集群发现协议 复制链接链接已复制到粘贴板!
Data Grid 支持不同的协议,允许节点在网络上自动找到并形成集群。
Data Grid 可以使用两种发现机制:
- 在大多数网络上工作且不依赖于外部服务的通用发现协议。
-
依赖于外部服务的发现协议来存储和检索 Data Grid 集群的拓扑信息。
例如,DNS_PING 协议通过 DNS 服务器记录执行发现。
在托管平台上运行 Data Grid 需要使用针对各个云提供商实施的网络限制的发现机制。
10.2.1. PING 复制链接链接已复制到粘贴板!
PING 或 UDPPING 是一种通用 JGroups 发现机制,它使用 UDP 协议的动态多播。
加入后,节点将 PING 请求发送到 IP 多播地址,以发现已在 Data Grid 集群中的其他节点。每个节点通过包含协调器节点地址的数据包以及自己的地址来响应 PING 请求。C=coordinator 的地址和 A=own 地址。如果没有节点响应 PING 请求,则加入节点会成为新集群中的协调节点。
PING 配置示例
<PING num_discovery_runs="3"/>
<PING num_discovery_runs="3"/>
10.2.2. TCPPING 复制链接链接已复制到粘贴板!
TCPPING 是一种通用 JGroups 发现机制,它对群集成员使用静态地址列表。
使用 TCPPING 时,您可以手动将 Data Grid 集群中每个节点的 IP 地址或主机名指定为 JGroups 堆栈的一部分,而不是让节点动态发现其他节点。
TCPPING 配置示例
<TCP bind_port="7800" />
<TCPPING timeout="3000"
initial_hosts="${jgroups.tcpping.initial_hosts:hostname1[port1],hostname2[port2]}"
port_range="0"
num_initial_members="3"/>
<TCP bind_port="7800" />
<TCPPING timeout="3000"
initial_hosts="${jgroups.tcpping.initial_hosts:hostname1[port1],hostname2[port2]}"
port_range="0"
num_initial_members="3"/>
10.2.3. MPING 复制链接链接已复制到粘贴板!
MPING 使用 IP 多播来发现 Data Grid 集群的初始成员资格。
您可以使用 MPING 将 TCPPING 发现替换为 TCP 堆栈,并使用 multicasing 进行发现,而不使用初始主机的静态列表。但是,您还可以将 MPING 与 UDP 堆栈一起使用。
MPING 配置示例
<MPING mcast_addr="${jgroups.mcast_addr:228.6.7.8}"
mcast_port="${jgroups.mcast_port:46655}"
num_discovery_runs="3"
ip_ttl="${jgroups.udp.ip_ttl:2}"/>
<MPING mcast_addr="${jgroups.mcast_addr:228.6.7.8}"
mcast_port="${jgroups.mcast_port:46655}"
num_discovery_runs="3"
ip_ttl="${jgroups.udp.ip_ttl:2}"/>
10.2.4. TCPGOSSIP 复制链接链接已复制到粘贴板!
gossip 路由器在网络上提供一个中央位置,用于您的数据网格集群可以检索其他节点的地址。
您可以将 Gossip 路由器的地址(IP:PORT)注入 Data Grid 节点,如下所示:
-
将 address 作为系统属性传递给 JVM;例如,
-DGossipRouterAddress="10.10.2.4[12001]"。 - 在 JGroups 配置文件中引用该系统属性。
gossip 路由器配置示例
<TCP bind_port="7800" />
<TCPGOSSIP timeout="3000"
initial_hosts="${GossipRouterAddress}"
num_initial_members="3" />
<TCP bind_port="7800" />
<TCPGOSSIP timeout="3000"
initial_hosts="${GossipRouterAddress}"
num_initial_members="3" />
10.2.5. JDBC_PING 复制链接链接已复制到粘贴板!
JDBC_PING 使用共享数据库存储数据网格集群的信息。此协议支持任何可以使用 JDBC 连接的数据库。
节点将其 IP 地址写入共享数据库,以便加入节点可以在网络上找到 Data Grid 集群。当节点离开 Data Grid 集群时,它们会从共享数据库中删除其 IP 地址。
JDBC_PING 配置示例
<JDBC_PING connection_url="jdbc:mysql://localhost:3306/database_name"
connection_username="user"
connection_password="password"
connection_driver="com.mysql.jdbc.Driver"/>
<JDBC_PING connection_url="jdbc:mysql://localhost:3306/database_name"
connection_username="user"
connection_password="password"
connection_driver="com.mysql.jdbc.Driver"/>
将适当的 JDBC 驱动程序添加到类路径中,以便 Data Grid 可以使用 JDBC_PING。
10.2.6. DNS_PING 复制链接链接已复制到粘贴板!
JGroups DNS_PING 查询 DNS 服务器,以便在 Kubernetes 环境中发现数据网格群集成员,如 OKD 和 Red Hat OpenShift。
DNS_PING 配置示例
<dns.DNS_PING dns_query="myservice.myproject.svc.cluster.local" />
<dns.DNS_PING dns_query="myservice.myproject.svc.cluster.local" />
10.2.7. 云发现协议 复制链接链接已复制到粘贴板!
Data Grid 包括默认的 JGroups 堆栈,它使用特定于云提供商的发现协议实现。
| 发现协议 | 默认堆栈文件 | 工件 | 版本 |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
为云发现协议提供依赖项
要使用 NATIVE_S3_PING、GOOGLE_PING2 或 AZURE_PING 云发现协议,您需要向 Data Grid 提供依赖的库。
流程
- 下载工件 JAR 文件和所有依赖项。
将工件 JAR 文件和所有依赖项添加到 Data Grid Server 安装的
$RHDG_HOME/server/lib目录中。如需了解更多详细信息,请参阅为 Data Grid Server 下载 JGroups 云发现协议的工件 (红帽知识库文章)
然后,您可以将云发现协议配置为 JGroups 堆栈文件或系统属性的一部分。
10.3. 使用默认 JGroups 堆栈 复制链接链接已复制到粘贴板!
Data Grid 使用 JGroups 协议堆栈,以便节点可以在专用集群通道上发送其他消息。
Data Grid 为 UDP 和 TCP 协议提供预配置的 JGroups 堆栈。您可以使用这些默认堆栈作为构建自定义集群传输配置的起点,该配置根据您的网络要求进行了优化。
流程
执行以下操作之一使用默认 JGroups 堆栈之一:
使用
infinispan.xml文件中的stack属性。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Data Grid Server 启动时,使用
cluster-stack参数设置 JGroups 堆栈文件:bin/server.sh --cluster-stack=udp
$ bin/server.sh --cluster-stack=udpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
Data Grid 记录以下信息以指示它使用的堆栈:
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack udp
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack udp
10.4. 自定义 JGroups 堆栈 复制链接链接已复制到粘贴板!
调整和调优属性,以创建适合您的网络要求的集群传输配置。
Data Grid 提供可让您扩展默认 JGroups 堆栈以方便配置的属性。您可以在合并、删除和替换其他属性时从默认堆栈继承属性。
流程
-
在
infinispan.xml文件中创建一个新的 JGroups 堆栈声明。 -
添加
extends属性,并指定 JGroups 堆栈来继承属性。 -
使用
stack.combine属性修改继承堆栈中配置的协议的属性。 -
使用
stack.position属性定义自定义堆栈的位置。 指定堆栈名称,作为
传输配置中stack属性的值。例如,您可以使用 Gossip 路由器和使用默认 TCP 堆栈的对称加密来评估,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Data Grid 日志,以确保它使用堆栈。
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack my-stack
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack my-stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow
参考
- Data Grid 8.x 的 JGroups 集群传输配置 (红帽知识库文章)
10.4.1. 继承属性 复制链接链接已复制到粘贴板!
当您扩展 JGroups 堆栈时,继承属性允许您调整您要扩展的堆栈中的协议和属性。
-
stack.position指定要修改的协议。 stack.combine使用以下值来扩展 JGroups 堆栈:Expand 值 描述 组合覆盖协议属性。
REPLACE替换协议。
INSERT_AFTER在另一个协议后将协议添加到堆栈中。不会影响指定为插入点的协议。
JGroups 堆栈中的协议会根据堆栈中的位置相互影响。例如,您应该在
SYM_ENCRYPT或ASYM_ENCRYPT协议后放置NAKACK2等协议,以便保护NAKACK2。INSERT_BEFORE在另一个协议前,将协议插入到堆栈中。影响您指定为插入点的协议。
删除从堆栈中删除协议。
10.5. 使用 JGroups 系统属性 复制链接链接已复制到粘贴板!
在启动时将系统属性传递给 Data Grid,以调优群集传输。
流程
-
根据需要,使用
-D<property-name>=<property-value> 参数设置 JGroups 系统属性。
例如,设置自定义绑定端口和 IP 地址,如下所示:
bin/server.sh -Djgroups.bind.port=1234 -Djgroups.bind.address=192.0.2.0
$ bin/server.sh -Djgroups.bind.port=1234 -Djgroups.bind.address=192.0.2.0
10.5.1. 集群传输属性 复制链接链接已复制到粘贴板!
使用以下属性自定义 JGroups 集群传输。
| 系统属性 | 描述 | 默认值 | 必填/选填 |
|---|---|---|---|
|
| 集群传输的绑定地址。 |
| 选填 |
|
| 套接字的绑定端口。 |
| 选填 |
|
| 用于多播的 IP 地址,包括发现和集群间通信。IP 地址必须是适合 IP 多播的有效"类 D"地址。 |
| 选填 |
|
| 多播套接字的端口。 |
| 选填 |
|
| IP 多播数据包的时间到时间(TTL)。该值定义数据包在丢弃前可以进行的网络跃点数。 | 2 | 选填 |
|
| 线程池的最小线程数量。 | 0 | 选填 |
|
| 线程池的最大线程数。 | 200 | 选填 |
|
| 等待加入请求成功的最大毫秒数。 | 2000 | 选填 |
|
| 在记录线程转储前,线程池需要满的次数。 | 10000 | 选填 |
10.5.2. 云发现协议的系统属性 复制链接链接已复制到粘贴板!
使用以下属性为托管平台配置 JGroups 发现协议:
10.5.2.1. Amazon EC2 复制链接链接已复制到粘贴板!
用于配置 NATIVE_S3_PING 的系统属性。
| 系统属性 | 描述 | 默认值 | 必填/选填 |
|---|---|---|---|
|
| Amazon S3 区域的名称。 | 没有默认值。 | 选填 |
|
| Amazon S3 存储桶的名称。名称必须存在,并且必须是唯一的。 | 没有默认值。 | 选填 |
10.5.2.2. Google Cloud Platform 复制链接链接已复制到粘贴板!
用于配置 GOOGLE_PING2 的系统属性。
| 系统属性 | 描述 | 默认值 | 必填/选填 |
|---|---|---|---|
|
| Google Compute Engine 存储桶的名称。名称必须存在,并且必须是唯一的。 | 没有默认值。 | 必需 |
10.5.2.3. Azure 复制链接链接已复制到粘贴板!
AZURE_PING 的系统属性。
| 系统属性 | 描述 | 默认值 | 必填/选填 |
|---|---|---|---|
|
| Azure 存储帐户的名称。名称必须存在,并且必须是唯一的。 | 没有默认值。 | 必需 |
|
| Azure 存储访问密钥的名称。 | 没有默认值。 | 必需 |
|
| 存储 ping 信息的容器的有效 DNS 名称。 | 没有默认值。 | 必需 |
10.5.2.4. OpenShift 复制链接链接已复制到粘贴板!
DNS_PING 的系统属性。
| 系统属性 | 描述 | 默认值 | 必填/选填 |
|---|---|---|---|
|
| 设置返回群集成员的 DNS 记录。 | 没有默认值。 | 必需 |
10.6. 使用 Inline JGroups Stacks 复制链接链接已复制到粘贴板!
您可以将完整的 JGroups 堆栈定义插入到 infinispan.xml 文件中。
流程
在
infinispan.xml文件中嵌入自定义 JGroups 堆栈声明。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.7. 使用外部 JGroups 堆栈 复制链接链接已复制到粘贴板!
引用在 infinispan.xml 文件中定义自定义 JGroups 堆栈的外部文件。
流程
将自定义 JGroups 堆栈文件添加到
$RHDG_HOME/server/conf目录中。或者,您可以在声明外部堆栈文件时指定绝对路径。
使用
stack-file元素引用外部堆栈文件。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.8. 加密集群传输 复制链接链接已复制到粘贴板!
保护集群传输,以便节点与加密消息通信。您还可以配置 Data Grid 集群来执行证书身份验证,以便只有具有有效身份的节点才能加入。
10.8.1. Data Grid 集群安全性 复制链接链接已复制到粘贴板!
为了保护集群流量,您需要配置 Data Grid 节点,以使用 secret 密钥加密 JGroups 消息有效负载。
Data Grid 节点可以从以下方法获取 secret 密钥:
- 协调器节点(symmetric 加密)。
- 共享密钥存储(symmetric encryption)。
从协调器节点检索 secret 密钥
您可以通过在 Data Grid 配置中的 JGroups 堆栈中添加 ASYM_ENCRYPT 协议来配置非对称加密。这允许 Data Grid 集群生成和分发 secret 密钥。
在使用非对称加密时,您还应提供密钥存储,以便节点能够执行证书身份验证并安全地交换机密密钥。这可保护集群不受中间人(MitM)攻击的影响。
非对称加密保护集群流量,如下所示:
- Data Grid 集群中的第一个节点(coordinator 节点)会生成一个 secret 密钥。
- 加入节点使用协调器执行证书身份验证,以互相验证身份。
- 加入的节点从 coordinator 节点请求 secret 密钥。该请求包含加入节点的公钥。
- 协调器节点使用公钥加密 secret 密钥,并将其返回到加入节点。
- 加入节点解密并安装 secret 密钥。
- 节点加入集群,使用 secret 密钥加密并解密信息。
从共享密钥存储检索 secret 密钥
您可以通过在 Data Grid 配置中的 JGroups 堆栈中添加 SYM_ENCRYPT 协议来配置对称加密。这允许 Data Grid 集群从您提供的密钥存储获取 secret 密钥。
- 节点在启动时从 Data Grid 类路径上的密钥存储安装 secret 密钥。
- 节点加入集群,使用 secret 密钥加密和解密消息。
非对称和对称加密的比较
带有证书身份验证的 ASYM_ENCRYPT 提供了额外的加密层,与 SYM_ENCRYPT 相比。您提供密钥存储来为 secret 密钥加密对协调节点的请求。Data Grid 会自动生成该 secret 密钥并处理集群流量,同时允许您指定何时生成 secret 密钥。例如,您可以配置集群以在节点离开时生成新的 secret 密钥。这样可确保节点无法绕过证书身份验证,并使用旧密钥加入。
另一方面,SYM_ENCRYPT 比 ASYM_ENCRYPT 快,因为节点不需要与集群协调器交换密钥。SYM_ENCRYPT 是没有配置在集群成员资格更改时自动生成新 secret 密钥的潜在缺陷。用户负责生成和分发节点用于加密集群流量的 secret 密钥。
10.8.2. 使用 Asymmetric Encryption 配置集群传输 复制链接链接已复制到粘贴板!
配置 Data Grid 集群,以生成和分发加密 JGroups 消息的 secret 密钥。
流程
- 使用证书链创建密钥存储,使 Data Grid 能够验证节点身份。
将密钥存储放在集群中每个节点的 classpath 上。
对于 Data Grid Server,您要将密钥存储放在 $RHDG_HOME 目录中。
将
SSL_KEY_EXCHANGE和ASYM_ENCRYPT协议添加到 Data Grid 配置中的 JGroups 堆栈,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
当您启动 Data Grid 集群时,以下日志消息表示集群使用 secure JGroups 堆栈:
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
只有在它们使用 ASYM_ENCRYPT 且可以从协调器节点获取 secret 密钥时,数据网格节点才能加入集群。否则,以下信息会写入 Data Grid 日志:
[org.jgroups.protocols.ASYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
[org.jgroups.protocols.ASYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
参考
此流程中的 ASYM_ENCRYPT 配置示例显示了常用的参数。如需完整的可用参数集合,请参阅 JGroups 文档。
10.8.3. 使用 Symmetric 加密配置集群传输 复制链接链接已复制到粘贴板!
配置 Data Grid 集群,以使用您提供的密钥存储中的 secret 密钥加密 JGroups 消息。
流程
- 创建包含 secret 密钥的密钥存储。
将密钥存储放在集群中每个节点的 classpath 上。
对于 Data Grid Server,您要将密钥存储放在 $RHDG_HOME 目录中。
-
将
SYM_ENCRYPT协议添加到 Data Grid 配置中的 JGroups 堆栈。
验证
当您启动 Data Grid 集群时,以下日志消息表示集群使用 secure JGroups 堆栈:
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
只有在使用 SYM_ENCRYPT 且可以从共享密钥存储获取 secret 密钥时,数据网格节点才能加入集群。否则,以下信息会写入 Data Grid 日志:
[org.jgroups.protocols.SYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
[org.jgroups.protocols.SYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
参考
此流程中的 SYM_ENCRYPT 配置示例显示了常用的参数。如需完整的可用参数集合,请参阅 JGroups 文档。
10.9. 集群流量的 TCP 和 UDP 端口 复制链接链接已复制到粘贴板!
Data Grid 对集群传输信息使用以下端口:
| 默认端口 | 协议 | 描述 |
|---|---|---|
|
| TCP/UDP | JGroups 集群绑定端口 |
|
| UDP | JGroups 多播 |
跨站点复制
Data Grid 为 JGroups RELAY2 协议使用以下端口:
7900- 对于在 OpenShift 上运行的 Data Grid 集群。
7800- 如果将 UDP 用于节点间的流量,使用 TCP 作为集群之间的流量。
7801- 如果将 TCP 用于节点和 TCP 间的流量,用于集群之间的流量。
第 11 章 远程创建数据网格缓存 复制链接链接已复制到粘贴板!
将缓存添加到 Data Grid 服务器,以便您可以存储数据。
11.1. 使用 Data Grid Server 进行缓存配置 复制链接链接已复制到粘贴板!
缓存在 Data Grid 服务器上配置数据容器。
您可以通过控制台、命令行界面(CLI)、Hot Rod 端点或 REST 端点添加基于 org.infinispan 模板或 Data Grid 配置的定义在运行时创建缓存。
当您在运行时创建缓存时,Data Grid 服务器在集群中复制缓存定义。
您直接在 infinispan.xml 中声明的配置不会在 Data Grid 集群中自动同步。在这种情况下,您应该使用 Ansible 或 Chef 等配置来将配置传播到集群中的所有节点。
11.2. 默认缓存管理器 复制链接链接已复制到粘贴板!
Data Grid Server 提供默认的缓存管理器配置。当您启动 Data Grid Server 时,它会实例化 Cache Manager,以便您可以在运行时远程创建缓存。
默认缓存管理器
检查缓存管理器
启动 Data Grid Server 并添加用户凭证后,您可以通过命令行界面(CLI)或 REST 端点访问默认的缓存管理器,如下所示:
CLI:在默认容器中使用
describe命令。[//containers/default]> describe
[//containers/default]> describeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
rest: 在任何浏览器中导航到
<server_hostname>:11222/rest/v2/cache-managers/default/。
11.3. 使用 Data Grid 控制台创建缓存 复制链接链接已复制到粘贴板!
通过 Data Grid 控制台从模板或配置文件动态添加缓存。
前提条件
创建用户,并至少启动一个 Data Grid 服务器实例。
流程
-
在任何浏览器中导航到
<server_hostname>:11222/console/。 - 登录到控制台。
- 打开 Data Container 视图。
- 选择 Create Cache,然后从模板或以 XML 或 JSON 格式使用 Data Grid 配置添加缓存。
- 返回到 Data Container 视图,并验证您的 Data Grid 缓存。
11.4. 使用 Data Grid Command Line Interface (CLI)创建缓存 复制链接链接已复制到粘贴板!
使用 Data Grid CLI 以 XML 或 JSON 格式从模板或配置文件添加缓存。
前提条件
创建用户,并至少启动一个 Data Grid 服务器实例。
流程
- 创建与 Data Grid 的 CLI 连接。
使用
create cache命令添加缓存定义。使用
--file选项,从 XML 或 JSON 文件添加缓存定义。[//containers/default]> create cache --file=configuration.xml mycache
[//containers/default]> create cache --file=configuration.xml mycacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--template选项从模板创建缓存定义。[//containers/default]> create cache --template=org.infinispan.DIST_SYNC mycache
[//containers/default]> create cache --template=org.infinispan.DIST_SYNC mycacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示在
--template=参数后按 tab 键以列出可用的缓存模板。
使用
ls命令验证缓存是否存在。[//containers/default]> ls caches mycache
[//containers/default]> ls caches mycacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
describe命令检索缓存配置。[//containers/default]> describe caches/mycache
[//containers/default]> describe caches/mycacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5. 使用 Hot Rod 客户端创建远程缓存 复制链接链接已复制到粘贴板!
当 Hot Rod Java 客户端试图访问不存在的缓存时,它们会返回 remoteCacheManager.getCache ("myCache") 调用的 null。为避免这种情况,您可以将 Hot Rod 客户端配置为使用缓存配置在首次访问时创建缓存。
流程
-
使用
ConfigurationBuilder中的remoteCache ()方法,或者使用hotrod-client.properties中的configuration和configuration_uri属性。
ConfigurationBuilder
hotrod-client.properties
infinispan.client.hotrod.cache.another-cache.configuration=<distributed-cache name=\"another-cache\"/> infinispan.client.hotrod.cache.[my.other.cache].configuration_uri=file:///path/to/infinispan.xml
infinispan.client.hotrod.cache.another-cache.configuration=<distributed-cache name=\"another-cache\"/>
infinispan.client.hotrod.cache.[my.other.cache].configuration_uri=file:///path/to/infinispan.xml
将 hotrod-client.properties 与包含 . 字符的缓存名称一起使用时,您必须将缓存名称放在方括号中,如上例中所示。
您还可以以其他方式通过 RemoteCacheManager API 创建远程缓存,例如以下示例使用 XMLStringConfiguration () 方法添加缓存配置,然后调用 getOrCreateCache () 方法。
但是,Data Grid 不推荐使用这个方法,因为它可能更难以确保 XML 的有效性,通常更难以创建缓存。如果您要创建复杂的缓存配置,您应该将它们保存到项目中的单独文件中,并在 Hot Rod 客户端配置中引用它们。
热 Rod 代码示例
尝试一些数据网格代码教程,其中向您展示如何使用 Hot Rod Java 客户端以不同的方式创建远程缓存。
访问 Data Grid 代码示例。
11.6. 使用 HTTP 客户端创建数据网格缓存 复制链接链接已复制到粘贴板!
使用任何合适的 HTTP 客户端通过 REST 端点向 Data Grid 服务器添加缓存定义。
前提条件
创建用户,并至少启动一个 Data Grid 服务器实例。
流程
-
使用
POST请求到/rest/v2/caches/$cacheName创建缓存。
通过在请求有效负载中包含 XML 或 JSON 配置。
POST /rest/v2/caches/mycache
POST /rest/v2/caches/mycache
使用 ?template= 参数从 org.infinispan 模板创建缓存。
POST /rest/v2/caches/mycache?template=org.infinispan.DIST_SYNC
POST /rest/v2/caches/mycache?template=org.infinispan.DIST_SYNC
11.7. 缓存配置 复制链接链接已复制到粘贴板!
您可以使用 XML 或 JSON 格式提供缓存配置。
XML
<distributed-cache name="myCache" mode="SYNC"> <encoding media-type="application/x-protostream"/> <memory max-count="1000000" when-full="REMOVE"/> </distributed-cache>
<distributed-cache name="myCache" mode="SYNC">
<encoding media-type="application/x-protostream"/>
<memory max-count="1000000" when-full="REMOVE"/>
</distributed-cache>
JSON
JSON 格式
JSON 格式的缓存配置必须遵循 XML 配置的结构。* XML 元素成为 JSON 对象。* XML 属性成为 JSON 字段。
第 12 章 配置 Data Grid Server Datasources 复制链接链接已复制到粘贴板!
创建受管数据源,以优化数据库连接的连接池和性能。
您可以将数据库连接属性指定为 JDBC 缓存存储配置的一部分。但是,您必须为每个缓存定义执行此操作,通过创建多个不同的连接池来重复配置并浪费资源。
通过使用共享、管理的数据源,您可以集中连接配置和池,以便更有效地使用。
12.1. JDBC 缓存存储的数据源配置 复制链接链接已复制到粘贴板!
数据源的数据网格服务器配置由两个部分组成:
-
定义如何连接到数据库的
连接工厂。 -
定义如何池和重复利用连接的连接池。
使用以下参数可以调整连接池:
-
initial-size: 池应拥有的初始连接数。 -
max-size:池中连接的最大数量。 -
min-size:池应保留的最小连接数。 -
blocking-timeout: 在抛出异常前等待连接时,以毫秒为单位阻止的最长时间。如果创建新连接需要很长时间,则不会抛出异常。默认为 0 表示调用将无限期等待。 -
background-validation:后台验证运行之间的时间(毫秒)。持续时间为 0 表示此功能被禁用。 -
validate-on-acquisition:在获取前,按毫秒指定的连接闲置的时间(以毫秒为单位)会被验证(用于验证)。持续时间为 0 表示此功能被禁用。 -
idle-removal: 在删除连接前必须闲置时间。 -
leak-detection:在泄漏警告前必须保持连接的时间(以毫秒为单位)。
12.2. 在 JDBC Cache Stores 中使用 Datasources 复制链接链接已复制到粘贴板!
在 JDBC 缓存存储配置中使用共享管理的数据源,而不是为每个缓存定义指定单独的连接属性。
前提条件
在您的 Data Grid 服务器配置中为 JDBC 缓存存储创建一个受管数据源。
流程
- 在缓存配置的 JDBC 缓存存储配置中引用数据源的 JNDI 名称,如下例所示:
12.3. 测试数据源 复制链接链接已复制到粘贴板!
使用 CLI 验证与数据源的连接是否正常工作。
流程
启动 CLI。
bin/cli.sh
$ bin/cli.sh [disconnected]>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出所有数据源:
[//containers/default]> server datasource ls
[//containers/default]> server datasource lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 测试数据源连接。
[//containers/default]> server datasource test my-datasource
[//containers/default]> server datasource test my-datasourceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 13 章 远程执行服务器侧任务 复制链接链接已复制到粘贴板!
定义并添加可从 Data Grid 命令行界面、REST API 或 Hot Rod 客户端调用的 Data Grid 服务器的任务。
您可以将任务实施为自定义 Java 类,也可以使用 JavaScript 等语言定义脚本。
13.1. 创建服务器任务 复制链接链接已复制到粘贴板!
创建自定义任务实施,并将它们添加到 Data Grid 服务器中。
13.1.1. 服务器任务 复制链接链接已复制到粘贴板!
Data Grid 服务器任务是扩展 org.infinispan.tasks.ServerTask 接口且通常包括以下方法调用的类:
setTaskContext()- 允许访问执行上下文信息,包括任务参数、对执行任务的缓存引用,等等。在大多数情况下,实施将此信息存储在本地,并在实际执行任务时使用这些信息。
getName()- 返回任务的唯一名称。客户端使用这些名称调用任务。
getExecutionMode()返回任务的执行模式。
-
TaskExecutionMode.ONE_NODE仅处理请求的节点执行该脚本。虽然脚本仍然可以调用集群操作。 -
TaskExecutionMode.ALL_NODESData Grid 使用集群 executors 在节点间运行脚本。例如,需要在单个节点上执行调用流处理的服务器任务,因为流处理被分发到所有节点。
-
call()-
计算结果。此方法在
java.util.concurrent.Callable接口中定义,并通过服务器任务调用。
服务器任务实施必须遵循服务加载程序模式要求。例如,实施必须具有零参数构造器。
以下 HelloTask 类实现提供了一个示例任务,它有一个参数:
13.1.2. 在 Data Grid 服务器中部署服务器任务 复制链接链接已复制到粘贴板!
将自定义服务器任务类添加到 Data Grid 服务器。
前提条件
停止任何正在运行的 Data Grid 服务器。Data Grid 不支持自定义类的运行时部署。
流程
添加
META-INF/services/org.infinispan.tasks.ServerTask文件,其中包含服务器任务的完全限定域名,例如:example.HelloTask
example.HelloTaskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 将服务器任务实施打包在 JAR 文件中。
-
将 JAR 文件复制到 Data Grid 服务器的
$RHDG_HOME/server/lib目录中。 - 将您的类添加到 Data Grid 配置中的 deserialization allow 列表中。或者,也可使用系统属性设置允许列表。
13.2. 创建服务器脚本 复制链接链接已复制到粘贴板!
创建自定义脚本并将其添加到 Data Grid 服务器中。
13.2.1. 服务器脚本 复制链接链接已复制到粘贴板!
Data Grid 服务器脚本基于 javax.script API,兼容任何基于 JVM 的 ScriptEngine 实施。
hello World 脚本示例
以下是在单个 Data Grid 服务器上运行的简单示例,具有一个参数,并使用 JavaScript:
// mode=local,language=javascript,parameters=[greetee] "Hello " + greetee
// mode=local,language=javascript,parameters=[greetee]
"Hello " + greetee
运行前面的脚本时,您将传递 greetee 参数的值,Data Grid 返回 "Hello ${value}"。
13.2.1.1. 脚本元数据 复制链接链接已复制到粘贴板!
元数据提供有关在运行脚本时数据网格服务器使用的脚本的附加信息。
脚本元数据是添加到脚本第一行中的注释的 property=value 对,如下例所示:
// name=test, language=javascript // mode=local, parameters=[a,b,c]
// name=test, language=javascript
// mode=local, parameters=[a,b,c]
-
使用与脚本语言(
//、;;,#)匹配的注释样式。 -
使用逗号分隔
property=value对。 - 使用单引号(')或双引号(")分隔值。
| 属性 | 描述 |
|---|---|
|
| 定义执行模式并具有以下值:
|
|
| 指定执行脚本的 ScriptEngine。 |
|
| 指定文件名扩展作为设置 ScriptEngine 的替代方法。 |
|
| 指定用户必须执行脚本的角色。 |
|
| 指定此脚本的有效参数名称数组。指定此列表中不包含的参数的调用会导致异常。 |
|
| (可选)设置用于存储数据的 MediaType (MIME 类型),以及参数和返回值。此属性仅适用于仅支持特定数据格式的远程客户端。
目前,您只能设置 |
13.2.1.2. 脚本绑定 复制链接链接已复制到粘贴板!
Data Grid 将内部对象公开为脚本执行的绑定。
| 绑定 | 描述 |
|---|---|
|
| 指定运行脚本的缓存。 |
|
| 指定用于将数据序列化到缓存的 marshaller。 |
|
|
指定缓存的 |
|
| 指定运行脚本的脚本管理器的实例。您可以使用此绑定从脚本运行其他脚本。 |
13.2.1.3. 脚本参数 复制链接链接已复制到粘贴板!
借助 Data Grid,您可以将命名参数作为运行脚本的绑定传递。
参数是 name,value 对,其中 name 是字符串,value 是 marshaller 可以解释的任何值。
以下示例脚本有两个参数,即 multiplicand 和 multiplier。脚本采用 multiplicand 的值,并将该值乘以 倍数。
// mode=local,language=javascript multiplicand * multiplier
// mode=local,language=javascript
multiplicand * multiplier
运行前面的脚本时,Data Grid 会以表达式评估的结果进行响应。
13.2.2. 将脚本添加到 Data Grid 服务器 复制链接链接已复制到粘贴板!
使用命令行界面向 Data Grid 服务器添加脚本。
前提条件
Data Grid 服务器将脚本存储在 ___script_cache 缓存中。如果启用缓存授权,用户必须有 CREATE 权限才能添加到 ___script_cache 中。
如果使用默认授权设置,请至少为用户分配 deployer 角色。
流程
根据需要定义脚本。
例如,创建一个名为
multiplication.js的文件,该文件在单一 Data Grid 服务器上运行,有两个参数,并使用 JavaScript 来多次使用给定值:// mode=local,language=javascript multiplicand * multiplier
// mode=local,language=javascript multiplicand * multiplierCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建与 Data Grid 的 CLI 连接。
使用
task命令上传脚本,如下例所示:[//containers/default]> task upload --file=multiplication.js multiplication
[//containers/default]> task upload --file=multiplication.js multiplicationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您的脚本是否可用。
[//containers/default]> ls tasks multiplication
[//containers/default]> ls tasks multiplicationCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2.3. 以编程方式创建脚本 复制链接链接已复制到粘贴板!
使用 Hot Rod RemoteCache 接口添加脚本,如下例所示:
RemoteCache<String, String> scriptCache = cacheManager.getCache("___script_cache");
scriptCache.put("multiplication.js",
"// mode=local,language=javascript\n" +
"multiplicand * multiplier\n");
RemoteCache<String, String> scriptCache = cacheManager.getCache("___script_cache");
scriptCache.put("multiplication.js",
"// mode=local,language=javascript\n" +
"multiplicand * multiplier\n");
13.3. 运行服务器端任务和脚本 复制链接链接已复制到粘贴板!
在 Data Grid 服务器上执行任务和自定义脚本。
13.3.1. 运行任务和脚本 复制链接链接已复制到粘贴板!
使用命令行界面在 Data Grid 集群中运行的任务和脚本。
流程
- 创建与 Data Grid 的 CLI 连接。
使用
task命令运行任务和脚本,如下例所示:执行名为
multipler.js的脚本并指定两个参数:[//containers/default]> task exec multipler.js -Pmultiplicand=10 -Pmultiplier=20 200.0
[//containers/default]> task exec multipler.js -Pmultiplicand=10 -Pmultiplier=20 200.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行名为
@@cache@names的任务,以检索所有可用缓存的列表://containers/default]> task exec @@cache@names ["___protobuf_metadata","mycache","___script_cache"]
//containers/default]> task exec @@cache@names ["___protobuf_metadata","mycache","___script_cache"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.2. 以编程方式运行脚本 复制链接链接已复制到粘贴板!
调用 execute () 方法以使用 Hot Rod RemoteCache 接口运行脚本,如下例所示:
13.3.3. 以编程方式运行任务 复制链接链接已复制到粘贴板!
调用 execute () 方法以使用 Hot Rod RemoteCache 接口运行任务,如下例所示:
第 14 章 启用和自定义日志记录 复制链接链接已复制到粘贴板!
Data Grid 使用 Apache Log4j 2 提供可配置的日志机制,用于捕获环境和记录缓存操作的详细信息,以进行故障排除和根本原因分析。
14.1. 服务器日志 复制链接链接已复制到粘贴板!
Data Grid 将服务器日志写入 $RHDG_HOME/server/log 目录中的以下文件中:
server.log-
以人类可读格式的消息,包括与服务器启动相关的引导日志。
在启动服务器时,Data Grid 会创建此文件。 server.log.json-
JSON 格式的消息,允许您解析和分析 Data Grid 日志。
在启用JSON-FILE附加程序时,Data Grid 会创建此文件。
14.1.1. 配置服务器日志 复制链接链接已复制到粘贴板!
Data Grid 使用 Apache Log4j 技术来编写服务器日志消息。您可以在 log4j2.xml 文件中配置服务器日志。
流程
-
使用任何文本编辑器打开
$RHDG_HOME/server/conf/log4j2.xml。 - 根据需要更改服务器日志记录。
-
保存并关闭
log4j2.xml。
14.1.2. 日志级别 复制链接链接已复制到粘贴板!
日志级别表示消息的性质和严重性。
| 日志级别 | 描述 |
|---|---|
|
| 细粒度调试消息,通过应用程序捕获单个请求的流。 |
|
| 常规调试消息,与单个请求无关。 |
|
| 有关应用程序整体进度的消息,包括生命周期事件。 |
|
| 可能导致错误或降低性能的事件。 |
|
| 可能会阻止操作或活动成功但不会阻止应用程序运行的错误条件。 |
|
| 可能导致关键服务失败和应用程序关闭的事件。 |
除了上面提供的单个消息级别外,配置还允许另外两个值: ALL 包含所有消息,OFF 排除所有消息。
14.1.3. Data Grid Log Categories 复制链接链接已复制到粘贴板!
Data Grid 为 INFO,WARN,ERROR,FATAL 级别提供按功能区域组织日志的类别。
org.infinispan.CLUSTER- 特定于 Data Grid 集群的消息,其中包括状态传输操作、重新平衡事件、分区等。
org.infinispan.CONFIG- 特定于 Data Grid 配置的消息。
org.infinispan.CONTAINER- 特定于过期和驱除操作的数据容器、缓存侦听器通知、事务等。
org.infinispan.PERSISTENCE- 特定于缓存加载程序和存储的消息。
org.infinispan.SECURITY- 特定于 Data Grid 安全性的消息。
org.infinispan.SERVER- 特定于 Data Grid 服务器的消息。
org.infinispan.XSITE- 特定于跨站点复制操作的消息。
14.1.4. 日志应用程序 复制链接链接已复制到粘贴板!
日志附加程序定义 Data Grid 记录日志消息的方式。
- 控制台
-
将日志消息写入主机标准输出(
stdout)或标准错误(stderr)流。
默认使用org.apache.logging.log4j.core.appender.ConsoleAppender类。 - FILE
-
将日志消息写入文件。
默认使用org.apache.logging.log4j.core.appender.RollingFileAppender类。 - JSON-FILE
-
将日志消息写入 JSON 格式的文件。
默认使用org.apache.logging.log4j.core.appender.RollingFileAppender类。
14.1.5. 日志模式 复制链接链接已复制到粘贴板!
CONSOLE 和 FILE 附加程序使用 PatternLayout 来根据 模式 格式化日志消息。
例如,FILE appender 中的默认模式:%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t)[%c Array] %m%throwable%n
-
%d{yyyy-MM-dd HH:mm:ss,SSS}添加当前时间和日期。 -
%-5p指定日志级别,与右侧一致。 -
%T 添加当前线程的名称。 -
%c consumption添加日志记录类别的短名称。 -
%M 添加日志消息。 -
%throwable添加异常堆栈追踪。 -
%n添加新行。
PatternLayout 文档 完全描述了模式。
14.1.6. 启用并配置 JSON 日志处理程序 复制链接链接已复制到粘贴板!
Data Grid 提供了一个 JSON 日志处理程序,以 JSON 格式写入消息。
前提条件
-
如果 Data Grid Server 正在运行,则停止它。
您无法动态启用日志处理程序。
流程
-
使用任何文本编辑器打开
$RHDG_HOME/server/conf/log4j2.xml。 取消注释
JSON-FILE附加程序并注释掉FILE附加器:<!--<AppenderRef ref="FILE"/>--> <AppenderRef ref="JSON-FILE"/>
<!--<AppenderRef ref="FILE"/>--> <AppenderRef ref="JSON-FILE"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - (可选)根据需要配置 JSON 附加器和 JSON 布局。
-
保存并关闭
log4j2.xml。
当您启动 Data Grid 时,它会在以下文件中将每个日志消息写为 JSON 映射:$RHDG_HOME/server/log/server.log.json
14.2. 访问日志 复制链接链接已复制到粘贴板!
访问日志,将 Hot Rod 和 REST 端点的所有入站客户端请求记录到 $RHDG_HOME/server/log 目录中的文件。
org.infinispan.HOTROD_ACCESS_LOG-
将 Hot Rod 访问消息写入
hotrod-access.log文件的日志记录类别。 org.infinispan.REST_ACCESS_LOG-
将 REST 访问消息写入
rest-access.log文件的日志记录类别。
14.2.1. 启用访问日志 复制链接链接已复制到粘贴板!
要记录 Hot Rod 和 REST 端点访问消息,您需要在 log4j2.xml 中启用日志类别。
流程
-
使用任何文本编辑器打开
$RHDG_HOME/server/conf/log4j2.xml。 -
将
org.infinispan.HOTROD_ACCESS_LOG和org.infinispan.REST_ACCESS_LOG日志类别的级别更改为TRACE。 -
保存并关闭
log4j2.xml。
<Logger name="org.infinispan.HOTROD_ACCESS_LOG" additivity="false" level="TRACE"> <AppenderRef ref="HR-ACCESS-FILE"/> </Logger>
<Logger name="org.infinispan.HOTROD_ACCESS_LOG" additivity="false" level="TRACE">
<AppenderRef ref="HR-ACCESS-FILE"/>
</Logger>
14.2.2. 访问日志属性 复制链接链接已复制到粘贴板!
访问日志的默认格式如下:
%X{address} %X{user} [%d{dd/MMM/yyyy:HH:mm:ss Z}] "%X{method} %m
%X{protocol}" %X{status} %X{requestSize} %X{responseSize} %X{duration}%n
%X{address} %X{user} [%d{dd/MMM/yyyy:HH:mm:ss Z}] "%X{method} %m
%X{protocol}" %X{status} %X{requestSize} %X{responseSize} %X{duration}%n
以上格式会创建日志条目,如下所示:
127.0.0.1 - [DD/MM/YYYY:HH:MM:SS +0000] "PUT /rest/v2/caches/default/key HTTP/1.1" 404 5 77 10
日志记录属性使用 %X{name} 表示法,并允许您修改访问日志的格式。以下是默认的日志记录属性:
| 属性 | 描述 |
|---|---|
|
|
|
|
| 主体名称,如果使用身份验证。 |
|
|
使用的方法。 |
|
|
使用的协议。 |
|
|
REST 端点的 HTTP 状态代码。Hot Rod 端点的 |
|
| 请求的大小,以字节为单位。 |
|
| 响应的大小(以字节为单位)。 |
|
| 服务器处理请求的毫秒数。 |
使用前缀为 h: 的标头名称来记录请求中包含的标头;例如: %X{h:User-Agent}。
14.3. 审计日志 复制链接链接已复制到粘贴板!
审计日志可让您跟踪对数据网格环境的更改,以便您了解何时发生变化以及哪些用户进行更改。启用并配置审计日志记录,以记录服务器配置事件和管理操作。
org.infinispan.AUDIT-
将安全审计消息写入
$RHDG_HOME/server/log目录中的audit.log文件的日志记录类别。
14.3.1. 启用审计日志记录 复制链接链接已复制到粘贴板!
要记录安全审计消息,您需要在 log4j2.xml 中启用日志记录类别。
流程
-
使用任何文本编辑器打开
$RHDG_HOME/server/conf/log4j2.xml。 -
将
org.infinispan.AUDIT日志类别的级别更改为INFO。 -
保存并关闭
log4j2.xml。
<!-- Set to INFO to enable audit logging --> <Logger name="org.infinispan.AUDIT" additivity="false" level="INFO"> <AppenderRef ref="AUDIT-FILE"/> </Logger>
<!-- Set to INFO to enable audit logging -->
<Logger name="org.infinispan.AUDIT" additivity="false" level="INFO">
<AppenderRef ref="AUDIT-FILE"/>
</Logger>
14.3.2. 配置审计日志记录应用程序 复制链接链接已复制到粘贴板!
Apache Log4j 提供了不同的附加程序,您可以使用它们将审计消息发送到默认日志文件以外的目的地。例如,如果要将审计日志发送到 syslog 守护进程、JDBC 数据库或 Apache Kafka 服务器,您可以在 log4j2.xml 中配置附加程序。
流程
-
使用任何文本编辑器打开
$RHDG_HOME/server/conf/log4j2.xml。 注释或删除默认的
AUDIT-FILE滚动文件附加程序。<!--RollingFile name="AUDIT-FILE" ... </RollingFile-->
<!--RollingFile name="AUDIT-FILE" ... </RollingFile-->Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为审计消息添加所需的日志记录附加程序。
例如,您可以为 Kafka 服务器添加日志附加程序,如下所示:
<Kafka name="AUDIT-KAFKA" topic="audit"> <PatternLayout pattern="%date %message"/> <Property name="bootstrap.servers">localhost:9092</Property> </Kafka>
<Kafka name="AUDIT-KAFKA" topic="audit"> <PatternLayout pattern="%date %message"/> <Property name="bootstrap.servers">localhost:9092</Property> </Kafka>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存并关闭
log4j2.xml。
14.3.3. 使用自定义审计日志记录实施 复制链接链接已复制到粘贴板!
如果配置 Log4j appenders 不满足您的需要,您可以创建 org.infinispan.security.AuditLogger API 的自定义实现。
前提条件
-
根据需要实施
org.infinispan.security.AuditLogger,并将它打包在 JAR 文件中。
流程
-
将您的 JAR 添加到 Data Grid Server 安装的
server/lib目录中。 指定自定义审计日志记录器的完全限定类名称,作为缓存容器安全配置中
authorization元素的audit-logger属性的值。例如,以下配置将
my.package.CustomAuditLogger定义为日志记录审计消息的类:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 15 章 配置 Data Grid Server Statistics 复制链接链接已复制到粘贴板!
启用数据网格导出到 指标端点 或通过 JMX MBeans 导出的统计信息。注册 JMX MBeans 也公开了您可以远程执行的管理操作。
15.1. 启用 Data Grid Statistics 复制链接链接已复制到粘贴板!
配置 Data Grid 以导出缓存管理器和缓存的统计信息。
默认情况下,Data Grid Server 启用缓存管理器统计信息。您必须明确启用缓存的统计信息。
流程
修改您的配置,以以下方法之一启用 Data Grid 统计:
-
declarative: 添加
statistics="true"属性。 -
programmatic :调用
.statistics ()方法。
声明
<!-- Enables statistics for the Cache Manager. --> <cache-container statistics="true"> <!-- Enables statistics for the named cache. --> <local-cache name="mycache" statistics="true"/> </cache-container>
<!-- Enables statistics for the Cache Manager. -->
<cache-container statistics="true">
<!-- Enables statistics for the named cache. -->
<local-cache name="mycache" statistics="true"/>
</cache-container>
programmatic
15.2. 配置数据网格指标 复制链接链接已复制到粘贴板!
配置 Data Grid,以通过 指标端点 导出量表和直方图。
流程
-
根据需要
在指标配置中打开或关闭量表和直方图。
声明
<!-- Computes and collects statistics for the Cache Manager. --> <cache-container statistics="true"> <!-- Exports collected statistics as gauge and histogram metrics. --> <metrics gauges="true" histograms="true" /> </cache-container>
<!-- Computes and collects statistics for the Cache Manager. -->
<cache-container statistics="true">
<!-- Exports collected statistics as gauge and histogram metrics. -->
<metrics gauges="true" histograms="true" />
</cache-container>
programmatic
15.3. 收集数据网格指标 复制链接链接已复制到粘贴板!
使用 Prometheus 等监控工具来收集数据网格指标。
前提条件
-
启用统计信息。如果没有启用统计信息,Data Grid 为指标提供
0和-1值。 - (可选)启用直方图。默认情况下,Data Grid 生成量表,但不生成直方图。
流程
获取 Prometheus (OpenMetrics)格式的指标:
curl -v http://localhost:11222/metrics
$ curl -v http://localhost:11222/metricsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以 MicroProfile JSON 格式获取指标:
curl --header "Accept: application/json" http://localhost:11222/metrics
$ curl --header "Accept: application/json" http://localhost:11222/metricsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
配置监控应用程序以收集数据网格指标。例如,将以下内容添加到 prometheus.yml 中:
static_configs:
- targets: ['localhost:11222']
static_configs:
- targets: ['localhost:11222']
参考
- Prometheus 配置
- 启用 Data Grid Statistics
15.4. 配置数据网格以注册 JMX MBeans 复制链接链接已复制到粘贴板!
Data Grid 可以注册可以用来收集统计信息并执行管理操作的 JMX MBeans。您必须单独启用 JMX 的统计,否则 Data Grid 都为所有统计属性提供 0 值。
流程
修改缓存容器配置以以下方法之一启用 JMX:
-
声明:在缓存容器中添加 <
jmx enabled="true"/> 元素。 -
programmatic: 调用
.jmx ().enable ()方法。
声明
<cache-container> <jmx enabled="true" /> </cache-container>
<cache-container>
<jmx enabled="true" />
</cache-container>
programmatic
GlobalConfiguration globalConfig = new GlobalConfigurationBuilder() .jmx().enable() .build();
GlobalConfiguration globalConfig = new GlobalConfigurationBuilder()
.jmx().enable()
.build();
15.4.1. Data Grid MBeans 复制链接链接已复制到粘贴板!
Data Grid 公开了代表可管理资源的 JMX MBeans。
org.infinispan:type=Cache- 可用于缓存实例的属性和操作。
org.infinispan:type=CacheManager- 可用于缓存管理器的属性和操作,包括数据网格缓存和集群健康统计信息。
有关可用 JMX MBeans 的完整列表以及描述和可用的操作和属性,请参阅 Data Grid JMX 组件 文档。
第 16 章 检索健康统计 复制链接链接已复制到粘贴板!
使用以下方法监控 Data Grid 集群的健康状态:
-
使用
embeddedCacheManager.getHealth ()方法调用进行编程。 - JMX MBeans
- Data Grid REST Server
16.1. 通过 JMX 访问 Health API 复制链接链接已复制到粘贴板!
通过 JMX 检索 Data Grid 集群健康统计信息。
流程
使用任何 JMX 功能工具(如 JConsole)连接到 Data Grid 服务器,并导航到以下对象:
org.infinispan:type=CacheManager,name="default",component=CacheContainerHealth
org.infinispan:type=CacheManager,name="default",component=CacheContainerHealthCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 选择可用的 MBeans 来检索集群运行状况统计。
16.2. 通过 REST 访问 Health API 复制链接链接已复制到粘贴板!
通过 REST API 获取 Data Grid 集群健康状况。
流程
调用
GET请求以检索集群健康状况。GET /rest/v2/cache-managers/{cacheManagerName}/healthGET /rest/v2/cache-managers/{cacheManagerName}/healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Data Grid 使用 JSON 文档响应,如下所示:
获取缓存管理器状态,如下所示:
GET /rest/v2/cache-managers/{cacheManagerName}/health/status
GET /rest/v2/cache-managers/{cacheManagerName}/health/status
参考
如需更多信息,请参阅 REST v2 (版本 2)API 文档。
第 17 章 为 Data Grid 服务器执行滚动升级 复制链接链接已复制到粘贴板!
执行数据网格集群的滚动升级,以便在版本之间更改,而不会停机或数据丢失。滚动升级通过 Hot Rod 将您的数据同时迁移到目标版本。
17.1. 设置目标集群 复制链接链接已复制到粘贴板!
创建一个运行目标 Data Grid 版本的集群,并使用远程缓存存储从源集群加载数据。
前提条件
- 使用目标升级版本安装 Data Grid 集群。
确保目标集群的网络属性不会与源集群的网络属性重叠。您应该在 JGroups 传输配置中为目标和源集群指定唯一名称。根据您的环境,您还可以使用不同的网络接口并指定端口偏移来保持目标和源集群分开。
流程
在目标集群上为您要从源集群迁移的每个缓存添加一个
RemoteCacheStore。远程缓存存储使用 Hot Rod 协议从远程网格集群检索数据。将远程缓存存储添加到目标集群时,它可以从源集群中完全加载数据来处理客户端请求。
将客户端切换到目标集群,以便它开始处理所有请求。
- 使用目标集群的位置更新客户端配置。
- 重新启动客户端。
17.1.1. Rolling 升级的远程缓存存储 复制链接链接已复制到粘贴板!
您必须使用特定的远程缓存存储配置来执行滚动升级,如下所示:
17.2. 将数据同步到目标集群 复制链接链接已复制到粘贴板!
当目标集群正在运行并处理使用远程缓存存储的客户端请求时,您可以按需加载数据,您可以将源集群的数据同步到目标集群。
此操作从源集群读取数据并将其写入目标集群。数据会并行迁移到目标集群中的所有节点,每个节点都接收数据的子集。您必须在 Data Grid 配置中为每个缓存执行同步。
流程
在您要迁移到目标集群的数据网格配置中启动每个缓存的同步操作。
使用 Data Grid REST API,并通过
?action=sync- data参数调用POST请求。例如,要将名为"myCache"的数据从源集群同步到目标集群,请执行以下操作:POST /v2/caches/myCache?action=sync-data
POST /v2/caches/myCache?action=sync-dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当操作完成后,Data Grid 使用复制到目标集群的条目总数进行响应。
或者,您可以通过在
RollingUpgradeManagerMBean 上调用synchronizeData (migratorName=hotrod)来使用 JMX。断开目标集群中的每个节点与源集群的连接。
例如,要从源集群断开"myCache"缓存,请调用以下
POST请求:POST /v2/caches/myCache?action=disconnect-source
POST /v2/caches/myCache?action=disconnect-sourceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用 JMX,请在
RollingUpgradeManagerMBean 上调用disconnectSource (migratorName=hotrod)。
后续步骤
同步源集群中的所有数据后,滚动升级过程已完成。现在,您可以停用源集群。
第 18 章 Data Grid Servers 故障排除 复制链接链接已复制到粘贴板!
收集 Data Grid 服务器部署的诊断信息,并执行故障排除步骤以解决问题。
18.1. 获取 Data Grid 服务器的诊断报告 复制链接链接已复制到粘贴板!
Data Grid 服务器在 tar.gz 存档中提供聚合报告,其中包含有关 Data Grid 服务器和主机的诊断信息。除了配置和日志文件外,该报告还提供有关 CPU、内存、打开文件、网络套接字和路由线程的详细信息。
流程
- 创建与 Data Grid 的 CLI 连接。
使用
server report命令下载tar.gz归档:[//containers/default]> server report Downloaded report 'infinispan-<hostname>-<timestamp>-report.tar.gz'
[//containers/default]> server report Downloaded report 'infinispan-<hostname>-<timestamp>-report.tar.gz'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
tar.gz文件移动到您文件系统中合适的位置。 -
使用任何归档工具提取
tar.gz文件。
18.2. 在运行时更改 Data Grid Server Logging 配置 复制链接链接已复制到粘贴板!
在运行时修改 Data Grid 服务器的日志记录配置,以临时调整日志记录来排除问题并执行根本原因分析。
通过 CLI 修改日志记录配置是一种运行时操作,这意味着更改:
-
不会保存到
log4j2.xml文件中。重启服务器节点或整个集群会将日志记录配置重置为log4j2.xml文件中的默认属性。 - 仅在调用 CLI 时应用到集群中的节点。更改日志记录配置后加入集群的节点使用默认属性。
流程
- 创建与 Data Grid 的 CLI 连接。
使用
日志记录进行所需的调整。- 列出服务器中定义的所有附加程序:
[//containers/default]> logging list-appenders
[//containers/default]> logging list-appenders
前面的命令返回:
- 列出服务器上定义的所有日志记录器配置:
[//containers/default]> logging list-loggers
[//containers/default]> logging list-loggers
前面的命令返回:
-
使用
set子命令添加和修改日志记录器配置
例如,以下命令将 org.infinispan 软件包的日志级别设置为 DEBUG :
[//containers/default]> logging set --level=DEBUG org.infinispan
[//containers/default]> logging set --level=DEBUG org.infinispan
-
使用
remove子命令删除现有日志记录器配置。
例如,以下命令会删除 org.infinispan logger 配置,这意味着改为使用 root 配置:
[//containers/default]> logging remove org.infinispan
[//containers/default]> logging remove org.infinispan
18.3. 资源统计 复制链接链接已复制到粘贴板!
您可以使用 stats 命令检查 Data Grid 服务器中的某些资源的 server-collected 统计信息。
从收集统计信息(容器、缓存)的资源上下文中使用 stats 命令,或使用指向此类资源的路径:
第 19 章 参考 复制链接链接已复制到粘贴板!
19.1. Data Grid Server 8.2.3 Readme 复制链接链接已复制到粘贴板!
有关 Data Grid Server 12.1.11.Final-redhat-00001 发行版的信息。
19.1.1. 要求 复制链接链接已复制到粘贴板!
Data Grid Server 需要 JDK 11 或更高版本。
19.1.2. 启动服务器 复制链接链接已复制到粘贴板!
使用 服务器 脚本运行 Data Grid 服务器实例。
Unix / Linux
$RHDG_HOME/bin/server.sh
$RHDG_HOME/bin/server.sh
Windows
$RHDG_HOME\bin\server.bat
$RHDG_HOME\bin\server.bat
包含 --help 或 -h 选项以查看命令参数。
19.1.3. 停止服务器 复制链接链接已复制到粘贴板!
使用 shutdown 命令和 CLI 执行安全关闭。
或者,从终端输入 Ctrl-C 以中断服务器进程或通过 TERM 信号终止它。
19.1.4. Configuration 复制链接链接已复制到粘贴板!
服务器配置通过以下特定于服务器的元素扩展了数据网格配置:
cache-container- 定义用于管理缓存生命周期的缓存容器。
端点- 为客户端协议启用和配置端点连接器。
安全- 配置端点安全域。
socket-bindings- 将端点连接器映射到接口和端口。
默认的配置文件为 $RHDG_HOME/server/conf/infinispan.xml。
使用带有 -c 参数的不同配置文件,如下例所示,该服务器在没有集群功能的情况下启动服务器:
Unix / Linux
$RHDG_HOME/bin/server.sh -c infinispan-local.xml
$RHDG_HOME/bin/server.sh -c infinispan-local.xml
Windows
$RHDG_HOME\bin\server.bat -c infinispan-local.xml
$RHDG_HOME\bin\server.bat -c infinispan-local.xml
19.1.5. 绑定地址 复制链接链接已复制到粘贴板!
默认情况下,Data Grid 服务器绑定到网络上的 loopback IP 地址 localhost。
使用 -b 参数设置不同的 IP 地址,如下例所示:
Unix / Linux
$RHDG_HOME/bin/server.sh -b 0.0.0.0
$RHDG_HOME/bin/server.sh -b 0.0.0.0
Windows
$RHDG_HOME\bin\server.bat -b 0.0.0.0
$RHDG_HOME\bin\server.bat -b 0.0.0.0
19.1.6. 绑定端口 复制链接链接已复制到粘贴板!
默认情况下,Data Grid 服务器侦听端口 11222。
使用 -p 参数设置替代端口:
Unix / Linux
$RHDG_HOME/bin/server.sh -p 30000
$RHDG_HOME/bin/server.sh -p 30000
Windows
$RHDG_HOME\bin\server.bat -p 30000
$RHDG_HOME\bin\server.bat -p 30000
19.1.7. 集群地址 复制链接链接已复制到粘贴板!
Data Grid Server 配置定义了集群传输,以便同一网络上的多个实例相互发现并自动组成集群。
使用 -k 参数更改集群流量的 IP 地址:
Unix / Linux
$RHDG_HOME/bin/server.sh -k 192.168.1.100
$RHDG_HOME/bin/server.sh -k 192.168.1.100
Windows
$RHDG_HOME\bin\server.bat -k 192.168.1.100
$RHDG_HOME\bin\server.bat -k 192.168.1.100
19.1.8. 集群堆栈 复制链接链接已复制到粘贴板!
JGroups 堆栈配置用于集群传输的协议。默认情况下,Data Grid 服务器使用 tcp 堆栈。
使用带有 -j 参数的替代集群堆栈,如下例所示,使用 UDP 进行集群传输:
Unix / Linux
$RHDG_HOME/bin/server.sh -j udp
$RHDG_HOME/bin/server.sh -j udp
Windows
$RHDG_HOME\bin\server.bat -j udp
$RHDG_HOME\bin\server.bat -j udp
19.1.9. 身份验证 复制链接链接已复制到粘贴板!
Data Grid Server 需要身份验证。
使用 CLI 创建用户名和密码,如下所示:
Unix / Linux
$RHDG_HOME/bin/cli.sh user create username -p "qwer1234!"
$RHDG_HOME/bin/cli.sh user create username -p "qwer1234!"
Windows
$RHDG_HOME\bin\cli.bat user create username -p "qwer1234!"
$RHDG_HOME\bin\cli.bat user create username -p "qwer1234!"
19.1.10. 服务器主目录 复制链接链接已复制到粘贴板!
Data Grid 服务器使用 infinispan.server.home.path 来查找主机文件系统上服务器分发的内容。
服务器主目录,称为 $RHDG_HOME,包含以下文件夹:
| 目录 | 描述 |
|---|---|
|
| 包含用于启动服务器和 CLI 的脚本。 |
|
|
包含用于引导服务器的 |
|
| 提供配置示例、架构、组件许可证和其他资源。 |
|
|
包含服务器内部需要的 |
|
| 为 Data Grid 服务器实例提供根文件夹。 |
|
| 包含 Data Grid 控制台的静态资源。 |
19.1.11. 服务器根目录 复制链接链接已复制到粘贴板!
Data Grid 服务器使用 infinispan.server.root.path 来查找 Data Grid 服务器实例的配置文件和数据。
您可以在相同目录或不同的目录中创建多个服务器根文件夹,然后使用 -s 或 --server-root 参数指定位置,如下例所示:
Unix / Linux
$RHDG_HOME/bin/server.sh -s server2
$RHDG_HOME/bin/server.sh -s server2
Windows
$RHDG_HOME\bin\server.bat -s server2
$RHDG_HOME\bin\server.bat -s server2
每个服务器根目录都包含以下文件夹:
├── server │ ├── conf │ ├── data │ ├── lib │ └── log
├── server
│ ├── conf
│ ├── data
│ ├── lib
│ └── log
| 目录 | 描述 | 系统属性覆盖 |
|---|---|---|
|
| 包含服务器配置文件。 |
|
|
| 包含按容器名称组织的数据文件。 |
|
|
|
包含服务器扩展文件。 |
|
|
| 包含服务器日志文件。 |
|
19.1.12. 日志记录 复制链接链接已复制到粘贴板!
使用 server/conf 文件夹中的 log4j2.xml 文件配置 Data Grid 服务器日志。
使用 --logging-config=<path_to_logfile > 参数来使用自定义路径,如下所示:
Unix / Linux
$RHDG_HOME/bin/server.sh --logging-config=/path/to/log4j2.xml
$RHDG_HOME/bin/server.sh --logging-config=/path/to/log4j2.xml
为确保自定义路径生效,请不要使用 ~ 快捷方式。
Windows
$RHDG_HOME\bin\server.bat --logging-config=path\to\log4j2.xml
$RHDG_HOME\bin\server.bat --logging-config=path\to\log4j2.xml