Google Cloud Storage and Containers for Azure Professionals

欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

实施 Cloud SQL (Azure)

实验 1 小时 30 分钟 universal_currency_alt 5 个积分 show_chart 入门级
info This lab may incorporate AI tools to support your learning.
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

您最近受聘于一家 IT 企业,该企业使用 Google Cloud 作为其主要云服务提供商。作为 SQL 数据库专家,您的任务是研究和采用 Google Cloud 提供的 SQL 服务。 您主要关心的一些问题是:

  • 部署
  • 安全性
  • 应用集成
  • 连接方法

Azure 图示 由于您在上一个职位中一直在使用 Azure,因此您知道如何部署 SQL Server。定价模型基于可自定义的数据库事务单元 (DTU) 数量,这些事务单元按面向不同应用场景的各选项进行分类。

在 Azure 中,您使用以下组件:

  • 用于确保与数据库的安全连接的代理实现。
  • 用于维护应用的数据库可用性的 HTTP 负载均衡器。

您可以使用多种方法连接之前部署的多个应用,具体包括以下方法:

  • 连接字符串
  • Web 应用服务集成
  • 使用专用 IP 地址的 Cloud SQL。

现在,您将探索如何使用 Cloud SQL 功能构建安全感知数据库并将其连接到应用。

概览

在此实验中,您将配置一个 Cloud SQL 服务器,并学习如何通过外部连接使用代理将应用连接到该服务器。您还将配置通过专用 IP 链路的连接,以提供性能和安全方面的优势。我们选择在此实验中演示的应用是 Wordpress,但其中的信息和最佳实践适用于任何需要 SQL Server 的应用。

在此实验结束时,您将有 2 个工作的 Wordpress 前端实例,通过 2 种不同的连接类型连接到其 SQL 实例后端,如下图所示:

SQL 实验图表

目标

在本实验中,您将学习如何执行以下任务:

  • 创建 Cloud SQL 数据库
  • 配置虚拟机以运行代理
  • 在应用和 Cloud SQL 之间创建连接
  • 使用专用 IP 地址将应用连接到 Cloud SQL

设置

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

  1. 请使用无痕式窗口登录 Qwiklabs。

  2. 留意实验的访问时限(例如 1:15:00)并确保能在相应时间段内完成实验。
    系统不提供暂停功能。如有需要,您可以重新开始实验,不过必须从头开始。

  3. 准备就绪时,点击开始实验

  4. 请记好您的实验凭据(用户名密码)。您需要使用这组凭据来登录 Google Cloud 控制台。

  5. 点击打开 Google 控制台

  6. 点击使用其他帐号,然后将实验的凭据复制并粘贴到相应提示框中。
    如果您使用其他凭据,将会收到错误消息或产生费用

  7. 接受条款并跳过恢复资源页面。

任务 1:创建 Cloud SQL 数据库

在此任务中,您将根据 Google Cloud 最佳实践配置 SQL 服务器并创建专用 IP 连接。

  1. 导航菜单 (“导航菜单”图标) 上,点击 SQL
  2. 点击创建实例
  3. 点击选择 MySQL
  4. 指定以下内容,将其他设置保留默认值:
属性
实例 ID wordpress-db
root 密码 输入密码
区域
可用区 不限
数据库版本 MySQL 5.7
注意:请记下 root 密码;它将在后面的步骤中用到并称为“ROOT_PASSWORD”。
  1. 展开显示配置选项

  2. 展开机器类型部分。

  3. 预配适量的 vCPU 和内存。如需选择机器类型,请点击下拉菜单,然后浏览您的选项。

