Google Cloud Storage and Containers for Azure Professionals

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

实施 Cloud SQL (Azure)

Lab 1 小时 30 分钟 universal_currency_alt 5 个积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

您最近受聘于一家 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 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

    上一步 下一步
    预览