4.2. 在 DNS 中添加通配符

您可以将通配符(如 hostname)添加到 DNS 服务器的 DNS 记录中。

前提条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装了 Ceph 对象网关.
  • 对管理节点的根级别访问权限。

流程

  1. 要将 Ceph 与 S3-style 子域一起使用,请向 ceph- ResourceOverride 守护进程用来解析域名的 DNS 服务器的 DNS 记录中添加通配符:

    语法

    bucket-name.domain-name.com

    对于 dnsmasq,使用主机名前的句点(.)添加以下地址设置:

    语法

    address=/.HOSTNAME_OR_FQDN/HOST_IP_ADDRESS

    示例

    address=/.gateway-host01/192.168.122.75

    对于 bind,在 DNS 记录中添加通配符:

    示例

    $TTL    604800
    @       IN      SOA     gateway-host01. root.gateway-host01. (
                                  2         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      gateway-host01.
    @       IN      A       192.168.122.113
    *       IN      CNAME   @

  2. 重启 DNS 服务器并使用子域对服务器发出 ping 命令,以确保 ceph-radosgw 守护进程可以处理子域请求:

    语法

    ping mybucket.HOSTNAME

    示例

    [root@host01 ~]# ping mybucket.gateway-host01

  3. 如果 DNS 服务器位于本地机器上,则可能需要通过为本地机器添加 nameserver 条目来修改 /etc/resolv.conf
  4. 在 Ceph 对象网关 zone group 中添加主机名:

    1. 获取 zone group:

      语法

      radosgw-admin zonegroup get --rgw-zonegroup=ZONEGROUP_NAME > zonegroup.json

      示例

      [ceph: root@host01 /]# radosgw-admin zonegroup get --rgw-zonegroup=us > zonegroup.json

    2. 使用 JSON 文件备份:

      示例

      [ceph: root@host01 /]# cp zonegroup.json zonegroup.backup.json

    3. 查看 zonegroup.json 文件:

      示例

      [ceph: root@host01 /]# cat zonegroup.json
      {
          "id": "d523b624-2fa5-4412-92d5-a739245f0451",
          "name": "asia",
          "api_name": "asia",
          "is_master": "true",
          "endpoints": [],
          "hostnames": [],
          "hostnames_s3website": [],
          "master_zone": "d2a3b90f-f4f3-4d38-ac1f-6463a2b93c32",
          "zones": [
              {
                  "id": "d2a3b90f-f4f3-4d38-ac1f-6463a2b93c32",
                  "name": "india",
                  "endpoints": [],
                  "log_meta": "false",
                  "log_data": "false",
                  "bucket_index_max_shards": 11,
                  "read_only": "false",
                  "tier_type": "",
                  "sync_from_all": "true",
                  "sync_from": [],
                  "redirect_zone": ""
              }
          ],
          "placement_targets": [
              {
                  "name": "default-placement",
                  "tags": [],
                  "storage_classes": [
                      "STANDARD"
                  ]
              }
          ],
          "default_placement": "default-placement",
          "realm_id": "d7e2ad25-1630-4aee-9627-84f24e13017f",
          "sync_policy": {
              "groups": []
          }
      }

    4. 使用新主机名更新 zonegroup.json 文件:

      示例

      "hostnames": ["host01", "host02","host03"],

    5. 在 Ceph 对象网关中设置 zone group back:

      语法

      radosgw-admin zonegroup set --rgw-zonegroup=ZONEGROUP_NAME --infile=zonegroup.json

      示例

      [ceph: root@host01 /]# radosgw-admin zonegroup set --rgw-zonegroup=us --infile=zonegroup.json

    6. 更新周期:

      示例

      [ceph: root@host01 /]# radosgw-admin period update --commit

    7. 重启 Ceph 对象网关,以便 DNS 设置生效。

其它资源