我是一家小型软件公司(我和另外一家),我们目前每月支付约50英镑(75美元)用于托管。我们有2台VPS机器来覆盖我们的12个网站。
现在,我正在寻找Azure以确定它是否符合我们的要求。我有几个问题希望人们可以帮助我:
我已经对门户网站和发布进行了测试,看起来非常聪明(除了没有SQL Azure的全文搜索),但我非常感谢其他人的体验。
答案 0 :(得分:4)
即使没有流量访问网络角色,您也会为其运行的每个小时支付网络角色。除了Web角色的每小时成本之外,还需要支付表/ Blob /队列存储(如果使用),传出带宽(每GB使用,传入免费),SQL Azure(如果使用)以及其他各种Azure您可以注册的服务。请参阅Microsoft的pricing calculator。
如果您想在一个网络角色上运行所有12个网站,请查看Windows Azure Accelerator for Web Roles。它有很多很好的功能可以帮助你做到这一点。
但是,请记住,如果您只有一个运行这些网站的Web角色,那么您将有停机时间,并且可能在一天的中间。 Microsoft不断进行维护,降低角色,销毁它们,重建它们,并将它们备份以进行更新,迁移等等,并且在进行维护时您的角色可能会停机一段时间 - 而您无法控制过程
要缓解此问题,Microsoft建议至少拥有2个Web角色。在您的情况下,2个角色中的每个角色都可以运行所有12个站点。但是,为了使其正常工作,必须构建所有站点,以便与任何特定服务器没有任何关联。也就是说,如果用户登录并且他们点击服务器A并且服务器A将用户的某些内容放入缓存中,则用户的下一个请求将转到服务器B,服务器B将不会在其缓存中包含数据位,因此第二个请求可能会失败您希望避免这种情况 - 确保您的站点已写入,以便在负载均衡器后面正常工作。
哎呀,我在这里要小心。我强烈建议不要通过RDP登录并在Web角色上安装应用程序。如果您这样做,下次角色被回收和重建时(这将在Microsoft的常规维护中发生),您执行此类操作的任何自定义安装都将被清除。
这有两个部分。首先是安装某种电子邮件软件。您可以在启动任务中的角色初始化期间通过命令行安装电子邮件软件。请参阅here和here。这将导致软件在每次Microsoft重建Web角色时重新安装。或者,您可以通过API连接到第三方电子邮件服务,例如MailChimp,而不必担心自己处理电子邮件。请记住,如果您自己发送电子邮件,则可能会遇到SPF问题,因为Azure中的IP地址可能会不时发生变化。
问题3的第二部分与计划任务有关。有几种方法:
使用辅助角色(或具有Web角色also run as a worker role),这实际上是一个无限循环,可以反复执行某些操作。您可以让它检查Azure队列的工作等,或者检查文件夹中的文件,当它找到文件时,它会以某种方式处理它。这假定您希望在准备好后立即完成某种类型的工作。如果您要发送电子邮件,可以执行以下操作:
一个。您的网络应用决定需要发送电子邮件。它将电子邮件相关数据存储在Azure表中,并为电子邮件创建ID。
湾然后,您的Web应用程序将获取该电子邮件的ID,并将其添加到Azure队列,表明需要发送电子邮件。
℃。您的网络应用会忘记电子邮件并向用户提供回复
d。工作者角色(可能与Web角色在同一个框中运行)从队列中拾取消息,发现需要发送电子邮件,从Azure表中获取数据并发送电子邮件。
即然后,worker角色清除队列和表中的数据
您可以使用预定任务。毕竟,Web角色是一个完整的Windows服务器,并且具有计划任务。但是,与软件安装一样,您需要确保set up your scheduled tasks via a startup task,以便即使在角色被回收后它们也就位。
总体而言,在使用Azure Web角色时,您必须要有所不同。 Microsoft正在迫使您走上一条让您的应用程序更具可扩展性和可靠性的道路。通过消除Web角色并在维护期间重建它,它们迫使您在脚本中自动在Web角色上安装软件/应用程序。这样可以实现更好的可伸缩性,因为当您需要100个Web角色实例时,您需要做的就是更改设置并等待。它提供了更好的可靠性,因为这意味着您的Web角色每次都以完全相同的方式设置。
最初转换到Azure服务方式可能会有点痛苦,但最终它可以带来一些好处。
答案 1 :(得分:1)