RGW endpoint绑定多域名

RGW endpoint绑定多域名

RGW多域名配置说明

  • L版本的ceph.conf中的rgw_dns_name字段只支持单个域名,如果你使用下面的配置格式都是错误的 rgw_dns_name = demo1.s3.cephbook.com,demo2.s3.cephbook.com or rgw_dns_name = demo1.s3.cephbook.com demo2.s3.cephbook.com
  • 多个域名的配置需要将其他域名加入到zonegroup配置的hostnames列表中

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的元数据和数据同步来实现“多活”,此时就会用到多个域名的配置。域名的规划如下:

  • 客户端通过使用唯一的s3.cephbook.com与整个RGW后端服务进行通信,从而避免在故障发生时需要在多个endpoint之间进行切换。
  • 客户端对s3.cephbook.com的解析,可以采用智能DNS解析系统,根据用户IP解析到最近的zone入口IP。
  • 后端zone发生故障的情况下,通过切换s3.cephbook.com对应的后端入口IP去实现故障入口的快速切换。(这里面有很多细节,主要考虑TTL的刷新影响。)
  • zone1和zone2在进行元数据以数据的同步时,使用单独的域名zone1.cephbook.com和zone2.cephbook.com,从而实现集群内部同步流量与正常的业务流量的分流治理。

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,干货满满,专业老司机教你搞"对象"存储!

本文分享自微信公众号 - Ceph对象存储方案(cephbook)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

shutdown & reboot & last

23630
来自专栏Petrichor的专栏

OJ术语: AC、WA、TLE、OLE、MLE、RE、PE、CE

51610
来自专栏Petrichor的专栏

命名法 的 简洁归纳表

11040
来自专栏Petrichor的专栏

像素、分辨率 区别 & 介绍

举个例子,比如一张图片由100×100个像点组成,那么这张图片的像素数就是1万。但是,如果这张图片边长为1英寸,那么其分辨率就是100点/英寸,也就是100dp...

22720
来自专栏Petrichor的专栏

个人理解:import scipy语句 为什么不能导入 scipy.misc.imsave 模块

1.4K30
来自专栏Petrichor的专栏

Dataset 列表:机器学习研究

In computer vision, face images have been used extensively to develop face recog...

86610
来自专栏Petrichor的专栏

requirements.txt 介绍 & 快捷生成

  requirements.txt 文件 里面记录了当前程序的所有依赖包及其精确版本号。

16010
来自专栏Petrichor的专栏

主机:各线介绍 & 问题速查表

  在独立组装过八九台主机,遇坑无数后,我写下了《如何自己组装电脑(从配件到整机)来省下一大笔钱》以及《组装台式机遇坑总结》这两篇技术博客。

11910
来自专栏Petrichor的专栏

显示器 设置选项 解析

12110
来自专栏逆向技术

win32程序之窗口程序,以及消息机制

  通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标点击会...

14230

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励