searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

ZOS多站点概述

2023-01-13 09:50:56
94
0

概念

Realm

一个realm代表了全局唯一的命名空间,这个命名空间由一个或者多个zonegroup,zonegroup可以包含一个或多个zone,zone里面包含了存放桶,数据对象等。

每个realm都有与之对应的period,每个period代表了zonegroup的状态和zone的配置。正在修改了zonegroup或者zone之后,都要对period执行提交并更新这样才会生效。

ZoneGroup

单个数据中心一般由一个zonegroup组成,在之前较老的版本中,zonegroup又被称为region,ZOS支持多个zonegroup,每个zonegroup由一个或者多个zone组成。

Zone

通常的实践来看,一个zone代表一个或者一组ZOS实例,每个zone都有一个Ceph集群提供数据支撑。多站点的复制和容灾能力在Zone之间进行。元数据只能在同一个zonegroup的主zone和从zone之间同步,而数据可以在zonegroup的zone之间同步,即就是说数据同步无需划分主从。

从角色上可以将zonegroup中的zone划分为主zone和从zone,它们有两种模式,active-active和active-passive。在active-active模式下,主/从zone都可以读写,数据会自动同步;而在active-passive模式下,就只能在主zone上写入,从zone则只提供只读能力。

原理

总体来看,在多站点架构中,存在一个主节点,多个备节点。

同一个zonegroup下,zone之间的数据同步为多主模式,可以同时写;元数据同步为主从模式,由主zone同步到从zone,保证元数据一致性。

对于zonegroup内的数据同步,zone之间可以主动发送数据变更通知,接收到通知的zone会主动去拉取更新的数据到本地。同时,zone也会在一定时间间隔内发起轮询,轮询日志更新,当发现有更新后,拉取到本地。对于元数据同步,因为只能是主zone同步到从zone,因此只能是主zone通知从zone,或者主动轮询主zone上的元数据变更日志,到达同步元数据更新的目的。

 

实践

创建Multisite

首先需要准备两个集群:ceph01和ceph02。在这两个集群上分别创建好ZOS实例。以下动手实践将通过配置multisite,验证同步功能。

以ceph01作为主集群:

在主集群创建一个名为realm01的realm:

# radosgw-admin realm create --rgw-realm=realm01 --default

在此realm中,创建一个zonegroup,并将其设置为master和default:

# radosgw-admin zonegroup create --rgw-zonegroup=cn \

--endpoints=http://test.ceph01.com --rgw-realm=realm01 --master --defualt

创建一个zone,作为主zone:

# radosgw-admin zone create --rgw-zonegroup=cn --rgw-zone=masterzone \

--endpoints=http://test.ceph01.com --master --default

更新period,使得上述配置生效:

# radosgw-admin period update --commit

创建同步用户:

# radosgw-admin user create --uid=”syncuser” --display-name=”sync user” \

--access-key=testaccess --secret-key=testkey--system

更新materzone的key:

# radosgw-admin zone modify --rgw-zone=masterzone --access-key=testaccess \

--secret-key=testkey

更新period,使得上述配置生效:

# radosgw-admin period update --commit

修改ZOS配置,新增:rgw_zone=masterzone并重启ZOS服务。

 

以ceph02作为备集群:

从ceph01上拉取realm配置:

# radosgw-admin realm pull --url=http://test.ceph01.com --access=testaccess \

--secret=testkey

拉取period:

# radosgw-admin period pull --url=http://test.ceph01.com --access=testaccess \

--secret=testkey

创建备zone:

#radosgw-admin zone create --rgw-zonegroup=cn --rgw-zone=secondaryzone \

--endpoints=http://test.ceph02.com --access-key=testaccess --secret-key=testkey

修改ceph02上的zos配置,增加rgw_zone=secondaryzone并重启。

验证

查看同步状态

# radosgw-admin sync status

验证用户同步

在masterzone上创建用户,在secondaryzone上查看:

# radosgw-admin user create --uid=testuser --display-name=”test user” \

--access-key=testuser --secret=testkey

查看用户:

#radosgw-admin user list

3.1在masterzone上,通过testuser用户创建名为bucket1的桶。

在secondaryzone上查看。

3.2 在secondaryzone上,同样通过testuser用户创建名为bucket2的桶。

在masterzone上查看。

 

社区进展

从Ceph V16 Pacific版本开始,RGW支持基于策略的多站点同步。在开始同步之前,可以设置Zone级别和Bucket级别的同步策略,同步策略的设置中可以设置诸如目的zone,目的bucket,同步对象的tag或者prefix过滤,同步用户过滤等内容,已达到更加细粒度的控制。

0条评论
0 / 1000
c39n
2文章数
0粉丝数
c39n
2 文章 | 0 粉丝
c39n
2文章数
0粉丝数
c39n
2 文章 | 0 粉丝
原创

