我可以在 Azure 云服务提供的 VM 上安装 MySQL 吗?
Can I install MySQL on the VMs provided in Azure Cloud Services?
据我所知,在 Azure 网站上使用 MySQL 数据库的唯一方法是使用 Cleardb,但我可以在 Azure 云服务提供的虚拟机上安装 MySQL 吗?如果是的话怎么办?
如果您谈论的是标准虚拟机,那么您可以使用 pre-built images on VMDepot。
如果您谈论的是 Web 或工作者角色 (PaaS),我不会推荐它,但如果您真的想要,您可以。您需要在主机上完全编写解决方案安装脚本。唯一的缺点(这是一个很大的缺点)是主机将在某个时候移动到新主机,这意味着您的 MySQL 数据文件将会丢失 - 如果您经常备份并且很高兴丢失一些数据,那么此选项可能适合您。
这个问题可能会被关闭并移至 ServerFault(它真正属于的地方)。也就是说:ClearDB 在 Azure 中提供 MySQL-as-a-Service。它与您可以在自己的虚拟机中安装什么无关。您完全可以进行基于 VM 的 MySQL 安装(或可以安装在 Linux 或 Windows 上的任何其他数据库引擎)。事实上,Azure 门户甚至有一个 tutorial 用于在 OpenSUSE 上 MySQL 安装。
如果您指的是在 web/worker 角色中安装:这根本不适合数据库引擎,原因是:
- 需要完全 script/automate 零交互安装(这可能需要很长时间)。这包括 所有 必要的软件,每次启动新实例时都会 downloaded/installed 到 vm 映像。
- 数据库集群可能无法应对任意横向扩展(web/worker 角色的典型用例)。当发生横向扩展(添加额外的虚拟机)时,数据库集群可能会或可能不会正常工作。缩小时也是如此(删除虚拟机)。
- 不太理想的附加存储配置
- 无法使用 Linux 个 VM
因此,假设您仍然可以使用虚拟机(相对于无状态云服务虚拟机):您需要仔细规划您的部署,做出如下决定:
- 发行版(Ubuntu、CentOS 等)。 Azure 支持的 Linux 发行版列表 here
- 选择合适的 VM 大小(DS 系列提供 SSD 附加磁盘支持;G 系列扩展到 448GB RAM)
- Azure 存储附加磁盘是非高级或高级(高级磁盘支持 SSD,耐用磁盘可扩展到每个磁盘 1TB/5000 IOPS,每个 VM 最多 32 个磁盘,具体取决于 VM 大小)
- 虚拟网络配置(多节点集群)
- 数据库集群的可访问性(无论您的应用程序是在 vnet 中还是通过 public 端点访问它;如果是后者,则设置 ACL)
- 备份/HA/DR规划
其他人提到使用来自 VM Depot 的预构建 VM 映像。请意识到,如果您走那条路,您将依赖其他人为您配置数据库引擎安装。对于您要实现的目标,这可能是也可能不是最佳的。图像可能会或可能不会与最新版本、补丁等保持同步。
当然,我写的内容适用于您在自己的虚拟机中安装的任何数据库引擎,服务提供商(例如 ClearDB)往往会为您处理大部分这些事情。
我认为,主要问题是 "what You want to achieve?"。如我所见,您想将 PaaS 解决方案与 Web 应用程序或云服务一起使用,并且您需要一个 MySQL 数据库。如果是,您有两种选择(从技术上讲,正如 David Makogon 所说)。第一个是使用 MySQL 部署您自己的(一个)服务器并从外部(互联网端)连接到它。第二种解决方案是创建一个 MySQL 服务器或集群,并在 Azure 虚拟网络内部连接您的应用程序。使用 Cloud Service 很简单,但使用 Web App 则不然。您必须在 Azure VM 中创建 VPN 网关并将您的 Web 应用程序连接到此网关。通过这种方式,您将拥有从您的应用程序到您自己的 MySQL 集群的内部连接。
据我所知,在 Azure 网站上使用 MySQL 数据库的唯一方法是使用 Cleardb,但我可以在 Azure 云服务提供的虚拟机上安装 MySQL 吗?如果是的话怎么办?
如果您谈论的是标准虚拟机,那么您可以使用 pre-built images on VMDepot。
如果您谈论的是 Web 或工作者角色 (PaaS),我不会推荐它,但如果您真的想要,您可以。您需要在主机上完全编写解决方案安装脚本。唯一的缺点(这是一个很大的缺点)是主机将在某个时候移动到新主机,这意味着您的 MySQL 数据文件将会丢失 - 如果您经常备份并且很高兴丢失一些数据,那么此选项可能适合您。
这个问题可能会被关闭并移至 ServerFault(它真正属于的地方)。也就是说:ClearDB 在 Azure 中提供 MySQL-as-a-Service。它与您可以在自己的虚拟机中安装什么无关。您完全可以进行基于 VM 的 MySQL 安装(或可以安装在 Linux 或 Windows 上的任何其他数据库引擎)。事实上,Azure 门户甚至有一个 tutorial 用于在 OpenSUSE 上 MySQL 安装。
如果您指的是在 web/worker 角色中安装:这根本不适合数据库引擎,原因是:
- 需要完全 script/automate 零交互安装(这可能需要很长时间)。这包括 所有 必要的软件,每次启动新实例时都会 downloaded/installed 到 vm 映像。
- 数据库集群可能无法应对任意横向扩展(web/worker 角色的典型用例)。当发生横向扩展(添加额外的虚拟机)时,数据库集群可能会或可能不会正常工作。缩小时也是如此(删除虚拟机)。
- 不太理想的附加存储配置
- 无法使用 Linux 个 VM
因此,假设您仍然可以使用虚拟机(相对于无状态云服务虚拟机):您需要仔细规划您的部署,做出如下决定:
- 发行版(Ubuntu、CentOS 等)。 Azure 支持的 Linux 发行版列表 here
- 选择合适的 VM 大小(DS 系列提供 SSD 附加磁盘支持;G 系列扩展到 448GB RAM)
- Azure 存储附加磁盘是非高级或高级(高级磁盘支持 SSD,耐用磁盘可扩展到每个磁盘 1TB/5000 IOPS,每个 VM 最多 32 个磁盘,具体取决于 VM 大小)
- 虚拟网络配置(多节点集群)
- 数据库集群的可访问性(无论您的应用程序是在 vnet 中还是通过 public 端点访问它;如果是后者,则设置 ACL)
- 备份/HA/DR规划
其他人提到使用来自 VM Depot 的预构建 VM 映像。请意识到,如果您走那条路,您将依赖其他人为您配置数据库引擎安装。对于您要实现的目标,这可能是也可能不是最佳的。图像可能会或可能不会与最新版本、补丁等保持同步。
当然,我写的内容适用于您在自己的虚拟机中安装的任何数据库引擎,服务提供商(例如 ClearDB)往往会为您处理大部分这些事情。
我认为,主要问题是 "what You want to achieve?"。如我所见,您想将 PaaS 解决方案与 Web 应用程序或云服务一起使用,并且您需要一个 MySQL 数据库。如果是,您有两种选择(从技术上讲,正如 David Makogon 所说)。第一个是使用 MySQL 部署您自己的(一个)服务器并从外部(互联网端)连接到它。第二种解决方案是创建一个 MySQL 服务器或集群,并在 Azure 虚拟网络内部连接您的应用程序。使用 Cloud Service 很简单,但使用 Web App 则不然。您必须在 Azure VM 中创建 VPN 网关并将您的 Web 应用程序连接到此网关。通过这种方式,您将拥有从您的应用程序到您自己的 MySQL 集群的内部连接。