第 4 章 为 OpenShift 服务设置数据网格
4.1. 用于 OpenShift 服务的数据网格
数据网格服务是有状态的应用程序,您可以轻松地扩展或缩减而不丢失数据。
cache-service
适用于 OpenShift 集群的易于使用的数据网格,旨在通过高性能缓存加快应用程序响应时间。
- 内存中的数据在节点间平均分布。在创建服务时,您可以定义 Data Grid 集群的初始大小。发行版也是同步的。当向另一节点传播数据时,发送节点会等待操作在线程继续之前完成。
- 默认情况下,缓存条目的单一副本。如果 Pod 重启,则 pod 中的数据将会丢失。为了实现更加弹性的数据,您可以在创建服务时轻松启用复制。
-
缓存条目存储了 JVM 效率的不足堆。当缓存大小达到 pod 可用的内存量时,条目会被驱除。您可以选择更改驱除策略来引发
ContainerFullException
。
datagrid-service
- 针对 OpenShift 的完整数据网格分布,可让您创建多个不同的缓存配置。为您提供索引和查询以及 Prometheus 监控等高级功能。
4.1.1. Container Storage
cache-service
和 datagrid-service
容器在 /opt/datagrid/standalone/data
上挂载了存储卷。
卷大小为 1GB。您可以使用 datagrid-service
来调整大小,但不使用 cache-service
。
- ephemeral 或 Permanent
- 当您远程创建缓存时,您可以控制它们是否为临时还是永久的。永久缓存会在容器重启后保留,因为缓存定义保存在存储卷中。默认缓存始终是永久的。
- persistent
-
datagrid-service
可让您持久的缓存条目和索引到存储卷。如果您需要更多的数据保证,您可以选择性地通过缓存存储保留基于外部文件的存储或数据库。
4.1.2. 分区处理
默认情况下,OpenShift 服务的 Data Grid 使用分区处理配置来确保数据一致性。
-
DENY_READ_WRITES
冲突解决策略,该策略拒绝缓存条目的读写操作,除非网段的所有所有者都位于同一分区。 -
REMOVE_ALL
merge 策略,在检测到冲突时从缓存中删除条目。
只有在数据在集群间复制时,才会应用网络分区。
4.1.3. 确认服务可用性
用于 cache-service
和 datagrid-service
的模板可在 openshift
命名空间中的 Red Hat OpenShift Online 和 Red Hat OpenShift Container Platform 中找到。
运行以下命令,以验证服务模板是否可用:
$ oc get templates -n openshift | grep 'cache-service\|datagrid-service'
4.1.3.1. 导入模板
如有必要,导入 cache-service
和 datagrid-service
,如下所示:
- 登录您的 OpenShift 集群。
导入服务模板:
$ for resource in cache-service-template.yaml \ datagrid-service-template.yaml do oc create -n openshift -f \ https://raw.githubusercontent.com/jboss-container-images/jboss-datagrid-7-openshift-image/7.3-v1.9/services/${resource} done
提示使用
oc replace --force
覆盖现有模板。