我目前正在尝试掌握整个云计算,我已经在Stackoverflow上阅读了很多类似的问题。
我正在尝试构建的东西将类似于高I / O存储服务。它将通过FTP检索A LOT(我们正在谈论50 - 100 Mbit / sec)数据,然后对收到的一些数据进行一些后处理。
该应用程序目前正在使用C#编写,以便在Windows Azure VPS上进行部署。我正在使用自己的简单FTP服务器来实现最高级别的控制和安全性(就像我自己的身份验证过程一样)。这不是问题,因为我已经熟练使用套接字服务器和高性能的.NET应用程序。
但总是作为单个实例运行。它总是在挤压某些VPS服务器上运行的单个Windows服务/控制台应用程序的更多性能。
这次我必须面对事实。无论虚拟机有多大,如果数据增加,数据都会迅速压倒服务器的I / O容量(这是由客户生成的,因此更多的客户=更多的数据!)。
那么你将如何在云中进行负载均衡?我已经阅读了“云服务”与“云工作者”等等,但我认为它只是如此 ** 复杂,当我打算使用时价格看起来很模糊来自一个服务的存储,来自另一个服务的数据库以及来自第三类服务的工作,同时考虑带宽和其他内容。我真的想在我认识的环境中保持简单,并且我有信心与之合作。所以VPS就是。
但是我应该如何进行负载平衡?这是我的第一次,我知道这是一个雄心勃勃的项目,但我真的只是想学习!
总结一下:负载平衡在Windows Azure VPS上运行的C#编写的自定义FTP应用程序。应用程序/服务的每个实例都应该可以访问相同的存储和数据库。不需要实例间通信。
所以扔掉你得到的一切,我会尽力跟上。 :)
答案 0 :(得分:2)
你似乎对角色的含义感到有些困惑,所以让我快点一下。角色基本上是VM的模板,它定义了代码和配置。它有点像Puppet或Chef脚本。角色有几种类型。
在简单的情况下(例如,Web服务),Azure将自动在您的计算机之间平衡传入请求。对于涉及来自互联网的请求的任何服务,它应该也能正常工作。我认为使用FTP PASV模式可能会更复杂,但我不是该主题的专家。有一个open source project for FTP on Azure,还有一个blog post on the topic。也许他们的方法可以应用于您的自定义FTP软件。
根据您的说法,我认为您可以为您的FTP服务器使用辅助角色。在您的WorkerRole.cs文件中,您只需启动FTP代码,然后就可以了。您还可以生成线程或进程以使每个VM作为图像处理器执行双重任务。如果您愿意,您可以在VM角色中执行所有操作,这只是一个涉及更多工作的问题。
这是Blob存储的教科书用例。上传的文件一定要去那里。听起来不同的计费模式让您感到困惑,但Blob存储非常便宜。您可以查看Azure Pricing Calculator。
答案 1 :(得分:0)
使用IIS应用程序请求路由(ARR)设置Webrole。