ZOS多站点概述

2023-01-13 09:50:56
94
0

概念

Realm

一个realm代表了全局唯一的命名空间,这个命名空间由一个或者多个zonegroup,zonegroup可以包含一个或多个zone,zone里面包含了存放桶,数据对象等。

每个realm都有与之对应的period,每个period代表了zonegroup的状态和zone的配置。正在修改了zonegroup或者zone之后,都要对period执行提交并更新这样才会生效。

ZoneGroup

单个数据中心一般由一个zonegroup组成,在之前较老的版本中,zonegroup又被称为region,ZOS支持多个zonegroup,每个zonegroup由一个或者多个zone组成。

Zone

通常的实践来看,一个zone代表一个或者一组ZOS实例,每个zone都有一个Ceph集群提供数据支撑。多站点的复制和容灾能力在Zone之间进行。元数据只能在同一个zonegroup的主zone和从zone之间同步,而数据可以在zonegroup的zone之间同步,即就是说数据同步无需划分主从。

从角色上可以将zonegroup中的zone划分为主zone和从zone,它们有两种模式,active-active和active-passive。在active-active模式下,主/从zone都可以读写,数据会自动同步;而在active-passive模式下,就只能在主zone上写入,从zone则只提供只读能力。

原理

总体来看,在多站点架构中,存在一个主节点,多个备节点。

同一个zonegroup下,zone之间的数据同步为多主模式,可以同时写;元数据同步为主从模式,由主zone同步到从zone,保证元数据一致性。

对于zonegroup内的数据同步,zone之间可以主动发送数据变更通知,接收到通知的zone会主动去拉取更新的数据到本地。同时,zone也会在一定时间间隔内发起轮询,轮询日志更新,当发现有更新后,拉取到本地。对于元数据同步,因为只能是主zone同步到从zone,因此只能是主zone通知从zone,或者主动轮询主zone上的元数据变更日志,到达同步元数据更新的目的。

 

实践

创建Multisite

首先需要准备两个集群:ceph01和ceph02。在这两个集群上分别创建好ZOS实例。以下动手实践将通过配置multisite,验证同步功能。

以ceph01作为主集群:

在主集群创建一个名为realm01的realm:

# radosgw-admin realm create --rgw-realm=realm01 --default

在此realm中,创建一个zonegroup,并将其设置为master和default:

# radosgw-admin zonegroup create --rgw-zonegroup=cn \

--endpoints=http://test.ceph01.com --rgw-realm=realm01 --master --defualt

创建一个zone,作为主zone:

# radosgw-admin zone create --rgw-zonegroup=cn --rgw-zone=masterzone \

--endpoints=http://test.ceph01.com --master --default

更新period,使得上述配置生效:

# radosgw-admin period update --commit

创建同步用户:

# radosgw-admin user create --uid=”syncuser” --display-name=”sync user” \

--access-key=testaccess --secret-key=testkey--system

更新materzone的key:

# radosgw-admin zone modify --rgw-zone=masterzone --access-key=testaccess \

--secret-key=testkey

更新period,使得上述配置生效:

# radosgw-admin period update --commit

修改ZOS配置,新增:rgw_zone=masterzone并重启ZOS服务。

 

以ceph02作为备集群:

从ceph01上拉取realm配置:

# radosgw-admin realm pull --url=http://test.ceph01.com --access=testaccess \

--secret=testkey

拉取period:

# radosgw-admin period pull --url=http://test.ceph01.com --access=testaccess \

--secret=testkey

创建备zone:

#radosgw-admin zone create --rgw-zonegroup=cn --rgw-zone=secondaryzone \

--endpoints=http://test.ceph02.com --access-key=testaccess --secret-key=testkey

修改ceph02上的zos配置,增加rgw_zone=secondaryzone并重启。

验证

查看同步状态

# radosgw-admin sync status

验证用户同步

在masterzone上创建用户,在secondaryzone上查看:

# radosgw-admin user create --uid=testuser --display-name=”test user” \

--access-key=testuser --secret=testkey

查看用户:

#radosgw-admin user list

3.1在masterzone上,通过testuser用户创建名为bucket1的桶。

在secondaryzone上查看。

3.2 在secondaryzone上,同样通过testuser用户创建名为bucket2的桶。

在masterzone上查看。

 

社区进展

从Ceph V16 Pacific版本开始,RGW支持基于策略的多站点同步。在开始同步之前,可以设置Zone级别和Bucket级别的同步策略,同步策略的设置中可以设置诸如目的zone,目的bucket,同步对象的tag或者prefix过滤,同步用户过滤等内容,已达到更加细粒度的控制。

文章来自个人专栏
ZOS对象存储
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0