在 Microsoft Azure 上运行 Metabase

本指南涵盖了使用 Docker 在 Microsoft Azure 中运行 Metabase 实例的基础知识。

步骤 1:创建资源组(资源分组)

在 Azure 管理控制台中,点击页面顶部的 **资源组** 图标(或搜索“资源组”)。如果您已有资源组,可以直接进入 步骤 2

在资源组页面,点击顶部栏中的 **+ 添加** 按钮以创建新的资源组。在 **创建资源组** 页面,选择您的有效 Azure 订阅,输入资源组名称,并选择一个区域。

Create a Resource Group

点击 **下一步** 直到看到 **创建** 按钮,然后点击它。

在选择 Metabase 的区域时,您应该考虑用户和数据仓库的位置,以及可能限制跨境数据传输的基础设施成本和隐私法规。

步骤 2:创建 VNET(虚拟网络)

在页面中心,点击 **创建资源** 按钮。搜索 **VNET**

VNET Marketplace

选择 Microsoft 的 VNET 产品,然后点击 **创建**

VNET Product

输入虚拟网络的名称,并选择与资源组相同的区域。点击底部的 **下一步:IP 地址** 按钮。

在这里,我们将创建一个由公共子网(暴露给互联网的网络)和包含应用程序数据库的私有网络组成的网络。

在 IPv4 地址中,您应该有一个默认值 10.0.0.0/16(否则将该网络空间添加到框中)。接下来,添加两个子网:

  • 一个名为 public 的子网,其子网地址范围为 10.0.1.0/24,以及
  • 一个名为 private 的子网,其子网范围为 10.0.2.0/24。

Azure network configuration

点击 **下一步** 直到进入 **审阅并创建** 页面,然后点击底部的 **创建** 按钮来创建您的网络。

步骤 3:创建应用程序数据库(PostgreSQL)

从 Azure 管理控制台主页,创建一个新资源。这次搜索 **Azure Database for PostgreSQL**。您也可以在 Marketplace 菜单下的 **数据库** 中找到此数据库。

Azure PostgreSQL

在下一页,您需要选择使用该服务的方式。目前选择 **单一服务器**,这是一个不错的起点,但请注意,这只会创建一个 PostgreSQL 实例,该实例将成为您的单点故障。

在下一个屏幕上,选择或输入以下内容:

  • 资源组:您将所有组件包含在内的那个。
  • 服务器名称:数据库的唯一名称。
  • 数据源:可以保留为 None
  • 位置:您为资源组和 VNET 使用的相同位置。
  • 版本:使用最新可用版本。
  • 计算 + 存储:您可以重新调整数据库大小,但必须选择 通用 层,因为它是唯一提供私有链接的层。

然后选择一个管理员用户名和密码。

点击 **下一步** 直到进入最后一页,然后点击 **创建**。Azure 创建数据库需要一些时间。创建完成后,点击 **转到资源** 按钮。

步骤 4:创建私有终结点连接

在 Azure for PostgreSQL 数据库的属性页面,您可以管理数据库的参数。您将为数据库创建 **私有终结点**,以便所有来自 Web 应用程序的流量都通过 Azure 网络内部路由。

在左侧菜单中,点击 **安全** 下的 **私有终结点连接**

Azure Database for PostgreSQL

现在点击顶部栏中带有加号的按钮,该按钮显示 **私有终结点**。在打开的页面上:

  1. 为此链接提供一个名称(任何描述您正在做的事情的名称都可以,例如 metabase_link)。选择数据库所在区域,点击 **下一步**。
  2. 在配置的 **资源** 部分,确保 **资源类型** 设置为 Microsoft.DBforPostgreSQL/servers,这将使您能够在下面的下拉列表中选择上一步创建的服务器,并保持 **目标子资源** 的默认值。
  3. 在 **配置** 部分,唯一需要更改的值是 **子网**,您需要在此选择本指南第一步中创建的 **私有** 子网,并保持其他所有内容不变。

Azure PrivateLink config

现在转到最后一步并点击 **创建**。终结点创建后,您需要在继续之前执行两项操作:

  1. 在您刚创建的数据库服务器页面上,转到 **连接安全** 项目,并 **拒绝所有公共网络访问**。
  2. 在您在上一步创建的 VNET 页面上,转到 **连接的设备** 设置,您应该会看到一个连接到网络的设备。记下 IP 地址,因为在步骤 5 中会用到它(这是网络分配给数据库服务器的 IP 地址)。

步骤 5:创建 Web 应用程序(部署 Metabase)

最后,是将所有内容整合在一起的步骤:转到您的资源组并添加新资源,或在 Marketplace(蓝色地球图标)中搜索 **Web 应用**。Azure web app

现在设置页面上的以下值(资源组应与第一步相同):

  • 名称:名称必须是唯一的,因为子域名在所有 Azure 部署中共享。
  • 发布:Docker 容器。
  • 操作系统:Linux。
  • 区域:使用与前几步相同的区域。
  • 应用服务计划:如果您没有服务计划,Azure 将自动创建一个新的。
  • SKU 和大小:设置一个生产级别计划,**至少** 包含 200 个总 ACU 和 3.5GB 内存,然后点击 **应用**。

