了解如何使用Docker容器化您的游戲服務器,以及如何使用Azure資源管理器模板、Azure Functions和DevOps實踐為服務器構建可靠的自動化部署過程。
請參閱使用Docker和Azure編排和擴展Icebird的游戲服務器,閱讀所有詳細信息。GitHub上有源代碼和部署模板可用。
體系結構關系圖
參考實現詳細信息
每個虛擬機都包含一個運行游戲會話的Docker容器。虛擬機啟動后,它會立即實例化Docker容器,并通過自定義腳本擴展(Linux,Windows)打開所需的網絡端口。每個容器都有自己的公共專用IP地址。
此外,還有一個獲取服務器Azure Functions,它在應用服務計劃上運行,可提供其他縮放選項,如應用服務環(huán)境文檔中所述。任何應用服務必須具有Azure存儲帳戶,并且Azure Functions服務將預配它。在此存儲帳戶中,Azure表存儲表用于存儲有關服務器池的信息,包括服務器的唯一標識符、它的IP地址、端口和狀態(tài)。獲取服務器Azure Functions使用此信息將連接詳細信息返回到客戶端,并將服務器標記為在使用時不可用。
若要幫助縮放服務器池,使用計時器觸發(fā)的自動縮放Azure Functions。每隔一分鐘左右,它就會查看有多少臺服務器可用,并根據需要添加其他服務器。如果池中有太多未使用的服務器,它將取消這些服務器的設置。您可以設置池中要有多少臺服務器。
游戲服務器啟動后,需要與第三個發(fā)送詳細信息Azure Functions通信,宣布它的存在,以便可以在Azure表存儲中更新相關的連接信息。
游戲會話完成后,游戲服務器會對Azure Functions上的第四個游戲會話執(zhí)行ping操作,以更新該特定服務器的Azure表存儲的狀態(tài)。
最終目標是盡可能快地釋放虛擬機,因此這個體系結構側重于僅為每個虛擬機提供一個游戲會話。
留意Azure限制頁面,了解您將能夠基于Azure存儲限制運行的并發(fā)用戶數量。如果需要擴展,請考慮使用Azure Cosmos DB及其表API替換Azure表存儲。
部署模板
單擊下面的按鈕,將項目部署到您的Azure訂閱:
此操作將觸發(fā)模板部署,即系統(tǒng)會將template.json ARM模板文件部署到您的Azure訂閱,從而創(chuàng)建必要的Azure資源。這可能會在您的Azure帳戶中產生相應費用。
請查看一般指南文檔,其中有一篇文章概述了Azure服務的命名規(guī)則和限制。
備注
如果您對ARM模板的工作原理感興趣,請參閱此參考體系結構中使用的每個不同服務對應的Azure資源管理器模板文檔:
對Azure Functions中的函數應用自動執(zhí)行資源部署
Azure容器注冊表模板
提示
要在本地運行Azure Functions,請使用這些相同的應用設置更新local.settings.json文件。
定價
如果您沒有Azure訂閱,可以創(chuàng)建免費帳戶,開始使用12個月的免費服務。除非您超出這些服務的使用限制,否則無需為Azure免費帳戶中包含的這些免費服務付費。了解如何通過Azure門戶或使用情況文件查看服務使用情況。
您需要承擔運行這些參考體系結構時所使用的Azure服務的費用??偨痤~將因使用情況而異。請參閱參考體系結構中使用的每項服務的定價網頁:
Azure Windows虛擬機
Azure Linux虛擬機
Azure磁盤存儲
Azure Functions
Azure容器注冊表
Azure表存儲
您還可以使用Azure定價計算器,以配置和估算您計劃使用的Azure服務的成本。