在服务器场设置方面,我完全是个新手,但我确实知道自己想做什么,并且有充分的理由,只是不确定如何去做。
我有一个代码库(一个 Web 应用程序),我想在多台服务器(可能是 100 台)上运行它。我希望子域与服务器之间有 1 对 1 的映射,这样我就能 100% 控制哪些流量流向哪些服务器。
当我说“服务器”时,我认为我的意思是“实例”,因为我不关心它们是物理服务器还是虚拟服务器(无论如何都应该对我的设计和工作透明)。
我该如何设置以便于维护和添加/删除服务器?我的应用程序已经设置了服务器数据库、每个服务器的人口/负载信息、路由以及所有这些有趣的东西……所以我不需要应用程序/编程部分的帮助,只需要 Azure 设置/维护部分。
更多信息:
以防万一它有助于找到一个简单的答案,但仍试图将其保持为一个一般性主题(希望不要太具体到我的确切需求,我觉得这是一种常见的情况)。
我的具体情况是 MMO 棋盘游戏。每个游戏都是独立的(没有跨游戏通信/统计数据/等)。每个游戏一次不能包含超过 100 名活跃玩家。单个服务器可能处理 1 到 100 个游戏,但每个游戏的所有玩家都需要连接到同一台服务器。服务器将只将所有游戏信息保存在内存中(如果循环重新启动游戏,则没问题,游戏不会持续那么长时间,如果玩家重新启动也没什么大不了的)。所有服务器/实例都将部署完全相同的游戏代码。
我将拥有一台或多台登录服务器,这个细节并不重要。登录服务器需要做的就是根据玩家的登录信息和他们想要加入的游戏决定将玩家发送到哪台服务器。要将玩家“发送”到该服务器,登录服务器会将他们重定向到子域,例如“server1.mydomain.com”、“server2.mydomain.com”等。
因此,我认为我的一般性问题(可能很简单)仍然存在……我只是希望能够根据子域将流量路由到不同的服务器,并让所有这些服务器共享相同的代码库。我知道可以做到这一点的方法,但不确定使用 Azure 有什么简单/好的方法。我目前正在尝试一种方法,即从托管在 Visual Studio 在线上的 git repo 部署更新,这至少可以使代码库在多个 Web 应用程序之间保持同步。但是,部署每个更新需要 30 多分钟(在每台服务器上重建大约需要 10 分钟,乘以我目前使用的 3 台服务器)……如果我最终拥有 30 多台服务器,那可能会非常慢。
答案1
如果您的目标是将服务器简单地映射到站点,那么这只是一个脚本/编程问题。
您需要自动部署服务器和相应的子域。所有这些都可以通过 Azure 完成。您可以部署服务器并配置 DNS 以指向其相应的 IP 地址。
最简单的方法可能是创建一个 Azure 资源管理器模板,它将创建您的 Azure 配置,包括所需的任何服务器设置,然后使用 Powershell 或 Azure 命令行工具启动它。由于 ARM 模板还不能配置 DNS,因此您需要编写该方面的脚本。
最终,您将拥有一个脚本,它可以读取您的数据库,并为每个条目创建一个服务器,安装任何需要安装的内容,配置 DNS,然后对下一个重复该过程。
不过,我怀疑可能有一种更简单的方法来实现您的目标,例如,您可能能够将数百个子域加载到单个服务器上,并让服务器决定将哪些内容放到哪里。但在进一步发表评论之前,我们需要有关您期望结果的更多信息。