Настройка роли Redis в облачной службе Azure
Я создаю облачный сервис, в котором у меня есть рабочая роль, выполняющая некоторую тяжелую обработку в фоновом режиме, для которой я хотел бы, чтобы экземпляр Redis работал на рабочем месте локально.
Я хочу настроить проект рабочей роли таким образом, чтобы экземпляр Redis устанавливался / настраивался при развертывании рабочего.
База данных redis будет очищаться при каждом запуске задания.
Я посмотрел на Redis MSOpenTech для Windows с установкой Nuget, но я не уверен, как я получу это работает на экземпляре рабочей роли. Есть ли умный способ настроить его или он будет вызываться из командной строки?
Благодарю.
2 ответа
Чтобы установить любое программное обеспечение на экземпляр рабочей роли, вам необходимо настроить это как задачу запуска.
Вы будете ссылаться на задачи запуска в файле ServiceDefinition.csdef, в <Startup>
элемент, со ссылкой на ваш командный файл, который устанавливает любое программное обеспечение, которое вы хотите (например, Redis).
Я не пробовал устанавливать Redis в экземпляре рабочей роли, поэтому я не могу комментировать, удастся ли это. Кроме того, вам нужно будет позаботиться об открытии правильных портов (внешних или внутренних) и о масштабировании (например, что произойдет, когда вы масштабируете до двух экземпляров рабочих ролей, оба из которых выполняют redis?). Мой ответ зависит от того, как вы устанавливаете программное обеспечение на экземпляр роли.
Больше информации о настройке задачи запуска здесь.
Я не ожидал, что это будет помечено как ответ, но я просто хотел добавить, что это действительно плохой подход для реального развертывания.
Я могу понять, почему вы можете захотеть сделать это с точки зрения обучения, однако в производственной среде это действительно плохая идея по нескольким причинам:
- Вы не можете гарантировать, что рабочая роль будет перезапущена службой Azure Service Fabric (и вы не гарантированно получите базовую виртуальную машину в том же состоянии до того, как она выйдет из строя) - вы потенциально можете повторно заполнить кэш просто потому, что роль был перезапущен.
- В реальной реализации Redis вы бы запускали несколько узлов в кластере, поэтому вы получаете выгоду от: а) возможности автоматического разделения набора данных между несколькими узлами и б) продолжения операций, когда подмножество узлов испытывают сбои - работают в пределах Рабочая роль не дает вам ничего из этого. Вы также рискуете получить несколько экземпляров Redis (не подозревая друг друга) каждый раз, когда масштабируете свою рабочую роль.
- Вам нужно будет управлять установкой Redis в рабочей роли, а они просто не предназначены для этого. Рабочие роли PaaS предназначены для запуска развернутого пакета рабочих ролей и ничего более. Если вы действительно хотите запустить Redis самостоятельно, вам, вероятно, стоит взглянуть на виртуальные машины IaaS.
Я бы порекомендовал вам взглянуть на предложение Azure Redis Cache SaaS (см. http://azure.microsoft.com/en-gb/services/cache/), которое предлагает полностью управляемую, высокодоступную реализацию Redis. кэш. Я использую его в нескольких проектах и очень рекомендую.