第 5 章 多站点配置和管理
作为存储管理员,您可以为各种用例配置和管理多个 Ceph 对象网关。您可以了解在灾难恢复和故障转移事件期间要做什么。另外,您可以在多站点 Ceph 对象网关环境中了解更多有关 realms、zone 和 syncing 策略的信息。
单一区配置通常由一个 zone group 包含一个 zone,以及一个或多个 ceph-radosgw
实例,您可以在实例之间平衡网关客户端请求。在单一区域配置中,通常多个网关实例指向单个 Ceph 存储集群。但是,红帽支持 Ceph 对象网关的几个多站点配置选项:
-
多区: 更高级的配置由一个 zone group 和多个 zone 组成,每个 zone 包含一个或多个
ceph-radosgw
实例。每个区域都由自己的 Ceph 存储集群支持。zone group 中的多个区域为 zone group 提供灾难恢复,当其中一个区遇到重大故障时。每个区域都处于活跃状态,并可能会接收写入操作。除了灾难恢复外,多个活动区域也可能充当内容交付网络的基础。 - multi-zone-group: Formerly called 'regions',Ceph 对象网关也可以支持多个 zone group,每个 zone group 具有多个 zone。存储在同一域中的 zone group 的对象共享全局命名空间,确保 zone group 和 zone 之间的唯一对象 ID。
- 多个 Realms: Ceph 对象网关支持域的概念,可以是单个 zone group 或多个 zone group,以及域的全局唯一命名空间。多个域提供了支持大量配置和命名空间的功能。
先决条件
- 一个正常运行的 Red Hat Ceph Storage 集群。
- 部署 Ceph 对象网关软件。
5.1. 要求和假设
多站点配置至少需要两个 Ceph 存储集群,以及至少两个 Ceph 对象网关实例,每个 Ceph 存储集群一个。
本指南假定在地理上独立位置至少有两个 Ceph 存储集群,但配置可以在同一物理站点上工作。本指南还假设四个 Ceph 对象网关服务器分别名为 rgw1
、rgw
2、rgw3
和 rgw4
。
多站点配置需要一个 master zone group 和 master zone。此外,每个 zone group 需要 master zone。zone group 可能具有一个或多个次要或非 master 区域。
在为多站点规划网络注意事项时,务必要了解多站点同步网络上观察的关系带宽和延迟,以及客户端与与次要站点同步对象的当前同步状态直接关联率。Red Hat Ceph Storage 多站点集群之间的网络链接必须能够处理到主集群,以便在次要站点上保持有效的恢复时间。多站点同步是异步的,其中一个限制是同步网关可在链接间处理数据的速率。对于每个客户端网关,每个 8 TB 或累积接收数据,例如,要查看网络互连速度的示例可以是 1GbE 或数据中心间连接。因此,如果您复制到两个其他站点,每天 16 TB,则需要 6 GbE 专用带宽用于多站点复制。
红帽还推荐使用私有以太网或 Dense wavelength-division 多路复位(DWDM)作为互联网的 VPN 并不理想,因为产生的额外开销并不是一个理想的选择。
realm 的 master zone group 中的 master zone 负责存储 realm 元数据的主副本,包括用户、配额和 bucket (由 radosgw-admin
CLI 创建)。此元数据会自动同步到 second zone 和 second zone group。通过 radosgw-admin
CLI 执行的元数据操作必须在 master zone group 的 master zone 中的主机上执行,以确保它们与 second zone group 和 zone 同步。目前,可以对二级域和域组执行元数据操作,但不建议这么做,因为它们不会被同步,从而导致元数据碎片。
对于多站点中的新 Ceph 对象网关部署,需要大约 20 分钟时间才能将元数据操作同步到次要站点。
在以下示例中,rgw1
主机将充当 master zone group 的 master zone; rgw2
主机将充当 master zone group 的 second zone; rgw3
主机将充当 second zone group 的 master zone; rgw4
主机将充当 second zone group 的 second zone。
红帽建议使用负载均衡器和三个 Ceph 对象网关守护进程与多站点同步端点。对于多站点配置中的非同步 Ceph 对象网关节点,这些节点专用于通过负载均衡器的客户端 I/O 操作,请运行 ceph config set client.rgw.CLIENT_NODE rgw_run_sync_thread false
命令,以防止它们执行同步操作,然后重启 Ceph 对象网关。
以下是 HAProxy 用于同步网关的典型配置文件:
示例
[root@host01 ~]# cat ./haproxy.cfg global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 7000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 30s timeout server 30s timeout http-keep-alive 10s timeout check 10s timeout client-fin 1s timeout server-fin 1s maxconn 6000 listen stats bind 0.0.0.0:1936 mode http log global maxconn 256 clitimeout 10m srvtimeout 10m contimeout 10m timeout queue 10m # JTH start stats enable stats hide-version stats refresh 30s stats show-node ## stats auth admin:password stats uri /haproxy?stats stats admin if TRUE frontend main bind *:5000 acl url_static path_beg -i /static /images /javascript /stylesheets acl url_static path_end -i .jpg .gif .png .css .js use_backend static if url_static default_backend app maxconn 6000 backend static balance roundrobin fullconn 6000 server app8 host01:8080 check maxconn 2000 server app9 host02:8080 check maxconn 2000 server app10 host03:8080 check maxconn 2000 backend app balance roundrobin fullconn 6000 server app8 host01:8080 check maxconn 2000 server app9 host02:8080 check maxconn 2000 server app10 host03:8080 check maxconn 2000