
infinispan/serverInfinispan Server Docker 镜像提供了便捷的方式在容器环境中部署和运行 Infinispan 服务器,支持快速启动、灵活的认证配置、集群部署及调试功能,适用于开发和生产环境中的分布式数据存储需求。
在本地机器上启动 Infinispan 服务器,只需执行:
bashdocker run -p ***:*** infinispan/server
或
bashpodman run --net=host -p ***:*** infinispan/server
使用 podman 时,如果不以
sudo执行,必须传递--net=host参数。
默认情况下,镜像在所有暴露的端点上启用认证。执行上述命令时,镜像会自动生成具有“admin”角色的用户名/密码组合,打印到标准输出,然后启动 Infinispan 服务器,在 *** 端口暴露经过认证的 Hotrod 和 Rest 端点。因此,通过客户端访问端点时需使用打印的凭据。
也可通过环境变量提供 admin 用户名/密码组合:
bashdocker run -p ***:*** -e USER="admin" -e PASS="changeme" infinispan/server
建议仅在初始开发中使用自动生成的凭据或 USER & PASS 环境变量。通过 Identities Batch 文件 提供认证和授权配置可实现更精细的控制。
连接 HotRod 客户端到镜像时,客户端必须配置以下 SASL 属性(根据实际情况修改用户名和密码):
propertiesinfinispan.client.hotrod.auth_username=admin infinispan.client.hotrod.auth_password=changme infinispan.client.hotrod.sasl_mechanism=DIGEST-MD5
可通过 IDENTITIES_BATCH 环境变量定义用户身份和角色。该文件中的所有 CLI 命令在服务器启动前执行,仅支持离线命令(如包含 create cache ... 等需连接服务器的命令将导致容器启动失败)。
Infinispan 为部分用户提供隐式角色。查看 Infinispan 文档 了解更多隐式角色和授权信息。
以下是定义四个用户及其角色的示例 identities.batch 文件:
bashuser create "Alan Shearer" -p "striker9" -g admin user create "observer" -p "secret1" user create "deployer" -p "secret2" user create "Rigoberta Baldini" -p "secret3" -g monitor
使用本地 identities.batch 文件运行镜像:
bashdocker run -v $(pwd):/user-config -e IDENTITIES_BATCH="/user-config/identities.batch" -p ***:*** infinispan/server
Infinispan 镜像将所有容器参数传递给服务器,因此可像非容器化部署一样配置服务器。
创建并挂载 docker volume,使用本地配置文件 my-infinispan-config.xml 运行镜像:
bashdocker run -v $(pwd):/user-config -e IDENTITIES_BATCH="/user-config/identities.batch" -p ***:*** infinispan/server -c /user-config/my-infinispan-config.xml
在 Kubernetes 等托管环境中,需使用 JGroups DNS_PING 协议进行节点发现。配置 kubernetes 堆栈并设置 jgroups.dnsPing.query 属性:
bashdocker run -v $(pwd):/user-config infinispan/server --bind-address=0.0.0.0 -Dinfinispan.cluster.stack=kubernetes -Djgroups.dns.query="infinispan-dns-ping.myproject.svc.cluster.local"
通过 JAVA_OPTIONS 环境变量提供 Java 属性和 JVM 选项。例如快速配置 CORS:
bashdocker run -e JAVA_OPTIONS="-Dinfinispan.cors.enableAll=[***]" infinispan/server
使用 SERVER_LIBS 环境变量将 artifacts 部署到服务器 lib 目录。例如添加 PostgreSQL JDBC 驱动:
bashdocker run -e SERVER_LIBS="org.postgresql:postgresql:42.3.1" infinispan/server
SERVER_LIBS 支持多个空格分隔的 artifacts(URL 或 Maven 坐标),.tar、.tar.gz 或 .zip 格式的归档文件将被自动提取。参考 CLI install 命令帮助了解更多参数。
设置 DEBUG=TRUE 环境变量可调试镜像配置和启动脚本:
bashdocker run -e DEBUG=true infinispan/<image-name>
设置 DEBUG_PORT 环境变量可调试容器中的 Infinispan 服务器:
bashdocker run -e DEBUG_PORT="*:8787" -p 8787:8787 infinispan/server
镜像基于 ubi-minimal 构建,以下是常用调试工具/命令:
| 任务 | 命令 |
|---|---|
| 文本编辑器 | vi |
| 获取 Java 进程 PID | ps -fC java |
| 获取套接字/文件信息 | lsof |
| 列出所有打开文件(排除网络套接字) | lsof | grep -v "IPv[46]" |
| 列出所有 TCP 套接字 | ss -t -a |
| 列出所有 UDP 套接字 | ss -u -a |
| 网络配置 | ip |
| 显示单播路由 | ip route |
| 显示多播路由 | ip maddress |
建议使用 Infinispan 的 REST 端点配置 Kubernetes httpGet 探针:
yamllivenessProbe: httpGet: path: /rest/v2/cache-managers/default/health/status port: *** failureThreshold: 5 initialDelaySeconds: 10 successThreshold: 1 timeoutSeconds: 10 readinessProbe: httpGet: path: /rest/v2/cache-managers/default/health/status port: *** failureThreshold: 5 initialDelaySeconds: 10 successThreshold: 1 timeoutSeconds: 10
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务