Создание новых контейнеров управляемых серверов в доклере Weblogic 12c
Я следовал документации Oracle и смог установить работающий контейнер инфраструктуры Weblogic Fusion Middleware с одним управляемым сервером.
Я развернул приложение ADF, и оно отлично работает..
Но теперь я застрял, потому что я не могу добавить больше управляемых серверов в кластере.
Следующая команда была использована для запуска управляемого сервера1, который работает отлично.
docker run -d -p 9801:8001 --network=InfraNET --volumes-from InfraAdminContainer --name InfraManagedContainer --env-file ./infraServer.env.list container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.x startManagedServer.sh
вот скрипт startManagedServer.sh:
#!/bin/bash
# Copyright (c) 2014-2017 Oracle and/or its affiliates. All rights reserved.
#
#Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
#
export adminhostname=$adminhostname
export adminport=$adminport
# First Update the server in the domain
export server="infra_server1"
export DOMAIN_ROOT="/u01/oracle/user_projects/domains"
export DOMAIN_HOME="/u01/oracle/user_projects/domains/InfraDomain"
echo $adminhostname
echo $adminport
echo "DOMAIN_HOME: $DOMAIN_HOME"
/u01/oracle/oracle_common/common/bin/wlst.sh -skipWLSModuleScanning /u01/oracle/container-scripts/update_listenaddress.py $server
retval=$?
echo "RetVal from Update listener call $retval"
if [ $retval -ne 0 ];
then
echo "Update listener Failed.. Please check the Logs"
exit
fi
# Start Infra server
mkdir -p /u01/oracle/logs
$DOMAIN_HOME/bin/startManagedWebLogic.sh $server "http://"$adminhostname:$adminport > /u01/oracle/logs/startManagedWebLogic$$.log 2>&1 &
statusfile=/tmp/notifyfifo.$$
mkfifo "${statusfile}" || exit 1
{
# run tail in the background so that the shell can kill tail when notified that grep has exited
tail -f /u01/oracle/logs/startManagedWebLogic$$.log &
# remember tail's PID
tailpid=$!
# wait for notification that grep has exited
read templine <${statusfile}
echo ${templine}
# grep has exited, time to go
kill "${tailpid}"
} | {
grep -m 1 "<Notice> <WebLogicServer> <BEA-000360> <The server started in RUNNING mode.>"
# notify the first pipeline stage that grep is done
echo "RUNNING"> /u01/oracle/logs/startManagedWebLogic$$.status
echo "Infra server is running"
echo >${statusfile}
}
# clean up
rm "${statusfile}"
if [ -f /u01/oracle/logs/startManagedWebLogic$$.status ]; then
echo "Infra server has been started"
fi
#Display the logs
tail -f $DOMAIN_HOME/servers/infra_server1/logs/infra_server1.log
childPID=$!
wait $childPID
Мне удалось добавить управляемые серверы в консоль администратора weblogic, отредактировав createorstartInfraDomain.sh и createInfraDomain.py
Однако редактирование файла StartManagedServer.sh для Infra_Server2 не работает.
Даже после редактирования или даже полного удаления файла startManagedServer.sh из контейнера admin следующая команда по-прежнему работает:
docker run -d -p 9801:8001 --network=InfraNET --volumes-from InfraAdminContainer --name InfraManagedContainer --env-file ./infraServer.env.list container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.x startManagedServer.sh
Вот что я получаю в консоли:
root@Linux-Vostro-3250:/home/amalv/FMW-Infrastructure_Docker# docker run -p 9801:8001 --network=InfraNET --volumes-from InfraAdminContainer --name InfraManagedContainer --env-file ./infraserver.env.list oracle/fmw-infrastructure:12.2.1.0 startManagedServer.shInfraAdminContainer
7001
DOMAIN_HOME: /u01/oracle/user_projects/domains/InfraDomain
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
/u01/oracle/container-scripts/update_listenaddress.py called with the following sys.argv array:
sys.argv[0] = /u01/oracle/container-scripts/update_listenaddress.py
sys.argv[1] = infra_server1
c697c81b15c8
172.18.0.4
/u01/oracle/user_projects/domains/InfraDomain
INFO: SeedingConfigurationProcessor.start, finished.
INFO: SeedingConfigurationProcessor.end, finished.
все, что я делаю с startManagedServer.sh я получаю вышеупомянутый журнал с "sys.argv[1] = infra_server1".
Может кто-то помочь мне с этим!!
большое спасибо
1 ответ
Вот что я сделал, что помогло мне настроить несколько управляемых серверов.
Первоначально я выполнил следующую команду из инструкции в container-registry.oracle.com:
docker run -d -p 9001:7001 --network=InfraNET -v $HOST_VOLUME:/u01/oracle/user_projects --name InfraAdminContainer --env-file ./infraDomain.env.list container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.2
Затем я скопировал мои отредактированные скрипты-контейнеры в скрипты-контейнеры в контейнере администратора.
Удалил уже созданный каталог домена из контейнера.
передал контейнер новому образу.
в качестве альтернативы вы можете смонтировать отредактированные файлы в контейнер в команде docker run.
Я отредактировал файлы createInfraDomain.py и createOrStartInfradomain.sh в скриптах-контейнерах, чтобы создать 6 инфра-серверов. Это создаст 6 экземпляров инфрасерверов, и вы сможете увидеть их в консоли weblogic.
Теперь используйте следующую команду для запуска первого контейнера управляемого сервера:
docker run -d -p 9802: 8001 --network = InfraNET --volumes-from InfraAdminContainer - имя InfraManagedContainer --env-file ./infraserver.env.list ранее зафиксированный образ startManagedServer.sh
Для запуска нового контейнера управляемого сервера я отредактировал файл startManagedServer.sh, изменил значение сервера на infra_server2 и выполнил следующую команду:
docker run -d -p 9802:8001 -v /path(or)location/of/edited/cotainer-scripts/in/your/hostSystem:/u01/oracle/container-scripts --network=InfraNET --volumes-from InfraAdminContainer --name InfraManagedContainer --env-file ./infraserver.env.list previously-committed-image startManagedServer.sh
Для каждого нового контейнера я менял имя сервера в startNodeManager.sh и монтировал его в контейнер в команде запуска docker.
Я уверен, что есть гораздо более простой способ добавить больше серверов, используя сценарии WLST для добавления экземпляров серверов в weblogic... а также для запуска новых контейнеров управляемых серверов.
если кто-нибудь знает, пожалуйста, дайте нам знать.
Спасибо!!