教程:使用 Cloud DNS 设置网域


本教程为您演示如何注册域名,设置示例网络服务器以及使用 Cloud DNS 将网域网址指向服务器的流程。

如果您刚开始使用 Terraform for Google Cloud,请参阅 Terraform 使用入门

目标

本教程演示了如何完成以下任务:

  • 使用 Cloud Domains 注册域名
  • 创建 Compute Engine 虚拟机 (VM) 实例
  • 运行基本 Apache 网络服务器
  • 使用 Cloud DNS 设置网域
  • 更新域名服务器
  • 验证设置

费用

注册域名会产生费用。 如需了解 Cloud Domains 价格,请参阅 Cloud Domains 价格

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 启用 Compute Engine API。

    启用 API

注册域名

如果您已注册域名,请跳过此部分。

您可以使用 Cloud Domains 注册网域。Cloud Domains 可让您使用与准备工作部分中创建的网域相同的结算账号。如需了解如何使用 Cloud Domains 注册网域,请参阅注册网域

创建虚拟机实例

控制台

如需在 Compute Engine 中创建 Linux 虚拟机 (VM) 实例,请按照以下说明操作:

<ph type="x-smartling-placeholder">
    </ph>
  1. In the Google Cloud console, go to the Create an instance page.

    Go to Create an instance

  2. In the Boot disk section, click Change to begin configuring your boot disk.
  3. Public images 标签页上,选择 Debian GNU/Linux
  4. 点击选择
  5. 防火墙部分,选择 允许 HTTP 流量
  6. 如需创建虚拟机,请点击创建

实例启动会需要一些时间,请稍等片刻。准备就绪后,实例会列在虚拟机实例页面上,并带有绿色状态图标。

连接到您的实例

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

您现在具有一个用来与您的 Linux 实例互动的终端窗口。

如需了解详情,请参阅快速入门:使用 Linux 虚拟机

运行基本 Apache 网络服务器

在本部分中,您将运行并测试 Apache 网络服务器。

  1. 在 SSH 窗口中,使用 Debian 软件包管理器安装 apache2 软件包。

     sudo apt-get update && sudo apt-get install apache2 -y
     

    安装 Apache 后,操作系统会自动启动 Apache 服务器。

  2. 使用 以下命令:

     echo "<!doctype html><html><body><h1>Hello World!</h1></body></html>" 
    | sudo tee /var/www/html/index.html

测试服务器

测试您的实例是否正在处理其外部 IP 地址上的流量。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到“虚拟机实例”

  2. 外部 IP 列中,复制您的实例的外部 IP 地址。
  3. 在浏览器中,导航到 http://[EXTERNAL_IP]。请勿将 https 用于 连接,因为服务器会返回 Connection Refused 错误。

现在,您应该会看到 Hello World! 页面。

如需了解详情,请参阅运行基本 Apache 网络服务器

使用 Cloud DNS 设置网域

如果您要从现有提供商迁移数据, 将现有可用区迁移到 Cloud DNS有关说明,请参阅导出 DNS 从现有 provider。 否则,请按照以下步骤创建新的公开可用区。

控制台

  1. 在 Google Cloud Console 中,转到创建 DNS 可用区页面。

    转到“创建 DNS 可用区”

  2. 对于可用区类型,请选择公开

  3. 对于可用区名称,输入 my-new-zone

  4. 对于 DNS 名称,使用一个您注册的域名输入该地区的 DNS 名称后缀(例如 example.com)。

  5. DNSSEC 部分,确保已选择 Off 设置。

  6. 点击创建以创建填充了 NS 和 SOA 记录的可用区。

  7. 如需将您注册的域名指向托管服务器的 IP 地址,您必须将 A 记录添加到您的可用区。

    1. 区域详情页面上,点击添加标准
    2. 资源记录类型菜单中选择 A
    3. IPv4 地址部分,输入您的实例的外部 IP 地址。
    4. 点击创建为您的可用区创建 A 记录。
  8. (可选)添加 CNAME 记录,以将您的前缀添加到域名,例如 www.

    1. 点击添加标准
    2. DNS 名称字段中,为域名添加前缀 www
    3. 资源记录类型部分,选择 CNAME
    4. 标准名称部分,依次输入域名和一个英文句点(例如 example.com.)。
    5. 点击创建

