To configure virtual hosted buckets, you can either set rgw_dns_name = cname.domain.com in ceph.conf, or add cname.domain.com to the list of hostnames in your zonegroup configuration. See Ceph Object Gateway - Multisite Configuration for more on zonegroups.
参考:https://github.com/ceph/ceph/blob/d038e1da7a6c9b31ba4463b8ebedb9908981a55e/doc/radosgw/s3/commons.rst#bucket-and-host-name
https://github.com/ceph/ceph/blob/2a72d893d20a8459c0a1695b57c51727b20d2dae/src/rgw/rgw_rest.cc#L204
void rgw_rest_init(CephContext *cct, RGWRados *store, RGWZoneGroup& zone_group)
{
...
hostnames_set.insert(cct->_conf->rgw_dns_name);
hostnames_set.insert(zone_group.hostnames.begin(), zone_group.hostnames.end());
hostnames_set.erase(""); // filter out empty hostnames
ldout(cct, 20) << "RGW hostnames: " << hostnames_set << dendl;
/* TODO: We should have a sanity check that no hostname matches the end of
* any other hostname, otherwise we will get ambigious results from
* rgw_find_host_in_domains.
* Eg:
* Hostnames: [A, B.A]
* Inputs: [Z.A, X.B.A]
* Z.A clearly splits to subdomain=Z, domain=Z
* X.B.A ambigously splits to both {X, B.A} and {X.B, A}
*/
也就是说RGW的域名数量=rgw_dns_name+zone_group.hostnames
在multisite场景中,一般都是单个zonegroup下挂有多个zone的模型,通过master zone与slave zone的元数据和数据同步来实现“多活”,此时就会用到多个域名的配置。域名的规划如下:
ceph.conf 配置
[client.zone2]
host = demo
keyring = /var/lib/ceph/radosgw/ceph-zone2/keyring
log file = /var/log/ceph/radosgw.zone2.log
rgw_zone=zone2
rgw dns name = s3.cephbook.com
......
zonegroup配置
[root@demo supdev]# radosgw-admin zonegroup get
{
"id": "68f1dcf5-0470-4a48-8cd2-51c837a2cafb",
"name": "cn-bj",
"api_name": "cn-bj",
"is_master": "true",
"endpoints": [
"http://s3.cephbook.com:80"
],
"hostnames": ["zone2.cephbook.com","zone1.cephbook.com"],
"hostnames_s3website": [],
"master_zone": "9563e299-0675-4725-8032-39ef55fa7fce",
"zones": [
{
"id": "9563e299-0675-4725-8032-39ef55fa7fce",
"name": "zone1",
"endpoints": [
"http://zone1.cephbook.com:80"
],
"log_meta": "true",
"log_data": "true",
"bucket_index_max_shards": 16,
"read_only": "false",
"tier_type": "",
"sync_from_all": "true",
"sync_from": []
},
{
"id": "afd874cd-f976-4007-a77c-be6fca298b71",
"name": "zone2",
"endpoints": [
"http://zone2.cephbook.com:80"
],
"log_meta": "true",
"log_data": "true",
"bucket_index_max_shards": 16,
"read_only": "false",
"tier_type": "",
"sync_from_all": "true",
"sync_from": []
}
],
"placement_targets": [
{
"name": "default-placement",
"tags": []
}
],
"default_placement": "default-placement",
"realm_id": "6a0ab888-f4e9-4b7b-9b52-cc957b9b2a8c"
}
欢迎订阅本公众号cephbook,干货满满,专业老司机教你搞"对象"存储!