Rgw Multisite异地多活的方案实践

一. multisite 的结构


zone: 对应于一个独立的集群,由一组 RGW 对外提供服务。
zonegroup: 每个 zonegroup 可以对应多个zone,zone 之间同步数据和元数据;
realm:每个realm都是独立的命名空间,可以包含多个 zonegroup,zonegroup 之间同步元数据

整体结构如下,引用redhat的文档

multisite

  • master zone 和 secondly zone 有两种模式:active-activeactive-passive。active-active 模式下master和slave 都可以读写,数据会自动同步, active-passive 下,只能在master 写入。

二. 搭建multisite 集群

这里尝试搭建,1个relam ,1个 zonegroup, 2个zone(master slave)的多活架构。

整个集群架构如下

realm zonegroup zone rgw endpoint 主机名
movies gz master: gz-zone1 http://192.168.106.12:7480 df-vm-02
movies gz slave: gz-zone2 http://192.168.106.15:7480 df-vm-05

测试客户端

主机 客户端程序
df-vm-01 s3cmd

1. 在master zone 集群中创建realm, zonegroup 和 master zone
2. 创建一个secondly zone

这里有个很重要的事情,就是元数据类的操作必须在master zone中执行,例如创建bucket 或者 用户,如果在secondly zone 执行,会被重定向到master zone,如果master zone 故障,操作会失败

3.查看sync的状态

三. 总结

multisite实现了我们的集群做异地多活的功能,在zone中配置的endpoint 可以用来同步数据,生产环境中,为了保证同步的效率,需要注意两点