在 Azure 云服务工作者角色上设置 Redis
Setting up Redis on Azure cloud service worker role
我正在创建一个云服务,其中我有一个工作者角色 运行 在后台进行一些繁重的处理,为此我希望 Redis 实例在工作者本地 运行。
我想要做的是设置工作者角色项目,使 Redis 实例在部署工作者时 installed/configured。
redis 数据库会在每次作业启动时被清除。
我已经查看了 MSOpenTech redis for windows with nuget installation,但我不确定如何让它在辅助角色实例上工作。有没有聪明的方法来设置它,还是通过命令行调用?
谢谢。
要在辅助角色实例上安装任何软件,您需要将其设置为启动任务。
您将在 ServiceDefinition.csdef 文件中的 <Startup>
元素中引用启动任务,并引用您的命令文件来安装您想要的任何软件(例如 Redis)。
我还没有尝试在工作者角色实例中安装 Redis,所以我无法评论这是否会成功。而且您还需要担心打开正确的端口(无论是面向外部还是面向内部)和扩展(例如,当您扩展到两个工作角色实例时会发生什么,都是 运行 redis?)。我的回答特定于您如何在角色实例上安装软件。
有关启动任务设置的更多信息是 here。
我不希望将此标记为答案,但只是想补充一点,这是对于实际部署来说非常糟糕的方法。
从学习的角度来看,我能理解您为什么要这样做,但是在生产环境中,这是一个非常糟糕的主意,原因如下:
- 您无法保证 Azure Service Fabric 何时会重新启动辅助角色(并且您无法保证底层 VM 在它关闭之前处于相同状态)- 您可能会重新填充缓存仅仅是因为角色被重新启动了。
- 在 Redis 的实际实现中,您会 运行 集群中的多个节点,因此您可以受益于 a) 在多个节点之间自动拆分数据集的能力,以及 b) 当一个子集出现时继续操作的节点遇到故障 - 运行在 Worker Role 中 ning 不会给你任何这样的东西。每次扩展您的工作者角色时,您还 运行 存在多个 Redis 实例(彼此不知道)的风险。
- 您将需要在 Worker 角色中管理您的 Redis 安装,而它们并不是为此而设计的。 PaaS 辅助角色旨在 运行 部署的辅助角色包,仅此而已。如果你真的想自己 运行 Redis,你应该看看 IaaS VM。
我建议您查看 Azure Redis 缓存 SaaS 产品(请参阅 http://azure.microsoft.com/en-gb/services/cache/),它提供了 Redis 缓存的完全托管、高可用性实施。我在几个项目中使用它,强烈推荐它。
我正在创建一个云服务,其中我有一个工作者角色 运行 在后台进行一些繁重的处理,为此我希望 Redis 实例在工作者本地 运行。
我想要做的是设置工作者角色项目,使 Redis 实例在部署工作者时 installed/configured。
redis 数据库会在每次作业启动时被清除。
我已经查看了 MSOpenTech redis for windows with nuget installation,但我不确定如何让它在辅助角色实例上工作。有没有聪明的方法来设置它,还是通过命令行调用?
谢谢。
要在辅助角色实例上安装任何软件,您需要将其设置为启动任务。
您将在 ServiceDefinition.csdef 文件中的 <Startup>
元素中引用启动任务,并引用您的命令文件来安装您想要的任何软件(例如 Redis)。
我还没有尝试在工作者角色实例中安装 Redis,所以我无法评论这是否会成功。而且您还需要担心打开正确的端口(无论是面向外部还是面向内部)和扩展(例如,当您扩展到两个工作角色实例时会发生什么,都是 运行 redis?)。我的回答特定于您如何在角色实例上安装软件。
有关启动任务设置的更多信息是 here。
我不希望将此标记为答案,但只是想补充一点,这是对于实际部署来说非常糟糕的方法。
从学习的角度来看,我能理解您为什么要这样做,但是在生产环境中,这是一个非常糟糕的主意,原因如下:
- 您无法保证 Azure Service Fabric 何时会重新启动辅助角色(并且您无法保证底层 VM 在它关闭之前处于相同状态)- 您可能会重新填充缓存仅仅是因为角色被重新启动了。
- 在 Redis 的实际实现中,您会 运行 集群中的多个节点,因此您可以受益于 a) 在多个节点之间自动拆分数据集的能力,以及 b) 当一个子集出现时继续操作的节点遇到故障 - 运行在 Worker Role 中 ning 不会给你任何这样的东西。每次扩展您的工作者角色时,您还 运行 存在多个 Redis 实例(彼此不知道)的风险。
- 您将需要在 Worker 角色中管理您的 Redis 安装,而它们并不是为此而设计的。 PaaS 辅助角色旨在 运行 部署的辅助角色包,仅此而已。如果你真的想自己 运行 Redis,你应该看看 IaaS VM。
我建议您查看 Azure Redis 缓存 SaaS 产品(请参阅 http://azure.microsoft.com/en-gb/services/cache/),它提供了 Redis 缓存的完全托管、高可用性实施。我在几个项目中使用它,强烈推荐它。