在 Microsoft Azure 上執行 Metabase
本指南涵蓋使用 Docker 在 Microsoft Azure 中執行 Metabase 執行個體的基礎知識。
步驟 1:建立資源群組(資源分組)
在 Azure 管理主控台中,按一下頁面頂端的 資源群組 圖示(或直接搜尋資源群組)。如果您已有資源群組,可以直接跳至步驟 2。
在資源群組頁面上,按一下頂端列中的 + 新增 按鈕以建立新的資源群組。在 建立資源群組 頁面上,選取您有效的 Azure 訂用帳戶、輸入資源群組的名稱,然後選取區域。
按一下 下一步 直到看到 建立 按鈕,然後按一下它。
在為 Metabase 選取區域時,您應考量使用者和資料倉儲的位置,以及可能限制跨國資料傳輸的基礎架構成本和隱私權法規。
步驟 2:建立 VNET(虛擬網路)
在頁面中心,按一下 建立資源 按鈕。搜尋 VNET
從 Microsoft 選取 VNET 產品,然後按一下 建立
輸入虛擬網路的名稱,然後選取您用於資源群組的相同區域。按一下底部的 下一步:IP 位址 按鈕。
在這裡,我們將建立由公用子網路(暴露於網際網路的網路)和將包含應用程式資料庫的私有網路組成的安全網路。
在 IPv4 位址中,您應具有 10.0.0.0/16 的預設值(否則將該網路空間新增至方塊中)。接下來,新增兩個子網路
- 一個名為 public 的子網路,其子網路位址範圍為 10.0.1.0/24,以及
- 一個名為 private 的子網路,其子網路範圍為 10.0.2.0/24。
按一下 下一步 直到您到達 檢閱 + 建立 頁面,然後按一下底部的 建立 按鈕以建立您的網路。
步驟 3:建立應用程式資料庫 (PostgreSQL)
從 Azure 管理主控台首頁,建立新的資源。這次搜尋 Azure Database for PostgreSQL。您也可以在 Marketplace 功能表中的 資料庫 下找到此資料庫。
在下一個頁面中,您必須選取使用此服務的方式。目前選擇 單一伺服器,這是一個好的起點,但請考量這將僅建立 PostgreSQL 的一個執行個體,而這將是您的單一失敗點。
在下一個畫面中,選取或輸入下列項目
- 資源群組:您包含所有元件的資源群組。
- 伺服器名稱:資料庫的唯一名稱。
- 資料來源:可以保留為
無
。 - 位置:您用於資源群組和 VNET 的相同位置。
- 版本:使用您可以使用的最新版本。
- 計算 + 儲存體:您可以重新調整資料庫的大小,但您必須選取
一般用途
層,因為這是唯一提供 Private Link 的層。
然後選擇您選擇的管理員使用者名稱和密碼。
按一下 下一步 直到您到達最後一頁,然後按一下 建立。Azure 建立資料庫需要一些時間。建立完成後,按一下 前往資源 按鈕。
步驟 4:建立私人端點連線
在 Azure for PostgreSQL 資料庫的屬性頁面上,您可以管理資料庫的參數。您將為資料庫建立 私人端點,以便來自 Web 應用程式的所有流量都透過 Azure 的網路在內部路由傳送。
在左側功能表上,按一下位於 安全性 下方的 私人端點連線
現在按一下頂端列上帶有加號且顯示 私人端點 的按鈕。在開啟的頁面中
- 提供此連結的名稱(任何描述您嘗試執行的動作的名稱都可以,例如
metabase_link
)。選取資料庫所在的區域,按一下 下一步。 - 在組態的 資源 區段中,確認 資源類型 設定為
Microsoft.DBforPostgreSQL/servers
,這可讓您在下方的下拉式選單中選取在上一個步驟中建立的伺服器,並將 目標子資源 保留為預設值 - 在 組態 區段中,唯一需要變更的值是 子網路 ,您需要在其中選取您在本指南的第一個步驟中建立的 private 子網路,並將所有其他項目保持原樣。
現在前往最後一個步驟,然後按一下 建立。端點建立完成後,您需要在繼續之前執行兩項操作
- 在您剛建立的資料庫伺服器頁面中,前往資料庫 連線安全性 項目,然後 拒絕所有公用網路存取。
- 在您在上一個步驟中建立的 VNET 頁面中,前往 連線裝置 設定,您應該會看到一個裝置連線到網路。記下 IP 位址,因為您將在步驟 5 中需要它(這是網路提供給資料庫伺服器的 IP 位址)。
步驟 5:建立 Web 應用程式(部署 Metabase)
最後,所有魔法匯集在一起的步驟:前往您的資源群組並新增資源,或在 Marketplace 中搜尋 Web 應用程式 (藍色地球圖示)。
現在在頁面上設定下列值(資源群組應與第一個步驟中的相同)
- 名稱:名稱必須是唯一的,因為子網域在所有 Azure 部署中共用。
- 發佈:Docker 容器。
- 作業系統:Linux。
- 區域:使用與前幾個步驟相同的區域。
- App Service 方案:如果您沒有服務方案,Azure 將自動建立一個新的方案。
- SKU 和大小:設定生產層級方案, 至少 200 個總計 ACU 和 3.5GB 記憶體,然後按一下 套用。
現在前往下一個步驟,您將在其中選取
- 選項:單一容器。
- 映像來源:DockerHub。
- 存取類型:公用。
- 映像和標籤:metabase/metabase:latest(或選擇您偏好的任何其他 Docker 映像標籤,例如我們的企業版)。若要尋找最新版本,請查看我們的 社群版 Dockerhub 儲存庫 以及我們的 企業版 Dockerhub 儲存庫。
- 啟動命令:將此欄位保留空白。
按一下 下一步 直到您到達最後一個區段,然後按一下 建立,並在您的應用程式初始化時等待。
現在前往應用程式組態頁面,然後按一下頁面左側的 設定 -> 網路功能。在下一個頁面上,按一下 VNET 整合 下方的 按一下這裡進行設定。
現在按一下 新增 VNET 旁邊的巨大加號,然後選取您建立的 VNET 和公用子網路。按一下 確定。
返回應用程式組態頁面,然後按一下頁面左側的 設定 -> 組態。您應該會看到一些已組態的應用程式設定。
您需要新增 環境變數,以將 Metabase 連線至其 PostgreSQL 應用程式資料庫。請確定您使用完整的 MB_DB_CONNECTION_URI。
此外,請考量 Azure PostgreSQL 中的使用者名稱是 使用者@您的資料庫引擎名稱
,因此在這種情況下,整個連線 URI 將如下所示
postgresql://databasePrivateIPAddress:port/postgres?user=user@name_of_your_database_engine&password=configuredpassword&ssl=true&sslmode=required
例如,如果您的值是
- 資料庫私有 IP 位址: 10.0.2.4
- 資料庫連接埠:5432(如果是 Postgres,MySQL/MariaDB 預設連接埠為 3306)
- 資料庫伺服器名稱:metabase-app-database
- 資料庫使用者名稱:metabase
- 密碼:Password1!
則您的連線字串將為
postgresql://10.0.2.4:5432/postgres?user=metabase%40metabase-app-database&password=Password1!&ssl=true&sslmode=require
注意:「@」字元已取代為「%40」,因為「@」在 > 43 版本中將不再運作
按一下 儲存,執行個體將重新啟動。
完成後,您應該可以透過 Web 應用程式中「總覽」索引標籤中顯示的 URL(在 URL 區段下)造訪您的 Metabase。
其他組態
如何啟用健康情況檢查
在 Metabase 中啟用健康情況檢查是一種良好的做法。前往您的 Web 應用程式 -> 監控 -> 健康情況檢查 -> 啟用健康情況檢查,並在路徑中包含 /api/health
。
如何升級
前往您建立的 Metabase Web 應用程式,然後按一下 部署 -> 部署中心。
在完整映像檔名稱與標籤文字欄位中的Registry settings下,將容器版本變更為新版本,然後按一下儲存。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_USER
和 MB_DB_PASSWORD
欄位也有效。
閱讀其他 Metabase 版本的文件。