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