Предостережение: Хорошо, это странный вопрос, и я не уверен, что SO - подходящее место.
У меня есть веб-сайт Azure, подключенный к экземпляру кэша Redis для Azure. (с использованием StackExchange.Redis)
Все было замечательно, но однажды - веб-сайт не смог подключиться к Redis.
Ошибка:
Не удалось подключиться к серверу (-ам) Redis; чтобы создать отключенный мультиплексор, отключите AbortOnConnectFail. SocketFailure при PING
Вот моя строка подключения:
mycache.redis.cache.windows.net, ssl = true, пароль = xxxxxx, syncTimeout = 5000
Вот мои шаги по диагностике:
- Попробуйте запустить НОВЫЙ экземпляр Azure Redis, подключитесь из Azure. Результат: ОТКАЗ (веб-сайт не может подключиться к ЛЮБОМУ экземпляру Redis в Azure?)
- Spinup НОВЫЙ веб-сайт Azure с тем же кодом, что и код ошибки, указывающий на существующий кеш Redis. Результат: УСПЕХ (ммм, что?)
- Создайте файл нового веб-сайта MVC, добавьте StackExchange.Redis, разверните на новом веб-сайте Azure и подключитесь к Redis. Результат: УСПЕХ (так что Redis хорош?)
- Разверните указанный выше веб-сайт vanilla MVC на существующем веб-сайте Azure (такой же код, как 4, подключение к тому же Redis, с той лишь разницей, что он использует старый физический компьютер / сеть веб-сайта Azure). Результат: FAIL (wtf ??)
- Я работаю в группе веб-приложений Azure - похоже, ваша виртуальная сеть перешла в особенно странное состояние и прерывала сетевое подключение для вашего приложения. Я исправил это поведение.
Итак - я думаю, Redis внес в черный список веб-сайт Azure? (возможно ли это?) Я знаю, что клиент (мой код) не будет пытаться продолжить переподключение, но я много раз отказывался от сайта, и он просто не может повторно подключиться к Redis .
Тот факт, что запуск нового веб-сайта Azure с тем же кодом, подключающимся к тому же экземпляру Redis, приводит к успеху, говорит мне о том, что проблемы с занесением в черный список / маршрутизацией в Azure / Redis.
Любые идеи?
ИЗМЕНИТЬ
Похоже, проблема в Azure VNET. Когда мой веб-сайт является частью виртуальной сети Azure, он не может подключиться к Redis. Но когда я вынимаю его вне из сети, он подключается нормально. До сегодняшнего дня эта установка работала нормально.
Поэтому мне интересно, внесла ли Azure изменения, чтобы веб-сайты в виртуальной сети не могли подключаться к Azure Redis? (не имеет смысла, я знаю)
ИЗМЕНИТЬ 2:
Прилагаются журналы попытки подключения Redis.
Исключение: не удалось подключиться к серверу (-ам) Redis; чтобы создать отключенный мультиплексор, отключите AbortOnConnectFail. SocketFailure при PING строка подключения-удалена: 6380, пароль = пароль-удален, ssl = True Подключение строка-подключения-удалена: 6380 / Интерактивный ... BeginConnect: строка-подключения-удалена: 6380 Указано 1 уникальных узла. Запрашивается тай-брейк от строка-подключения-удалена: 6380
Кто-нибудь может это расшифровать?
Попробуйте подключиться локально к Azure Redis. Результат: УСПЕХ (значит, код хорош?)