IBM WebSphere: как сопоставить приложение с несколькими кластерами с помощью сценариев wsadmin?

Я пытаюсь автоматизировать развертывание приложения, которое сопоставлено с двумя кластерами в ячейке, с помощью сценариев wsadmin. Но как бы я ни старался, приложение сопоставляется только с одним кластером. В результате приложение вообще не запускается.

Я получаю следующее сообщение об ошибке:

Application helloteam_07062019_1956 is not deployed on the cluster SPPAbcd
Exception: exceptions.AttributeError WASL6048E: The helloteam_07062019_1956 application is not deployed on the SPPAbcd target.  
WASX7017E: Exception received while running file "/app/was_scripts/main_scripts/deploy_mutlitest.py"; exception information: com.ibm.bsf.BSFException: exception from Jython:
Traceback (innermost last):
  File "<string>", line 175, in ?
  File "/app/service/IBM/WebSphere/AppServer/scriptLibraries/application/V70/AdminApplication.py", line 4665, in startApplicationOnCluster
ScriptLibraryException: : 'exceptions.AttributeError WASL6048E: The helloteam_07062019_1956 application is not deployed on the SPPAbcd target. '

Из сообщения об ошибке ясно, что приложение сопоставляется только с кластером SRVApp, но не сопоставляется с кластером SPPAbcd. В результате не удается запустить приложение.

Вот сценарий:

targetServerOne = "WebSphere:cell=DIGIAPP1Cell02,cluster=SPPAbcd"
targetServerTwo = "WebSphere:cell=DIGIAPP1Cell02,cluster=SRVApp"

AdminApp.install(location, ['-appname',"hellotest",'-defaultbinding.virtual.host',virtualHost,'-usedefaultbindings','-contextroot',ctxRoot,'-MapModulesToServers',[["EchoApp",URI,targetServerOne],["EchoApp",URI,targetServerTwo]]])
AdminConfig.save()

cell=AdminConfig.list('Cell')
cellName=AdminConfig.showAttribute(cell, 'name')
clusters=AdminConfig.list('ServerCluster').split('\n')
print("The clusters in "+cellName+" are...")
print(clusters)

for name in startClusters:
    startapp = AdminApplication.startApplicationOnCluster(newWar, name)
    print(startapp)

Как упоминалось выше, что бы я ни пытался, приложение сопоставляется только с кластером SRVApp (после проверки раздела «Управление модулем» приложения в консоли DMGR). Он не сопоставляется с кластером SPPAbcd.

Как добиться правильного сопоставления модулей с несколькими кластерами? Часть сопоставления модулей упоминается в команде adminapp.install. Это правильный способ сопоставления модулей?

Заранее спасибо и привет.

-Крис


person CK5    schedule 07.06.2019    source источник
comment
Я бы сделал цикл и дважды вызвал установку. Не говорю, что это невозможно, просто предложение. Мне никогда не приходилось развертывать одно и то же приложение в двух кластерах внутри одной ячейки.   -  person Nic3500    schedule 10.06.2019
comment
@Nic3500 Я решил проблему. Пожалуйста, посмотрите на мой ответ ниже :)   -  person CK5    schedule 10.06.2019


Ответы (1)


Чтобы решить эту проблему, я использовал плагин EnvInject Jenkins для внедрения свойств во время сборки.

Вместо двух целевых серверов (targetServerOne и targetServerTwo) я использовал только целевой сервер и вызывал его из файла свойств.

Это мой файл свойств:

moduleMapping=WebSphere:cell=cell1,cluster=cluster1+WebSphere:cell=cell1,cluster=cluster2

Мой скрипт был изменен, как показано ниже:

from os import getenv as env

targetServer = env(‘moduleMapping’)

AdminApp.install(filename, [ ‘-MapModulesToServers, [[‘moduleName’, ‘uri’, targetServer]]])

Это сопоставило мое приложение с двумя кластерами в ячейке.

person CK5    schedule 10.06.2019