在 OpenShift 上安装 Infinispan

部署一个或多个 Infinispan 集群(带或不带跨站点)。

在 OpenShift 上安装 Infinispan

  1. https://github.com/keycloak/keycloak-benchmark/ 检出 Git 仓库。

  2. 切换到文件夹 provision/infinispan

  3. 运行 task <task-name> 命令以在 OpenShift 上配置所有容器。

查看 Keycloak Customization 了解如何将 Keycloak 集群连接到 Infinispan 集群。

可用任务

Infinispan 可以安装在单个或多个 Openshift 集群中,带或不带跨站点。可用任务如下

task: Available tasks for this project:
* crossdc:                     Creates a cross-site enabled Infinispan deployment between 2 OCP clusters
* crossdc-single:              Creates a cross-site enabled Infinispan deployment between 2 namespaces
* delete-crossdc:              Deletes the Infinispan CR from cross-site deployment
* delete-crossdc-single:       Deletes the Infinispan CR in a cross-site deployment in a single OCP cluster
* delete-infinispan:           Deletes the Infinispan CR
* single-cluster:              Creates a single cluster Infinispan deployment

单集群,不带跨站点

要安装一个简单的、不带跨站点的 Infinispan 集群,请运行 single-cluser 任务。此任务有以下必需变量

变量 详情

ROSA_CLUSTER_NAME

ROSA 集群名称。使用 rosa list clusters 查看可用集群名称。

OC_NAMESPACE

用于部署 Infinispan 集群的命名空间。

示例
task single-cluster ROSA_CLUSTER_NAME=gh-keycloak OC_NAMESPACE=infinispan

要删除 Infinispan 集群,请使用相同的变量运行 delete-infinispan 任务。

示例
task delete-infinispan ROSA_CLUSTER_NAME=gh-keycloak OC_NAMESPACE=infinispan

在单个 Openshift 集群中启用跨站点的 Infinispan 集群

要部署两个启用跨站点的 Infinispan 集群,请运行 crossdc-single 任务。此任务需要两个不同的命名空间,用于部署每个 Infinispan 集群。必需的变量是

变量 详情

ROSA_CLUSTER_NAME

ROSA 集群名称。使用 rosa list clusters 查看可用集群名称。

OC_NAMESPACE_1

用于安装第一个 Infinispan 集群的第一个命名空间。

OC_NAMESPACE_2

用于安装第二个 Infinispan 集群的第二个命名空间。

变量 OC_NAMESPACE_1OC_NAMESPACE_2 必须不同。
示例
task crossdc-single ROSA_CLUSTER_NAME=gh-keycloak OC_NAMESPACE_1=ispn-1 OC_NAMESPACE_2=ispn-2

要删除此部署,请使用相同的变量运行 delete-crossdc-single 任务。

示例
task delete-crossdc-single ROSA_CLUSTER_NAME=gh-keycloak OC_NAMESPACE_1=ispn-1 OC_NAMESPACE_2=ispn-2

在两个不同的 Openshift 集群中启用跨站点的 Infinispan 集群

最后,但同样重要的是,要在两个不同的 Openshift 集群中部署带跨站点的 Infinispan,请运行 crossdc 任务。以下变量是必需的

变量 详情

ROSA_CLUSTER_NAME_1

第一个 ROSA 集群名称。使用 rosa list clusters 查看可用集群。

ROSA_CLUSTER_NAME_2

第二个 ROSA 集群名称。使用 rosa list clusters 查看可用集群。

OC_NAMESPACE_1

用于在第一个 ROSA 集群中安装 Infinispan 集群的命名空间。

OC_NAMESPACE_2

用于在第二个 ROSA 集群中安装 Infinispan 集群的命名空间。

变量 ROSA_CLUSTER_NAME_1ROSA_CLUSTER_NAME_2 必须不同。
变量 OC_NAMESPACE_1OC_NAMESPACE_2 可以具有相同的值。
示例
task crossdc ROSA_CLUSTER_NAME_1=gh-keycloak ROSA_CLUSTER_NAME_2=gh-pruivo OC_NAMESPACE_1=infinispan OC_NAMESPACE_2=infinispan

要删除此部署,请使用相同的变量运行 delete-crossdc 任务。

示例
task delete-crossdc ROSA_CLUSTER_NAME_1=gh-keycloak ROSA_CLUSTER_NAME_2=gh-pruivo OC_NAMESPACE_1=infinispan OC_NAMESPACE_2=infinispan

可选变量

以下是用于自定义 Infinispan 部署的变量列表。其中一些变量被所有任务使用,另一些是任务特定的。

变量 默认值 任务使用 详情

CROSS_DC_ISPN_REPLICAS

3

所有

要创建的 Infinispan Pod 副本数。

CROSS_DC_CPU_REQUESTS

-

所有

CPU 请求,格式为 <limit>:<requests>。例如,2000m:1000m 限制 Pod 的 CPU 最大使用量为 2000m,并在启动时为每个 Pod 请求 1000m 的 CPU。指定单个值将同时设置限制和请求。

CROSS_DC_MEMORY_REQUESTS

-

所有

内存请求,格式为 <limit>:<requests>。例如,2Gi:1Gi 限制 Pod 的内存最大使用量为 2Gi,并在启动时为每个 Pod 请求 1Gi 的内存。指定单个值将同时设置限制和请求。

CROSS_DC_JVM_OPTS

-

所有

Infinispan 服务器的额外 JVM 选项。可用于设置 Java 堆内存,如下所示:-Xmx750

CROSS_DC_HOT_ROD_PASSWORD

来自 AWS IAM 的共享密钥或 changeme

所有

Infinispan Hot Rod 端点的凭据。

CROSS_DC_HISTOGRAMS

false

所有

在 Infinispan 集群中启用直方图指标。

CROSS_DC_MODE

SYNC

crossdc-singlecrossdc

设置缓存跨站点策略。可以是 SYNCASYNC 跨站点复制。

CROSS_DC_STATE_TRANSFER_MODE

AUTO

crossdc-singlecrossdc

设置缓存跨站点状态传输策略。如果为 AUTO,则在跨站点连接恢复后将自动启动状态传输。

仅当 CROSS_DC_MODE=ASYNC 时才使用的变量。

可以是 AUTOMANUAL

CROSS_DC_SERVICE_ACCOUNT

xsite-sa

crossdc

Infinispan Operator 需要的服务帐户,用于在不同的 OpenShift 集群之间进行跨站点身份验证和配置。Infinispan Operator 使用此帐户对远程集群进行身份验证。

CROSS_DC_SA_TOKEN_SECRET

xsite-token-secret

crossdc

用于存储远程 OpenShift 集群的服务帐户令牌的 secret 名称。

CROSS_DC_JGRP_TS_SECRET

xsite-truststore-secret

crossdc

用于存储 truststore 的 secret。Truststore 用于允许 Infinispan 和 Gossip Router Pod 之间的 TLS 通信。

CROSS_DC_JGRP_KS_SECRET

xsite-keystore-secret

crossdc

用于存储 keystore 的 secret。Keystore 用于 Infinispan 和 Gossip Router Pod 之间的 TLS 通信。