在Azure云服务工作者角色上设置Redis

时间:2015-07-17 08:52:41

标签: azure redis azure-worker-roles azure-cloud-services

我正在创建一个云服务,我在后台运行一些繁重的处理工作角色,为此我希望Redis实例在本地运行。

我想要做的是以部署工作人员时安装/配置Redis实例的方式设置辅助角色项目。

每次作业启动时都会清除redis数据库。

我已经看过MSOpenTech redis用于安装nuget的windows,但我不确定如何在worker角色实例上运行。是否有一种智能的方式来设置它,还是通过命令行调用?

感谢。

2 个答案:

答案 0 :(得分:3)

我不希望将此标记为答案,但只是想添加一个非常糟糕的实际部署方法

我可以理解为什么你可能想从学习的角度来做这件事,但是在生产环境中这是一个非常糟糕的主意,原因如下:

  1. 您无法保证Azure Service Fabric何时重新启动辅助角色(并且您无法保证在基础VM停止运行之前将其置于相同状态) - 您可能只需重新填充缓存因为角色重新开始了。
  2. 在Redis的实际实现中,您将在群集中运行多个节点,这样您就可以从以下方面受益:a)在多个节点之间自动拆分数据集的能力; b)当节点的子集遇到故障时继续运行 - 在工作者角色中运行不会给你任何这些。每次扩展工作者角色时,您还会冒多个Redis实例(彼此不知道)的风险。
  3. 您需要在“工作人员角色”中管理Redis安装,而这些安装并不是为此而设计的。 PaaS Worker角色旨在运行已部署的Worker角色包,而不是其他任何内容。如果你真的想自己运行Redis,你应该看看IaaS VM。
  4. 我建议您查看Azure Redis缓存SaaS产品(请参阅http://azure.microsoft.com/en-gb/services/cache/),该产品提供完全托管,高可用性的Redis缓存实现。我在几个项目中使用它并且强烈推荐它。

答案 1 :(得分:2)

要在辅助角色实例上安装任何软件,您需要将其设置为启动任务。

您将在do { var user = prompt("make a selection").toLowerCase(); } while (myArray.indexOf(user); // in idea, here must be checking for existence user given value in array alert(myArray + "you can choose following"); 元素的ServiceDefinition.csdef文件中引用启动任务,并引用您的命令文件,该文件将安装您想要的任何软件(例如Redis)。

我没有尝试在工作者角色实例中安装Redis,因此我无法评论这是否会成功。而且您还需要担心打开正确的端口(无论是外部还是内部)和扩展(例如,当您扩展到两个工作者角色实例时会发生什么,两者都运行redis?)。我的答案特定于您如何在角色实例上安装软件。

有关启动任务设置的更多信息是here