现在转到下一步,您将选择:

  • 选项:单个容器。
  • 镜像来源:DockerHub。
  • 访问类型:公共。
  • 镜像和标签:metabase/metabase:latest(或选择任何其他您喜欢的 Docker 镜像标签,例如我们的企业版)。要查找最新版本,请查看我们的 社区版 Docker Hub 仓库 以及我们的 企业版 Docker Hub 仓库
  • 启动命令:将此字段留空。

点击 **下一步** 直到进入最后一个部分,然后点击 **创建**,等待您的应用程序初始化。

现在转到应用程序配置页面,然后点击左侧的 **设置** -> **网络**。在下一页,点击 **VNET 集成** 下的 **点击此处配置**。

Azure VNET integration

现在点击 **添加 VNET** 旁边的巨大加号,然后选择您创建的 VNET 和公共子网。点击 **确定**。

Azure VNET public subnet

返回应用程序配置页面,然后点击左侧的 **设置** -> **配置**。您应该会看到一些已配置的应用程序设置。

您需要添加 环境变量 以将 Metabase 连接到其 PostgreSQL 应用程序数据库。确保使用完整的 **MB_DB_CONNECTION_URI**。

另外,请注意 Azure PostgreSQL 中的用户名是 user@name_of_your_database_engine,所以在这种情况下,整个连接 URI 如下:

postgresql://databasePrivateIPAddress:port/postgres?user=user@name_of_your_database_engine&password=configuredpassword&ssl=true&sslmode=required

例如,如果您的值是:

  1. 数据库私有 IP 地址: 10.0.2.4
  2. 数据库端口:5432(对于 Postgres,MySQL/MariaDB 默认端口是 3306)
  3. 数据库服务器名称:metabase-app-database
  4. 数据库用户名:metabase
  5. 密码:Password1!

那么您的连接字符串将是:

postgresql://10.0.2.4:5432/postgres?user=metabase%40metabase-app-database&password=Password1!&ssl=true&sslmode=require

注意: 由于版本 > 43 后“@”字符将不再起作用,因此已将其替换为“%40”。

点击 **保存**,实例将重新启动。

完成后,您应该可以在 Web 应用的“概述”选项卡(URL 部分)中找到的 URL 处访问您的 Metabase。

附加配置

如何启用健康检查

在 Metabase 中启用健康检查是一个好习惯。转到您的 **Web 应用** -> **监视** -> **运行状况检查** -> **启用运行状况检查**,并在路径中包含 /api/health

如何升级

转到您创建的 Metabase Web 应用,然后点击 **部署** -> **部署中心**。

在 **注册表设置** 下的 **完整镜像名称和标签** 文本字段中,将容器版本更改为新版本,然后点击 **保存**。Metabase Docker 镜像的可用版本可在 Docker Hub 上找到。

重要提示:在升级 Metabase 应用程序数据库之前,请务必备份,尤其是在主要版本之间进行升级时。Metabase 也不正式支持降级版本。

如何查看日志

在 Azure 中访问您的 Web 应用,然后导航到 **监视 -> 日志流**。

您也可以通过转到设置 -> 管理员 -> 工具 -> 日志在 Metabase 内部查看日志。

性能调优

  • 禁用 FTP 状态
  • 将 HTTP 版本更改为 2.0
  • 启用 WebSockets
  • ARR 亲和性已启用

自定义域名

在您的 Azure Web 应用中,访问 **设置** -> **自定义域名** 以使用带有您自己证书的自定义域名。

纵向扩展与横向扩展

Azure 提供了一种简单的方法来增加服务器容量,即进行纵向扩展。只需选择一个具有更多 RAM 和 CPU 数量的定价层,然后重启实例。这种方法比横向扩展更容易,您应该在横向扩展之前优先选择此选项。

为了实现高度可用的 Metabase 部署,您可以指示您的 Web 应用进行横向扩展(并行提供应用程序的更多服务器)。只需转到“横向扩展”并使用滑块请求更多实例,或使用自定义自动缩放策略(例如,在工作时间使用更多服务器,在非工作时间使用更少)。

CORS

如果您要嵌入 Metabase,可能需要在 Web 应用程序的 **设置** -> **CORS** 中启用 CORS。您需要为应用程序填写嵌入 Metabase 的源域,以便 Azure 知道启用来自这些域的跨域请求。

数据库名称

Azure 不允许用户在服务创建时创建数据库,这就是我们使用 postgres 作为安装 Metabase 的数据库的原因。虽然这不应该成为问题,但最佳实践是在创建数据库时创建一个名为 metabase 的数据库。如果您不急于试用产品,则应在创建数据库后立即创建名为 metabase 的数据库,然后在部署 Docker 容器时使用适当的连接字符串。在上面的示例中,连接字符串将是:

postgresql://10.0.2.4:5432/metabase?user=metabase@metabase-app-database&password=Password1!&ssl=true&sslmode=require

如果您在连接时遇到问题,请参阅 postgres 配置说明,因为您可能会在连接字符串的用户名部分遇到包含 @ 符号的问题。使用 MB_DB_CONNECTION_URI 和单独的 MB_DB_USERMB_DB_PASSWORD 字段的组合也可以工作。

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档吗? 提议更改。
© . This site is unofficial and not affiliated with Metabase, Inc.