更新域名服务器

如需更新 Cloud Domains 中的域名服务器,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,转到 Cloud 网域页面。

    前往 Cloud Domains

  2. 点击您要修改的域名。您也可以点击 更多 以查看修改菜单。

  3. 如需修改 DNS 详情,请点击修改 DNS 详情

  4. 选择使用 Cloud DNS(推荐)

  5. Cloud DNS 区域列表中,选择 my-new-zone

  6. 点击保存

Terraform

您可以使用 Terraform 资源来创建虚拟机实例、运行 Apache Web 服务器,使用 Cloud DNS 设置您的网域,并更新 域名服务器

您还可以使用 Terraform 模块设置具有公开、专用、对等互连或转发可用区的 Cloud DNS。如需详细了解可用区,请参阅 DNS 可用区概览

# to setup a web-server

resource "random_id" "rnd" {
  byte_length = 4
}

resource "google_compute_instance" "default" {
  name         = "dns-compute-instance"
  machine_type = "g1-small"
  zone         = "us-central1-b"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {
      // Ephemeral public IP
    }
  }
  metadata_startup_script = <<-EOF
  sudo apt-get update && \
  sudo apt-get install apache2 -y && \
  echo "<!doctype html><html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html
  EOF
}

# to allow http traffic
resource "google_compute_firewall" "default" {
  name    = "allow-http-traffic"
  network = "default"
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
  source_ranges = ["0.0.0.0/0"]
}

# to create a DNS zone
resource "google_dns_managed_zone" "default" {
  name          = "example-zone-googlecloudexample"
  dns_name      = "example-${random_id.rnd.hex}.com."
  description   = "Example DNS zone"
  force_destroy = "true"
}

# to register web-server's ip address in DNS
resource "google_dns_record_set" "default" {
  name         = google_dns_managed_zone.default.dns_name
  managed_zone = google_dns_managed_zone.default.name
  type         = "A"
  ttl          = 300
  rrdatas = [
    google_compute_instance.default.network_interface[0].access_config[0].nat_ip
  ]
}

验证设置

如需验证您的配置是否正常工作,请在完成域名服务器之后, 请前往您的域名(例如 example.com)。网域 应解析为您的 IP 地址,并且应指向 Compute Engine 虚拟机会显示您在其中创建的 Hello World! 页面 运行基本的 Apache Web 服务器

如需验证您的设置是否正确,您还可以在终端窗口上运行 dig +trace example.com 命令。将 example.com 替换为您注册的域名。

dig +trace example.com

输出的结尾应包含以下内容,其中 IP_ADDRESS 是您的网络服务器的 IP 地址。

example.com.    300 IN  A   IP_ADDRESS
;; Received 62 bytes from 216.239.34.109#53(ns-cloud-d2.googledomains.com) in 62 ms

如需验证更改是否成功,请运行以下命令:

example.com IN NS <your Cloud DNS name servers>

等待 DNS 传播完成后,您还可以运行 nslookup 命令来验证设置:

nslookup example.com

输出应包含以下内容。IP_ADDRESS 是您的网络服务器的 IP 地址。

Server:     127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
Name:   example.com
Address: IP_ADDRESS

清理

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。

    转到“Cloud DNS 可用区”

  2. 点击可用区名称(例如 my-new-zone)以进入可用区详细信息页面。

  3. 选择您创建的 A 和 CNAME 记录。

  4. 点击删除记录集

  5. 如需删除可用区,请针对可用区名称 my-new-zone 点击删除可用区

  6. 转到虚拟机实例页面。

    转到“虚拟机实例”

  7. 选择要删除的实例。

  8. 在实例所在行的 菜单上,点击删除

后续步骤