注意以下几点:

  • 共享核心机器适合原型设计,不在 Cloud 服务等级协议 (SLA) 的覆盖范围内。
  • 为获得最佳性能,每个 vCPU 都存在 250 MB/秒的网络吞吐量上限。每增加一个核心,该网络上限就会增加;理论上,该上限不能超过 2,000 MB/秒。
  • 对于具有较高性能要求的工作负载(例如在线事务处理 [OLTP]),一般准则是确保实例具有足够的内存,能够容纳整个工作集和活跃连接的数量。
    1. 对于本实验,请从下拉菜单中选择标准,然后选择 1 个 vCPU、3.75 GB

    2. 接下来,展开存储空间部分,然后选择存储类型存储空间容量

    注意以下几点:

  • 对于多数用例,固态硬盘 (SSD) 是最佳选择。HDD(硬盘驱动器)性能较低,但存储费用要低得多,因此 HDD 可能更适合存储不经常访问且不需要极短延迟时间的数据。
  • 存储容量与其吞吐量之间存在直接关系。
    1. 点击每个容量选项以查看它如何影响吞吐量。请将选项重置为 10 GB。
    注意:在不启用自动增加存储空间的情况下将存储容量设置得太低,可能会导致您的实例无法享受其服务等级协议 (SLA) 保障。
    1. 展开连接部分。

    2. 选择专用 IP

    3. 网络下拉菜单中,选择默认

    4. 点击出现的设置连接按钮。

    5. 在右侧面板中,依次点击启用 API使用自动分配的 IP 范围继续创建连接

    6. 点击页面底部的创建实例以创建数据库实例。

    注意:在创建按钮变为可点击状态之前,您可能必须等待专用 IP 地址更改传播完毕。

    点击“检查我的进度”以验证是否完成了以下目标: 创建 Cloud SQL 实例

    任务 2:在虚拟机上配置代理

    如果您的应用与 Cloud SQL 实例不在同一个 VPC 连接的网络和区域中,请使用代理来保护其外部连接。

    为了配置代理,您需要 Cloud SQL 实例连接名称。

    注意:本实验附带 2 个预配置了 Wordpress 及其依赖项的虚拟机。您可以通过点击虚拟机名称来查看启动脚本和服务账号访问权限。请注意,我们对该虚拟机使用了最小权限原则,并且只允许进行 SQL 访问。此外,还有一个网络标记和一个防火墙,它们已预配置为允许端口 80 接受来自任何主机的流量。
    1. 导航菜单 (“导航菜单”图标) 上,点击 Compute Engine

    2. 点击 wordpress-proxy 旁边的 SSH

    3. 下载 Cloud SQL 代理并使其可以执行:

    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxy

    为了启动代理,您需要 Cloud SQL 实例的连接名称。让 SSH 窗口保持打开状态,然后返回到 Cloud 控制台。

    1. 导航菜单 (“导航菜单”图标) 上,点击 SQL

    2. 点击 wordpress-db 实例并等待其名称旁边显示绿色对勾标记(这可能需要几分钟时间),这表明实例正在运行。

    3. 请记下实例连接名称;我们稍后将会用到并称为“SQL_CONNECTION_NAME”。

    4. 此外,为了让应用正常工作,您需要创建一个表。点击数据库

    5. 点击创建数据库,输入 wordpress(这是应用预期的名称),然后点击创建

    6. 返回到 SSH 窗口并将连接名称保存到环境变量中,注意将 [SQL_CONNECTION_NAME] 替换为您在上一步中复制的唯一名称:

    export SQL_CONNECTION=[SQL_CONNECTION_NAME]
    1. 如需验证是否设置了环境变量,请运行以下命令:
    echo $SQL_CONNECTION

    该命令应输出连接名称。

    1. 如需激活与 Cloud SQL 数据库的代理连接并将进程发送到后台,请运行以下命令:
    ./cloud_sql_proxy -instances=$SQL_CONNECTION=tcp:3306 &

    预期输出为:

    Listening on 127.0.0.1:3306 for [SQL_CONNECTION_NAME] Ready for new connections
    1. 按 Enter 键。
    注意:该代理将监听 127.0.0.1:3306 (localhost) 以及使用机器的外部 IP 地址通过安全隧道安全地连接到您的 Cloud SQL。

    点击“检查我的进度”以验证是否完成了以下目标: 在虚拟机上创建数据库并配置代理

    任务 3:将应用连接到 Cloud SQL 实例

    在此任务中,您会将示例应用连接到 Cloud SQL 实例。

    1. 配置 Wordpress 应用。如需查找虚拟机的外部 IP 地址,请查询其元数据:
    curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip && echo
    1. 在浏览器中访问 wordpress-proxy 外部 IP 地址并配置 Wordpress 应用。

    2. 点击赶紧试试吧

    3. 指定以下内容,注意将 [ROOT_PASSWORD] 替换为您在创建机器时配置的密码,并将其余设置保留为默认值:

    属性
    用户名
    密码 [ROOT_PASSWORD]
    数据库主机 127.0.0.1
    注意:您使用 127.0.0.1 (localhost) 作为数据库 IP 地址,因为您启动的代理会监听此地址并将流量安全地重定向到您的 SQL 服务器。
    1. 点击提交

    2. 建立连接后,点击 Run the installation(运行安装)以在 Cloud SQL 中实例化 Wordpress 及其数据库。此操作可能需要一点时间才能完成。

    3. 使用任意信息填充演示版网站的信息,然后点击 Install Wordpress(安装 Wordpress)。您不必记住或使用这些详细信息。

    注意:安装 Wordpress 最多可能需要 3 分钟,因为它需要将其所有数据传播到您的 SQL Server。
    1. 当“Success!”(成功!)窗口出现时,请移除网络浏览器地址栏中 IP 地址后的文本,然后按 Enter 键。
      您将看到一个正常运作的 Wordpress 博客!

    任务 4:通过内部 IP 地址连接到 Cloud SQL

    如果您可以将应用托管在 Cloud SQL 所在的区域和 VPC 连接的网络中,则可以使用专用 IP 地址来获得安全性和性能更高的配置。

    使用专用 IP 地址,您可以通过缩短延迟时间来提高性能,并最大限度地减少 Cloud SQL 实例的攻击面,因为您可以通过内部 IP 地址与其单独通信。

    1. 在 Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击 SQL
    2. 点击 wordpress-db
    3. 记下 Cloud SQL 服务器的专用 IP 地址;它将被称为“SQL_PRIVATE_IP”。
    4. 导航菜单上,点击 Compute Engine
    注意wordpress-private-ip 位于您的 Cloud SQL 所在的 us-central1,这使您能够利用更安全的连接。
    1. 复制 wordpress-private-ip 的外部 IP 地址,将其粘贴到浏览器窗口中,然后按 Enter 键。

    2. 点击赶紧试试吧

    3. 指定以下内容,将其他设置保留默认值:

    属性
    用户名
    密码 输入创建 Cloud SQL 实例时配置的“ROOT_PASSWORD”
    数据库主机 [SQL_PRIVATE_IP]
    1. 点击提交
    注意:这一次,您将创建与专用 IP 地址的直接连接,而不是配置代理。该连接是专用连接,这意味着它不会将出站流量传输到互联网,因此可以受益于更好的性能和安全性。
    1. 点击 Run the installation(运行安装)。
      系统会显示“Already Installed!”(已安装!)窗口,这意味着您的应用已通过专用 IP 地址连接到 Cloud SQL 服务器。

    2. 在网络浏览器的地址栏中,移除 IP 地址后的文本,然后按 Enter 键。
      您将看到一个正常运作的 Wordpress 博客!

    任务 5:回顾

    在此实验中,您创建了一个 Cloud SQL 数据库,并将其配置为既使用通过安全代理的外部连接,也使用通过专用 IP 地址的连接,后者更为安全且性能更好。请注意,只有当应用和 Cloud SQL 服务器位于同一个区域并且属于同一个 VPC 网络时,才能通过专用 IP 地址进行连接。如果应用托管在其他区域、VPC 网络甚至不同的项目中,可以使用代理来确保应用通过外部连接所建立连接的安全性。

    现在您对在 Cloud SQL 中创建和配置数据库有了更深入的了解。接下来我们来看看 Google Cloud SQL 与 Azure SQL 之间的一些异同。

    相似之处:

    • Azure 和 Google Cloud 管理数据库的基础设施,其中包括实例、备份、更新和故障切换。
    • Cloud SQL 和 Azure SQL 都部署代理来安全地接收 VPC 外部的连接。
    • 两种服务都使用连接字符串来建立连接。
    • 如果两个服务并置在同一区域内并且属于同一个 VPC 网络,则二者都可以使用一个内部 IP 来直接连接应用和 SQL Server 实例。通过仅使用内部 IP 地址,可以提高安全性,因为这样就禁止了公共连接。

    差异:

    • Google Cloud 和 Azure 创建 SQL Server 的方法被认为有所不同。在 Azure 中,您需要从多种类别、DTU 和既定的存储设置中进行选择。在 Google Cloud 中,您可以直接指定所需的 CPU 和存储量。
    • 在 Google Cloud 中,您拥有内置数据库身份验证(用户/密码),并且可以实施 Cloud SQL Auth 代理和 Cloud SQL 连接器库来提供基于 IAM 的访问。而在 Azure 中,您可以使用策略来定义如何接受请求。您还可以使用重定向方法(默认情况下)或代理连接策略来处理请求。系统还支持 Azure Active Directory 身份验证。
    • 在 Google Cloud 中,您可以使用 Cloud SQL 来连接到实例,主要有两个选项:
      • Cloud SQL Auth 代理:无需授权网络或 SSL 的安全隧道。身份验证和授权则通过 Identity and Access Management (IAM) 和 OAuth 2.0 进行
      • 专用 IP:VPC 网络与底层 Google 服务提供方的 VPC 网络之间的专用连接

    结束实验

    完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。

    系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交

    星级数的含义如下:

    • 1 颗星 = 非常不满意
    • 2 颗星 = 不满意
    • 3 颗星 = 一般
    • 4 颗星 = 满意
    • 5 颗星 = 非常满意

    如果您不想提供反馈,可以关闭该对话框。

    如果要留言反馈、提出建议或做出更正,请使用支持标签页。

    版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

    上一步 下一步

    This content is not currently available

    We will notify you via email, when it becomes available

    Great!

    We will contact you via email, if it becomes available

    预览