Ceph集群multi-size设置:此实验是在两个单节点集群上。

官方文档:

https://docs.ceph.com/docs/nautilus/radosgw/multisite/


z1节点:

创建realm:

radosgw-admin -c ceph1 realm create --rgw-realm=xzxj --default

创建zonegroup:

radosgw-admin --cluster ceph1 zonegroup create --rgw-zonegroup=all --endpoints=http://ceph02.local:8080 --rgw-realm=xzxj --master --default

创建zone:

radosgw-admin --cluster ceph1 zone create --rgw-zonegroup=all --rgw-zone=z1 --endpoints=http://ceph02.local:8080 --default

创建系统账号:用于区域之间同步数据。

radosgw-admin --cluster ceph1 user create --uid="sync-user" --display-name="sync user" --system
...
{
"user": "sync-user",
"access_key": "PKZL4DU5XRRSZ766M9JV",
"secret_key": "UPf2DLZQi8tDf07TgCVX8IM81v2hbjL6ZX3BK4D2"
}
...

设置同步数据的access_key和secret:

radosgw-admin --cluster ceph1 zone modify --rgw-zone=z1 --access-key=PKZL4DU5XRRSZ766M9JV --secret=UPf2DLZQi8tDf07TgCVX8IM81v2hbjL6ZX3BK4D2

更新period:

radosgw-admin --cluster ceph1 period update --commit

RGW配置:

[client.rgw.ceph02]
host = ceph02
keyring=/etc/ceph/ceph.client.radosgw.keyring
log file=/var/log/radosgw/client.radosgw.gateway.log
rgw_frontends = civetweb port=8080
rgw_zone=z1

启动服务:启动后再重启一下,更新下数据。

systemctl start ceph-radosgw@rgw.`hostname -s`
systemctl restart ceph-radosgw@rgw.`hostname -s`


z2节点:

下面命令用到的access-key和secret是在上面master节点生成的。遇到premission denied将主节点的rgw重启即可。

拉取组节点信息:

radosgw-admin --cluster ceph2 realm pull --url=http://ceph02.local:8080 --access-key=PKZL4DU5XRRSZ766M9JV --secret=UPf2DLZQi8tDf07TgCVX8IM81v2hbjL6ZX3BK4D2
radosgw-admin --cluster ceph2 period pull --url=http://ceph02.local:8080 --access-key=PKZL4DU5XRRSZ766M9JV --secret=UPf2DLZQi8tDf07TgCVX8IM81v2hbjL6ZX3BK4D2

创建区域2:

radosgw-admin --cluster ceph2 zone create --rgw-zonegroup=all --rgw-zone=z2 --endpoints=http://ceph03.local:8080 --access-key=PKZL4DU5XRRSZ766M9JV --secret=UPf2DLZQi8tDf07TgCVX8IM81v2hbjL6ZX3BK4D2
radosgw-admin --cluster ceph2 period update --commit

RGW配置:

[client.rgw.ceph03]
host = ceph03
keyring=/etc/ceph/ceph.client.radosgw.keyring
log file=/var/log/radosgw/client.radosgw.gateway.log
rgw_frontends = civetweb port=8080
rgw_zone=z2

启动rgw:启动后再重启一次,否者可能会因为数据未跟新而遇到permission denied

systemctl start ceph-radosgw@rgw.`hostname -s`
systemctl restart ceph-radosgw@rgw.`hostname -s`

查看集群同步状态:

~]# radosgw-admin sync status
          realm 62bef932-d09f-432e-8a7d-714e6ca67561 (xzxj)
      zonegroup 3d26b158-0316-4694-a474-dbbc6117d2a4 (all)
           zone 338c707d-3eed-4e4b-a396-d4bb0f11d1e6 (z1)
  metadata sync no sync (zone is master)
      data sync source: 89574cd1-225c-48b8-a39e-12068fdcc98b (z2)
                        syncing
                        full sync: 0/128 shards
                        incremental sync: 128/128 shards
                        data is caught up with source

~]# radosgw-admin sync status
          realm 62bef932-d09f-432e-8a7d-714e6ca67561 (xzxj)
      zonegroup 3d26b158-0316-4694-a474-dbbc6117d2a4 (all)
           zone 89574cd1-225c-48b8-a39e-12068fdcc98b (z2)
  metadata sync syncing
                full sync: 0/64 shards
                incremental sync: 64/64 shards
                metadata is caught up with master
      data sync source: 338c707d-3eed-4e4b-a396-d4bb0f11d1e6 (z1)
                        syncing
                        full sync: 0/128 shards
                        incremental sync: 128/128 shards
                        data is caught up with source

在master上创建账号在从节点上查看:

[root@ceph02 ~]# radosgw-admin --cluster ceph1 user create --uid="candon" --display-name="First User"
[root@ceph03 ~]# radosgw-admin --cluster ceph2 user list
[
    "sync-user",
    "candon"
]


参考文档:

bbs.huaweicloud.com/blogs/169196

一些管理命令:

# 查看 zone
radosgw-admin zone list
# 删除 zone
radosgw-admin zone delete --rgw-zone=wuhan1
# 查看 zonegroup
radosgw-admin zonegroup list
# 删除 zonegroup
radosgw-admin zonegroup delete --rgw-zonegroup=wuhan
# 查看 realm
radosgw-admin realm list
# 删除 realm
radosgw-admin realm delete --rgw-realm=mye
# 查看同步状态
radosgw-admin sync status


故障转义failover:

将z2设为master:

radosgw-admin --cluster ceph2 zone modify --rgw-zone=z2 --master --default
radosgw-admin --cluster ceph2 period update --commit

灾难恢复:

原master zone恢复后,如果要切换为原来的zone为master,执行下面的命令:

radosgw-admin --cluster ceph1 realm pull --url=http://ceph02.local:8080 --access-key=ZA4TXA65C5TGCPX4B8V6 --secret=BEYnz6QdAvTbt36L7FhwGF2F5rHWeH66cb0eSO24
radosgw-admin --cluster ceph1 zone modify --rgw-zone=z1 --master --default
radosgw-admin --cluster ceph1 period update --commit

然后在恢复的master节点上重启各个gateway服务。