VB6.0 и Windows 2003 кластеризация - PullRequest
1 голос
/ 16 июля 2009

Веб-приложение VB 6.0 / ASP (не .NET), работающее в среде Windows Server 2003 / IIS с сервером SQL 2005. На сервере работает компонент c / c ++ (exe / service).

Клиент хотел бы работать в кластерной среде Windows. Проблемы возникают из-за использования Windows API GetComputerName. Это извлекает фактическое имя сервера, а не кластерное имя «псевдоним».

Компонент c / c ++ был исправлен путем установки в windows свойства для этого exe-файла, который заставляет вызов getcomputername возвращать имя сети, которое в данном случае является псевдонимом кластера.

Часть VB / ASP также имеет вызовы getcomputername. Есть ли какая-то настройка, похожая на то, как вы можете определить исполняемый файл c / c ++, где вы можете заставить getcomputername использовать сетевое имя?

Что мы видим, когда загружается экран входа в систему веб-страницы, где должна быть информация о версии / функции, возникает ошибка, указывающая: метод ~ объекта ~ не найден. Если мы вручную изменим ключ reg activecomputername на псевдоним имени кластера, эта ошибка исчезнет. Не могу использовать это как долгосрочное исправление, потому что некоторые процессы Windows приходят и возвращает значение этого ключа обратно к правильному имени.

У кого-нибудь есть предложения по запуску vb-приложений в кластерном окружении? Я бы предпочел не менять код, и был бы шокирован, если бы приложение было написано с учетом кластера.

Спасибо!

Обновление 7/31/2009

Мне было интересно, можно ли было сказать IIS (или vb, назначенному веб-сайту) использовать имя сетевого узла вместо имени локального компьютера через инструмент администрирования MS Cluster. Я думаю, что именно здесь мое разъединение происходит с предложениями всех до сих пор. Я снова смог добавить приложение c / c ++ в инструмент администрирования кластера и настроить его на использование имени сетевого узла без изменения какого-либо кода. Есть ли способ сделать то же самое для VB / ASP, который работает в IIS. Нужно ли настроить IIS для кластеризации?

Ответы [ 2 ]

1 голос
/ 17 июля 2009

Подробнее см. GetComputerNameEx () .

Обратите внимание, что в соответствии с этой страницей в MSDN, если вы передадите параметр NameType как ComputerNameDnsDomain , на странице будет указано: " Если локальный компьютер является кластера, lpBuffer получает DNS-имя домена виртуального сервера кластера."

Похоже, было бы довольно просто создать для этого оболочку VB.

1 голос
/ 16 июля 2009

Не могли бы вы добавить это как элемент конфигурации для кода VB и просто вставить это?


Добавьте в ваш код новый файл с именем "ConfigCore.inc" с таким содержанием:

Dim isClustered
isClustered = false

Этот файл не должен изменяться вашими пользователями, потому что вы хотите быть уверены, что переменные по крайней мере определены и инициализированы. Затем вы добавляете в приложение еще один новый файл с именем "ConfigSetup.inc", который включает этот файл ConfigCore.inc. Здесь вы найдете прокомментированные примеры того, как настроить желаемое поведение:

''Uncomment the following line to enable this app to run in  a clustered environment
''isClustered = True

Этот файл задокументирован как редактируемый пользователем, и вы включаете его в другом месте, чтобы он всегда находился в области действия

...