rgw multisite 扩展已有集群
1. 说明
本篇文章介绍两个已有集群融合后的数据同步
上篇文章 rgw multisite写了关于两个集群之间zone的数据同步部署和测试。其中zone1,zone2之间满足条件:
- zone1: 新集群 && zone2: 新集群
- zone1: 已有集群 && zone2: 新集群
2. 现有的两个集群环境说明
这里有两个ceph集群,其中zone1将作为master, zone2将作为slave:
- 集群1包括:zone-1, rgw-1, rgw-2
- 集群2包括:zone-2, rgw-3, rgw-4
其中,rgw-1 和 rgw-3是两个集群用于sync的网关。rgw-2 和 rgw-4是两个集群各自对外提供服务的网关,具体信息如下:
rgw name | address |
---|---|
rgw-1 | 192.168.2.27:80 |
rgw-2 | 192.168.2.40:80 |
rgw-3 | 192.168.2.166:80 |
rgw-4 | 192.168.2.167:80 |
3.multisite 集群搭建
multisite集群模型如下:
3.1 创建system user,并更新zone1
如果本zone已经有系统级用户, 那么可以跳过3.1, 直接开始3.2操作
- [1] 创建同步sync的系统级用户
radosgw-admin user create --uid="sync-admin" --display-name="sync-admin" --system
- [2] 更新zone的key信息
access-key 和 secret 填写的是上一步创建的系统级用户的access-key和secret-key
radosgw-admin zone modify --rgw-zone=zone1 --access-key=xxx --secret=xxxx
- [3] 更新period
radosgw-admin period update --commit
- [4] 更新ceph.conf, 找到对应的rgw配置区,并重启rgw实例
[client.rgw.dev-1]
rgw zone = zone1
systemctl list-units|grep rgw
systemctl restart ceph-rgw@.xxxxx.service
3.2 操作zone2
- [1] 从master zone拉取realm配置信息
radosgw-admin realm pull --url=http://192.168.2.27:80 --access-key=xxxxxxxx --secret=xxxxxxxx --rgw-realm=petrel
使用的access-key和secret就是同步的master中的系统用户的信息
- [2] 设置realm为default
radosgw-admin realm default --rgw-realm=petrel
- [3] 从master zone拉取period配置信息
radosgw-admin period pull --url=http://192.168.2.27:80 --access-key=xxxxxx --secret=xxxxxxxxx --rgw-realm=petrel
- [4] 将slave zone添加到zonegroup:petreloss中
radosgw-admin zonegroup add --rgw-zonegroup=petreloss --rgw-zone=zone2
- [5] 配置slave zone的endpoints, access-key, secret-key
radosgw-admin zone modify --rgw-zone=zone2 --endpoints=http://192.168.2.166:80 --access-key=xxx --secret=xxx
- [6] 更新period
radosgw-admin period update --commit
- [7] 更新rgw配置,重启rgw
[client.rgw.dev-4]
rgw zone = zone2
systemctl list-units|grep rgw
systemctl restart ceph-rgw@.xxxxx.service
4 测试结果
做完以上部署后,可以直接观察原master zone/slave zone中的用户、bucket、数据文件的同步情况。 总结:
- master zone中的原有数据文件将会同步到 slave zone中
- master zone中的原有用户信息将会同步到 slave zone中
- master zone中的原有bucket信息将会同步到 slave zone 中
- slave zone中的原有数据文件、用户、bucket将不会同步到 master zone中
5 问题发现
再做扩展已有集群的同步测试中发现:
master zone/slave zone的 placement 不同将不能进行数据同步,即:数据同步必须在相同的 placement-target中