Проблемы с поставщиком пользовательской конфигурации Windows Server AppFabric

ОБНОВИТЬ

Вот ссылка на код пользовательского провайдера - http://www.gurpreetsohal.com/configurationprovider.zip< /а>

Мне удалось использовать рефлектор, чтобы перейти дальше в библиотеки DLL Microsoft AppFabric, и я нашел место, где возникает исключение.

введите здесь описание изображения

Исключение вызывает метод WaitForStatus — служба определенно находится в начальном состоянии, просто она никогда не достигает запущенного состояния в течение времени ожидания.

Значение времени ожидания по умолчанию составляет 60 секунд. Я увеличил это до 10 минут, та же проблема.


Сценарий:

1) Работа в среде рабочей группы. Это означает, что AppFabric не позволит источнику SQL Server хранить файл конфигурации, поэтому вам остается использовать файловый ресурс или создать собственный поставщик конфигурации.

Я решил сделать последнее и написал реализацию, используя предоставленный интерфейс ICustomProvider, используя blobstore.

Все это работает нормально, конфигурация может быть создана/изменена и удалена корректно - мастер настройки работает нормально.

Проблема в том, что когда я запускаю Start-CacheCluster в powershell, служба кэширования AppFabric зависает в состоянии Starting.

Затем Powershell выдает ошибку:

введите здесь описание изображенияОднако, если я вручную запускаю службу из services.msc - она ​​работает без проблем, довольно много моментально.

Чтобы убедиться, что это не проблема среды, я настроил AppFabric на использование файлового ресурса для конфигурации, и он отлично работал без каких-либо проблем.

Затем я начал смотреть, что на самом деле делает эта команда powershell, и декомпилировал dll.

Это привело меня к следующему: введите здесь описание изображения

currentAdmin.StartCluster (новый ProgressDelegate (это, (IntPtr) this.StartClusterDelegate), новый WriteErrorDelegate (это, (IntPtr) this.WriteErrorRecord), this.QuorumTimeout, this.HostTimeout);

Я не могу шагнуть дальше и застрял.

Я пробовал как таблицы Azure, так и хранилище BLOB-объектов, чтобы попытаться заставить это работать.

Помощь!!!!!


person swissarmykirpan    schedule 21.03.2012    source источник


Ответы (1)


Поскольку он использует нестандартный порт, я бы удостоверился, что этот порт открыт на всех узлах в кластере. Исключением тайм-аута может быть брандмауэр, блокирующий нестандартный порт.

Я посмотрел на скриншот вашего декомпилированного кода, и похоже, что он просто выбрасывает тайм-аут, как в ошибке.

Спасибо,

person Ben Cline    schedule 21.03.2012
comment
Брандмауэры отключены. Базовая конфигурация, которую я пробую, — это один узел, поэтому он также является узлом администратора. - person swissarmykirpan; 22.03.2012
comment
Кроме того, в исходном вопросе я упомянул, что использовал стандартный метод обмена файлами, который работал без проблем!! - person swissarmykirpan; 22.03.2012
comment
@варпкор. Если вы можете, было бы неплохо добавить код для вашего пользовательского провайдера. Возможно, там есть проблема. - person Nick Ryan; 22.03.2012
comment
Хорошая идея Ник! Мне интересно, поскольку это ресурс кластера, он не обновляет статус ServiceController, а вместо этого изменяется состояние ресурса кластера. Я не уверен, какой именно .NET API использовать, но вам, возможно, придется сообщить о своем кластере настраиваемого поставщика. Кластерные методы Powershell могут дать вам некоторые подсказки, если вы посмотрите на их источник: technet.microsoft.com/en-us/library/ee461009.aspx - person Ben Cline; 23.03.2012