16.2. 地理复制要求和约束
- 在地理复制设置中,Red Hat Quay 要求所有区域都可以读取和写入所有其他区域的对象存储。对象存储必须可以被所有其他区域访问。
- 如果一个地理复制站点的对象存储系统失败,该站点的 Red Hat Quay 部署必须被关闭,以便客户端由全局负载均衡器重定向到具有完整存储系统的剩余站点。否则,客户端将遇到拉取和推送失败。
- Red Hat Quay 没有内部感知连接的对象存储系统的健康状态或可用性。用户必须配置全局负载均衡器(LB)来监控分布式系统的健康状况,并根据存储状态将流量路由到不同的站点。
-
要检查 geo-replication 部署的状态,您必须使用
/health/endtoend检查点,该检查点用于全局健康监控。您必须使用/health/endtoend端点手动配置重定向。/health/instance端点仅检查本地实例健康状况。 - 如果一个站点的对象存储系统不可用,则其余站点或站点没有自动重定向到剩余的存储系统或系统。
- 地理复制(geo-replication)是异步的。如果一个站点永久丢失,则已存储在该站点的对象存储系统中,但在失败时还没有复制到剩余的站点的数据会丢失。
单个数据库,因此所有区域都共享所有元数据和 Red Hat Quay 配置。
地理复制不会复制数据库。如果出现停机,启用了地理复制功能的 Red Hat Quay 不会切换到另一个数据库。
- 单个 Redis 缓存在整个 Red Hat Quay 设置间共享,需要可以被所有 Red Hat Quay pod 访问。
-
所有区域应当使用相同的配置,但存储后端除外,这可以使用
QUAY_DISTRIBUTED_STORAGE_PREFERENCE环境变量明确进行配置。 - 地理复制需要每个区域中的对象存储。它不适用于本地存储。
- 每个区域必须能够访问每个区域中的每个存储引擎,这需要一个网络路径。
- 或者,可以使用存储代理选项。
- 整个存储后端(如所有 blob)被复制。相反,存储库镜像可以限制在存储库或镜像上。
- 所有 Red Hat Quay 实例都必须共享相同的入口点,通常是通过负载均衡器。
- 所有 Red Hat Quay 实例都必须具有相同的超级用户集合,因为它们在通用配置文件中定义。
在地理复制环境中,您的 Clair 配置可以设置为
unmanaged。非受管 Clair 数据库允许 Red Hat Quay Operator 在跨地复制环境中工作,其中多个 Operator 实例必须与同一数据库通信。如需更多信息,请参阅高级 Clair 配置。如果 Clair 配置保持
管理,则必须检索由 Operator 部署的 Clair 实例的配置文件。如需更多信息,请参阅 为 OpenShift Container Platform 上的 Clair 部署检索并解码 Clair 配置 secret。- geo-Replication 需要 SSL/TLS 证书和密钥。如需更多信息,请参阅 * Geo-Replication 需要 SSL/TLS 证书和密钥。如需更多信息,请参阅使用 SSL/TLS 证书部署概念验证。
如果无法满足上述要求,您应该使用两个或多个 Red Hat Quay 部署,并利用存储库镜像功能。
16.2.1. 为独立 Red Hat Quay 启用存储复制 复制链接链接已复制到粘贴板!
使用以下步骤在 Red Hat Quay 上启用存储复制。
流程
更新
config.yaml文件,使其包含要复制数据的存储引擎。您必须列出所有要使用的存储引擎:# ... FEATURE_STORAGE_REPLICATION: true # ... DISTRIBUTED_STORAGE_CONFIG: usstorage: - RHOCSStorage - access_key: <access_key> bucket_name: <example_bucket> hostname: my.noobaa.hostname is_secure: false port: "443" secret_key: <secret_key> storage_path: /datastorage/registry eustorage: - S3Storage - host: s3.amazon.com port: "443" s3_access_key: <access_key> s3_bucket: <example bucket> s3_secret_key: <secret_key> storage_path: /datastorage/registry DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: [] DISTRIBUTED_STORAGE_PREFERENCE: - usstorage - eustorage # ...可选。如果需要完成所有镜像到所有存储引擎,您可以通过手动设置
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS字段来手动将镜像复制到存储引擎。这样可确保所有镜像都复制到该存储引擎中。例如:# ... DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: - usstorage - eustorage # ...注意要启用按命名空间复制,请联络 Red Hat Quay 支持。
在为异地复制添加存储 并启用 Replicate 到存储引擎 后,您必须在所有存储中同步现有镜像数据。要做到这一点,您必须运行以下命令来在容器中执行:
$ podman exec -it <container_id>要在添加新存储后同步内容,请输入以下命令:
# scl enable python27 bash# python -m util.backfillreplication注意这是添加新存储后要同步内容的一个时间操作。