您可能已经在本地使用了 LAMP 体系结构,将它迁移到 Azure 非常容易。 请按照此参考体系结构操作,了解如何有效且高效地部署它。
使用公有云有一些额外的好处,例如:
可以轻松地按需添加新的计算和数据库节点。由于可确保在短时间内添加更多服务器,您可以建立较为轻便的基础结构并根据需要进行扩展和缩减。 此外,在 Azure 上进行扩展和缩减的成本比本地部署要低很多,而且速度更快。在某些情况下,在本地部署中要花费数天甚至数周才能实现的操作,使用公有云只需几分钟就能完成。 同样,当您不需要购买硬件来增设服务器时,前期成本会大幅下降;如果能够根据需求动态扩展容量,还可降低维持成本。
通过使用最新和最好的硬件来提高性能,您可以花更少的钱做更多的事。 同样,利用公有云为用户提供性能更高的硬件比在本地购置更便宜。
硬件故障是不可避免的,解决此类问题可能成为本地部署的噩梦。 通过将您的基础结构迁移到 Azure 中,我们的自动备份和故障转移可确保您高枕无忧。
这让您能够将精力更多地放在游戏业务方面,而不必在需要大量工作才能确保后台正常运转的 IT 上劳心费神。
而且,迁移到公有云后,您可以在以后的阶段使用最新的云服务继续前进,这对于支持您考虑实施或已经投入使用的某些功能可能是最佳选择。 例如,您可能已经利用 LAMP 实现了多人游戏 Matchmaker,那么您可能应该考虑一下无服务器方法,因为它非常适合该功能。
案例研究
游戏开发者在云中动态扩展游戏体验
“Azure 有运行 LAMP 栈所需的一切。”“Azure 跟 Terraform 配合良好。”Alex Shirov:首席技术官
单区域
体系结构关系图
摘要
Azure 体系结构
体系结构服务
Azure Linux 虚拟机 - 在 Azure 上获得计算能力的最基本方法,在本示例中,它用于托管 Apache Web 服务器和应用程序 PHP 文件 LAMP 组件。
Azure 虚拟机规模集 - 创建和管理一组相同的、负载均衡的虚拟机。
Azure Database for MySQL - LAMP 数据存储组件。
Azure Redis 缓存 - 用于提高体系结构性能和可伸缩性的缓存。
Azure 负载均衡器 - 在 Azure 虚拟机规模集中的不同 Azure Linux 虚拟机实例之间分配流量。
Azure 存储 - 存储平面文件。
Azure DDoS 防护标准 - Azure DDoS 防护与应用程序设计最佳实践相结合,以防御 DDoS 攻击。
分步操作
设备客户端从域名系统 (DNS) 获取 Azure 负载均衡器 IP 地址。
Azure 负载均衡器从 Azure 虚拟机规模集中选择特定的 Azure Linux 虚拟机实例。
Azure Linux 虚拟机代码按照常用缓存端模式首先尝试读取存储在 Azure Redis 缓存中的信息。
Azure Linux 虚拟机代码使用连接池在 Azure Database for MySQL 及任何可用的只读副本中读写信息。
为了确保高可用性,Azure Database for MySQL 启用了某种复制机制。
Azure 虚拟机规模集中的 Azure Linux 虚拟机实例在高性能 Azure 存储中读写平面文件。
部署
通常以下述两种方式之一部署在 Azure 虚拟机规模集上运行的应用程序:
使用虚拟机扩展在部署时复制应用程序文件。
创建黄金映像(在一个自定义映像中包含操作系统和应用程序文件)。
基于虚拟机扩展的方法可能会导致横向扩展变慢,因为每次创建新的虚拟机时,都需要在其上运行扩展。 如果规模集基于黄金映像,则任何新的虚拟机都是源自定义映像的副本,由于已安装必备组件和应用程序,横向扩展会快一些。
黄金映像方法(也称为不可变部署)具有以下优点:
具有可预测性,因为提升的是已经过测试的映像
很容易缩放和回滚到已知良好的之前状态
您也可以将两者结合起来,构建包含大部分不可变元素(例如操作系统版本、Apache 版本、PHP 版本和您的自定义工具)的黄金映像,不包含需要频繁更新的 PHP 脚本。
重要
请参阅部署单区域 LAMP 体系结构,找到使用不同方法部署此体系结构的详细步骤。
使用 PHP 将读取工作负载分配到多个 MySQL 只读副本
考虑利用 mysqlnd_ms(PHP 的 MySQL 本机驱动程序插件)。mysqlnd_ms 可用作负载均衡器代理,将读取工作负载分配到多个只读副本。
您可以指定用于连接到 MySQL 服务器的服务器名称、用户名和密码,这样它就可以通过将读取工作负载分配到 Azure Database for MySQL 只读副本来实现负载均衡和横向扩展。
定价
如果您没有 Azure 订阅,可以创建免费帐户,开始使用 12 个月的免费服务。 除非您超出这些服务的使用限制,否则无需为 Azure 免费帐户中包含的这些免费服务付费。 了解如何通过 Azure 门户或使用情况文件查看服务使用情况。
您需要承担运行这些参考体系结构时使用的 Azure 服务的费用,总金额取决于将通过分析管道运行的事件数。 请参阅参考体系结构中使用的每项服务的定价网页:
Azure Linux 虚拟机
Azure 虚拟机规模集
Azure Database for MySQL
Azure Redis 缓存
Azure 负载均衡器
Azure 存储
Azure DDoS 防护标准
您还可以使用 Azure 定价计算器,以配置和估算您计划使用的 Azure 服务的成本。
成本估算
准确估算云基础结构的成本可能会很费力。 本指南有望简化 Azure 定价计算器中的设置与游戏后端的单区域 LAMP 体系结构部署之间的相关性。
组件
作为实施此系统的负责人,您需要考虑以下重要方面:
Azure 虚拟机实例
虚拟机规模集服务本身费用恒定,仅针对您选择的计算实例以及所用的其他底层基础结构资源(例如存储和网络)收取费用。
请查看硬件注意事项,根据您的特定需求,确定要使用的最合适的虚拟机类型,以及您的体系结构应使用的初始实例数。 请记住,从概念证明 (PoC) 直到后端完全投入生产的整个过程,您可能都需要进行调整。
要估算每月的计算成本,请使用以下公式(注意,定价可能因地区而异):
(# of Virtual Machine instances * # of hours running per month) + (# of Virtual Machine instances * # of GBs per instance)
Azure Redis 缓存
要根据您的情况选择合适的缓存,请查看我应该使用哪种 Azure Redis 缓存产品及大小?。 要估算每月的 Azure Redis 缓存成本,请使用以下公式(注意,每个实例 SKU 的定价有所不同(高级 > 标准 > 基本),并且可能因地区而异):
(# of instances * # of hours running per month) + (# of GBs per instance for persistence if enabled in Premium SKU)
如果您需要极大的内存量,则需要使用高级 SKU 并创建一个群集,其中每个节点都由主数据库/副本缓存对组成,以实现高可用性。
Azure Database for MySQL
要估算每月的 Azure Database for MySQL 成本,请使用以下公式(注意,每种数据库套餐(优化内存 > 常规用途 > 基本)和计算套餐的定价有所不同,并且可能因地区而异):
(# of servers * # of hours running per month) + (# of GBs provisioned) + (# of GBs in additional backup storage)
注意,对于不超出您总预置存储容量的备份存储,不收取额外费用。
Azure 负载均衡器
基本 Azure 负载均衡器免费,标准 Azure 负载均衡器收费。 要估算每月的标准负载均衡成本,请使用以下公式(注意,定价可能因地区而异):
(# or GBs of data processed) + (# of rules processed * # of hours running)
Azure 存储
要估算每月的存储成本,请使用以下公式(注意,每种性能套餐(高级 > 标准)、冗余替代方案和访问套餐(热 > 冷 > 存档)的定价有所不同,并且可能因地区而异):
(# or GBs of capacity) + (# of write operations) + (# of list/create operations) + (# of read operations) + (# of GBs retrieved) + (# of GBs written)
带宽
除此之外,您还必须加上带宽成本。 入站数据传输(即数据进入 Azure 数据中心)免费,但出站数据传输(即数据传出 Azure 数据中心)收费,计算公式如下:
(# of GBs transferred outbound)
打开计算器
首先,使用任意不同的预设估算值打开 Azure 计算器:
小型配置
中型配置
大型配置
单区域
计算器
Calculator
计算器
在每个部分中,将区域设置为您希望在其中运行的区域(例如日本西部),并根据您的情况进行任何调整。
备注
Azure 计算器仅支持部分语言。