Руководство по переносу Oracle WebLogic Server в Служба Azure Kubernetes (AKS) с масштабировщиком KEDA на основе метрик Prometheus
В этом руководстве показано, как перенести Oracle WebLogic Server (WLS) в Служба Azure Kubernetes (AKS) и настроить автоматическое горизонтальное масштабирование на основе метрик Prometheus.
В этом руководстве вы выполните следующие задачи:
- Узнайте, какие метрики приложения WebLogic можно экспортировать с помощью экспортера мониторинга WebLogic.
- Разверните и запустите приложение WebLogic в AKS с помощью предложения Azure Marketplace.
- Включите управляемую службу Azure Monitor для Prometheus с помощью предложения Azure Marketplace.
- Канал метрик WLS в рабочую область Azure Monitor с помощью предложения Azure Marketplace.
- Интеграция автомасштабирования на основе событий Kubernetes (KEDA) с кластером AKS с помощью предложения Azure Marketplace.
- Создайте масштабировщик KEDA на основе метрик Prometheus.
- Проверьте конфигурацию масштабировщика.
На следующей схеме показана архитектура, которая вы создаете:
Предложение Oracle WebLogic Server в AKS выполняет оператор WLS и домен WLS в AKS. Оператор WLS управляет доменом WLS, развернутым с помощью модели в исходном типе домена образа . Дополнительные сведения о операторе WLS см. в статье Oracle WebLogic Kubernetes Operator.
Экспортер веб-мониторинга удаляет метрики WebLogic Server и передает их в Prometheus. Экспортер использует интерфейс управления RESTful WebLogic Server 12.2.1.x для доступа к состоянию и метрикам среды выполнения.
Управляемая служба Azure Monitor для Prometheus собирает и сохраняет метрики из WLS в масштабе с помощью решения мониторинга, совместимого с Prometheus, на основе проекта Prometheus из Cloud Native Computing Foundation. Дополнительные сведения см. в статье об управляемой службе Azure Monitor для Prometheus.
Эта статья интегрирует KEDA с кластером AKS для масштабирования кластера WLS на основе метрик Prometheus из рабочей области Azure Monitor. KEDA отслеживает управляемую службу Azure Monitor для Prometheus и передает эти данные в AKS и горизонтальное автомасштабирование pod (HPA) для быстрого масштабирования рабочей нагрузки WLS.
По умолчанию экспортируются следующие состояния и метрики WLS. Вы можете настроить экспортера для экспорта других метрик по запросу. Подробное описание конфигурации и использования экспортера мониторинга WebLogic см. в разделе "Экспортер мониторинга WebLogic".
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.
- Убедитесь, что у вас есть
Owner
роль илиContributor
User Access Administrator
роли в подписке. Чтобы проверить назначение, выполните действия, описанные в разделе "Перечисление назначений ролей Azure" с помощью портал Azure. - Подготовьте локальный компьютер с windows с установленным WSL, GNU/Linux или macOS.
- Установите Azure CLI версии 2.54.0 или более поздней, чтобы запустить команды Azure CLI.
- Установите и настройте kubectl.
- Установите cURL.
- У вас есть учетные данные для учетной записи единого входа Oracle. Сведения о создании учетной записи Oracle см. в разделе "Создание учетной записи Oracle".
- Чтобы принять условия лицензии для WLS, выполните следующие действия.
- Посетите реестр контейнеров Oracle и войдите в систему.
- Если у вас есть право на поддержку, выберите по промежуточному слоям, а затем найдите и выберите weblogic_cpu.
- Если у вас нет прав на поддержку из Oracle, выберите по промежуточному слоям, а затем найдите и выберите weblogic.
- Принимается лицензионное соглашение.
Подготовка примера приложения
В этой статье используется testwebapp из репозитория операторов weblogic-kubernetes-operator в качестве примера приложения.
Используйте следующие команды, чтобы скачать предварительно созданный пример приложения и развернуть его в каталоге. Так как в этой статье записывается несколько файлов, эти команды создают каталог верхнего уровня для хранения всего.
export BASE_DIR=$PWD/wlsaks
mkdir $BASE_DIR && cd $BASE_DIR
curl -L -o testwebapp.war https://aka.ms/wls-aks-testwebapp
unzip -d testwebapp testwebapp.war
Изменение примера приложения
В этой статье используется метрика openSessionsCurrentCount
для увеличения и уменьшения масштаба кластера WLS. По умолчанию время ожидания сеанса на webLogic Server составляет 60 минут. Чтобы быстро наблюдать за возможностью уменьшения масштаба, выполните следующие действия, чтобы задать короткое время ожидания:
Используйте следующую команду, чтобы указать время ожидания сеанса в 150 секунд с помощью
wls:timeout-secs
. ФорматHEREDOC
используется для перезаписи файла в testwebapp/WEB-INF/weblogic.xml с нужным содержимым.cat <<EOF > testwebapp/WEB-INF/weblogic.xml <?xml version="1.0" encoding="UTF-8"?> <wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"> <wls:weblogic-version>12.2.1</wls:weblogic-version> <wls:jsp-descriptor> <wls:keepgenerated>false</wls:keepgenerated> <wls:debug>false</wls:debug> </wls:jsp-descriptor> <wls:context-root>testwebapp</wls:context-root> <wls:session-descriptor> <wls:timeout-secs>150</wls:timeout-secs> </wls:session-descriptor> </wls:weblogic-web-app> EOF
Используйте следующую команду, чтобы получить пример приложения:
cd testwebapp && zip -r ../testwebapp.war * && cd ..
Создание учетной записи служба хранилища Azure и отправка приложения
Чтобы создать учетную запись хранения и контейнер, выполните следующие действия. Некоторые из этих шагов направляют вас к другим руководствам. Выполнив действия, вы можете отправить пример приложения для развертывания в WLS.
- Войдите на портал Azure.
- Создайте учетную запись хранения, выполнив действия, описанные в разделе "Создание учетной записи хранения". Используйте следующие специализации для значений в этой статье:
- Создайте новую группу ресурсов для учетной записи хранения.
- В поле Страна или регион выберите Восточная часть США.
- Для имени учетной записи хранения используйте то же значение, что и имя группы ресурсов.
- В разделе Производительность выберите Стандартная.
- Остальные вкладки не нуждаются в специализациях.
- Перейдите к проверке и созданию учетной записи, а затем вернитесь к этой статье.
- Создайте контейнер хранилища в учетной записи, выполнив действия, описанные в разделе "Создание контейнера" краткого руководства. Отправка, скачивание и перечисление BLOB-объектов с помощью портал Azure.
- В той же статье выполните действия, описанные в разделе "Отправка блочного BLOB-объекта ", чтобы отправить файл testwebapp.war . Затем вернитесь к этой статье.
Развертывание WLS в AKS с помощью предложения Azure Marketplace
В этом разделе описано, как создать кластер WLS в AKS с помощью oracle WebLogic Server в предложении AKS . Предложение предоставляет полный набор функций для легкого развертывания WebLogic Server в AKS. В этой статье рассматриваются расширенные возможности динамического масштабирования предложения. Дополнительные сведения о предложении см. в статье "Развертывание приложения Java с помощью WebLogic Server" в кластере Служба Azure Kubernetes (AKS). Полную справочную документацию по предложению см . в документации по Oracle.
Это предложение реализует следующие варианты горизонтального автомасштабирования:
Сервер метрик Kubernetes. Этот выбор настраивает всю необходимую конфигурацию во время развертывания. Горизонтальное автомасштабирование pod (HPA) развертывается с выбором метрик. Вы можете дополнительно настроить HPA после развертывания.
Экспортер веб-мониторинга WebLogic. Этот выбор автоматически подготавливает экспортера мониторинга WebLogic, управляемую службу Azure Monitor для Prometheus и KEDA. После завершения развертывания предложения метрики WLS экспортируются и сохраняются в рабочей области Azure Monitor. KEDA устанавливается с возможностью получения метрик из рабочей области Azure Monitor.
С помощью этого параметра необходимо выполнить дополнительные действия после развертывания, чтобы завершить настройку.
В этой статье описывается второй вариант. Чтобы завершить настройку, выполните следующие действия.
Откройте предложение Oracle WebLogic Server в AKS в браузере и нажмите кнопку "Создать". Вы увидите область "Основные сведения" предложения.
Чтобы заполнить область "Основные сведения", выполните следующие действия.
- Убедитесь, что значение, отображаемое для подписки , совпадает с ролями, перечисленными в разделе предварительных требований.
- В поле группы ресурсов выберите "Создать" и введите уникальное значение для группы ресурсов, например wlsaks-eastus-20240109.
- В разделе "Сведения об экземпляре" для региона выберите "Восточная часть США".
- В разделе Credentials WebLogic укажите пароль для шифрования webLogic Administrator и WebLogic Model соответственно. Сохраните имя пользователя и пароль администратора WebLogic.
- Рядом с необязательной базовой конфигурацией нажмите кнопку "Нет".
- В разделе "Необязательная базовая конфигурация" задайте максимальный размер динамического кластера 10. Это значение позволяет наблюдать за поведением автомасштабирования.
Нажмите кнопку "Далее " и перейдите на вкладку AKS .
В разделе "Выбор изображения" выполните следующие действия.
- Для проверки подлинности единого входа Oracle введите имя пользователя единого входа Oracle из предварительных требований.
- Для проверки подлинности единого входа Oracle введите учетные данные единого входа Oracle из предварительных требований.
В разделе "Приложение" выполните следующие действия.
В разделе "Приложение" рядом с пунктом "Развернуть приложение?", нажмите кнопку "Да".
Рядом с пакетом приложения (.war,.ear,.jar), выберите "Обзор".
Начните вводить имя учетной записи хранения из предыдущего раздела. Когда появится требуемая учетная запись хранения, выберите ее.
Выберите контейнер хранилища из предыдущего раздела.
Установите флажок рядом с testwebapp.war, который вы добавили в предыдущем разделе. Выберите Выбрать.
Выберите Далее.
Оставьте значения по умолчанию в области конфигурации TLS/SSL. Нажмите кнопку "Далее ", чтобы перейти к области балансировки нагрузки , а затем выполните следующие действия.
- Оставьте значения по умолчанию для всех параметров, кроме создания входящего трафика для консоли администрирования. Убедитесь, что приложение без пути /console*, оно приведет к конфликту с путьом консоли администрирования. Для этого параметра выберите "Да".
- В остальных полях оставьте значения по умолчанию.
- Выберите Далее.
Оставьте значения по умолчанию для области DNS , а затем нажмите кнопку "Далее ", чтобы перейти на панель "База данных ".
Оставьте значения по умолчанию для области "База данных ", нажмите кнопку "Далее ", чтобы перейти к области автомасштабирования , а затем выполните следующие действия:
- Рядом с ресурсами подготовки для горизонтального автомасштабирования?нажмите кнопку "Да".
- В разделе "Параметры горизонтального автомасштабирования" рядом с параметром "Выбор автомасштабирования". Выберите "Экспорт webLogic Monitor" (расширенная автомасштабирование)".
- Выберите Review + create (Просмотреть и создать).
Дождитесь завершения последней проверки, а затем нажмите кнопку "Создать". Через некоторое время отобразится страница развертывания , на которой выполняется развертывание.
Если во время выполнения окончательной проверки возникли проблемы, исправьте их и повторите попытку.
Подключение к кластеру AKS
В следующих разделах требуется терминал с kubectl
установленным для управления кластером WLS. Чтобы установить kubectl
локально, используйте команду az aks install-cli .
Чтобы подключиться к кластеру AKS, выполните следующие действия.
- Откройте портал Azure и перейдите к группе ресурсов, подготовленной в развертывании WLS в AKS, с помощью раздела предложения Azure Marketplace.
- Выберите ресурс типа службы Kubernetes из списка ресурсов.
- Нажмите Подключиться. Появится руководство по подключению кластера AKS.
- Выберите Azure CLI и выполните действия, чтобы подключиться к кластеру AKS в локальном терминале.
Получение метрик из рабочей области Azure Monitor
Выполните следующие действия, чтобы просмотреть метрики в рабочей области Azure Monitor с помощью запросов Prometheus Language (PromQL):
В портал Azure просмотрите группу ресурсов, используемую в развертывании WLS в AKS, с помощью раздела предложения Azure Marketplace.
Выберите ресурс типа рабочей области Azure Monitor.
В разделе "Управляемый Prometheus" выберите обозреватель Prometheus.
Входные данные
webapp_config_open_sessions_current_count
для запроса текущей учетной записи открытых сеансов, как показано на следующем снимке экрана:
Примечание.
Для доступа к метрикам можно использовать следующую команду, предоставив экспортеру мониторинга WebLogic:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: sample-domain1-cluster-1-exporter
namespace: sample-domain1-ns
spec:
ports:
- name: default
port: 8080
protocol: TCP
targetPort: 8080
selector:
weblogic.domainUID: sample-domain1
weblogic.clusterName: cluster-1
sessionAffinity: None
type: LoadBalancer
EOF
kubectl get svc -n sample-domain1-ns -w
Подождите, пока EXTERNAL-IP
столбец в строке sample-domain1-cluster-1-exporter
переключится с <pending>
IP-адреса. Затем откройте URL-адрес http://<exporter-public-ip>:8080/metrics
в браузере и войдите с помощью учетных данных, указанных при развертывании предложения. Здесь можно найти все доступные метрики. Вы можете ввести любой из них в окне PromQL, чтобы отобразить их в Azure Monitor. Например, heap_free_percent
показан интересный график. Чтобы наблюдать за давлением памяти при применении нагрузки к приложению, задайте для диапазона автоматического обновления и времени наименьший возможный интервал и оставьте вкладку открытой.
Создание масштабировщика KEDA
Масштабировщики определяют, как и когда KEDA должен масштабировать развертывание. В этой статье используется масштабировщик Prometheus для получения метрик Prometheus из рабочей области Azure Monitor.
Эта статья используется openSessionsCurrentCount
в качестве триггера. Правило для этой метрики описано следующим образом. Если среднее число открытых сеансов превышает 10, масштабируйте кластер WLS, пока не достигнет максимального размера реплики. В противном случае масштабируйте кластер WLS, пока не достигнет минимального размера реплики. В следующей таблице перечислены важные параметры:
Имя параметра | Значение |
---|---|
serverAddress |
Конечная точка запроса рабочей области Azure Monitor. |
metricName |
webapp_config_open_sessions_current_count |
query |
sum(webapp_config_open_sessions_current_count{app="app1"}) |
threshold |
10 |
minReplicaCount |
1 |
maxReplicaCount |
Значение по умолчанию равно 5. Если вы изменили максимальный размер кластера во время развертывания предложения, замените максимальный размер кластера. |
Так как во время развертывания выбран экспортер webLogic Monitoring, масштабировщик KEDA готов к развертыванию. Ниже показано, как настроить масштабировщик KEDA для использования с кластером AKS:
Откройте портал Azure и перейдите к группе ресурсов, подготовленной в развертывании WLS в AKS, с помощью раздела предложения Azure Marketplace.
В области навигации в разделе "Параметры" выберите "Развертывания". Вы увидите упорядоченный список развертываний в этой группе ресурсов с последним первым.
Прокрутите до самой старой записи в этом списке. Эта запись соответствует развертыванию, начатому в предыдущем разделе. Выберите самое старое развертывание, имя которого начинается с чего-то подобного
oracle.20210620-wls-on-aks
.Выберите Выходные данные. Этот параметр отображает список выходных данных из развертывания.
Значение kedaScalerServerAddress — это адрес сервера, который сохраняет метрики WLS. KEDA может получить доступ к метрикам и получить их из адреса.
Значение shellCmdtoOutputKedaScalerSample является
base64
строкой примера масштабировщика. Скопируйте значение и запустите его в терминале. Команда должна выглядеть примерно так:echo -e YXBpVm...XV0aAo= | base64 -d > scaler.yaml
Эта команда создает файл scaler.yaml в текущем каталоге.
Измените
metric:
иquery:
строки в scaler.yaml , как показано в следующем примере:metricName: webapp_config_open_sessions_current_count query: sum(webapp_config_open_sessions_current_count{app="app1"})
Примечание.
При развертывании приложения с предложением оно по умолчанию называется
app1
. Чтобы получить имя приложения, выполните следующие действия для доступа к консоли администрирования WLS:- Чтобы просмотреть выходные данные развертывания, выполните указанные выше действия.
- Значение adminConsoleExternalUrl является полной общедоступной видимой ссылкой на консоль администрирования WLS. Щелкните значок копирования рядом со значением поля, чтобы скопировать ссылку в буфер обмена.
- Вставьте значение в браузер и откройте консоль администрирования WLS.
- Войдите с помощью учетной записи администратора WLS, которая была сохранена во время развертывания WLS в AKS с помощью раздела предложения Azure Marketplace.
- В разделе "Структура домена" выберите "Развертывания". Вы найдете приложение1 , указанное в списке.
- Выберите app1, чтобы найти, что ". Используйте
app1
в качестве имени приложения в запросе.
При необходимости измените
maxReplicaCount:
строку в scaler.yaml , как показано в следующем примере. Это ошибка, чтобы задать это значение выше, чем указано во время развертывания на вкладке AKS .maxReplicaCount: 10
Чтобы создать правило масштабирования KEDA, используйте следующую команду, применяя scaler.yaml:
kubectl apply -f scaler.yaml
Для получения метрик из рабочей области Azure Monitor требуется несколько минут. Вы можете просмотреть состояние масштабировщика с помощью следующей команды:
kubectl get hpa -n sample-domain1-ns -w
После того как масштабировщик будет готов к работе, выходные данные выглядят примерно так, как показано ниже. Значение в столбце
TARGETS
переключается с<unknown>
0
.NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 0/10 (avg) 1 5 2 15s
Проверка автомасштабирования
Теперь вы готовы наблюдать за возможностью автомасштабирования. В этой статье открываются новые сеансы, использующиеся curl
для доступа к приложению. После того, как среднее число сеансов превышает 10, действие масштабирования происходит. Сеансы длились в течение 150 секунд, а число открытых сеансов уменьшается по мере истечения срока действия сеансов. После среднего количества сеансов меньше 10 действие масштабирования происходит. Выполните следующие действия, чтобы привести к масштабированию и масштабированию действий:
Чтобы получить URL-адрес приложения, выполните следующие действия.
- Чтобы просмотреть выходные данные развертывания, выполните указанные выше действия.
- Значение clusterExternalUrl является полной, общедоступной, видимой в Интернете ссылкой на пример приложения, развернутого в WLS в этом кластере AKS. Чтобы скопировать ссылку на буфер обмена, щелкните значок копирования рядом со значением поля.
- URL-адрес для доступа к testwebapp.war —
${clusterExternalUrl}testwebapp
например.http://wlsgw202403-wlsaks0314-domain1.eastus.cloudapp.azure.com/testwebapp/
Выполните команду, чтобы получить доступ к приложению
curl
и вызвать новые сеансы. В следующем примере открывается 22 новых сеанса. Срок действия сеансов истекает через 150 секунд. Замените значение WLS_CLUSTER_EXTERNAL_URL вашими.COUNTER=0 MAXCURL=22 WLS_CLUSTER_EXTERNAL_URL="http://wlsgw202403-wlsaks0314-domain1.eastus.cloudapp.azure.com/" APP_URL="${WLS_CLUSTER_EXTERNAL_URL}testwebapp/" while [ $COUNTER -lt $MAXCURL ]; do curl ${APP_URL}; let COUNTER=COUNTER+1; sleep 1;done
В двух отдельных оболочках используйте следующие команды:
Используйте следующую команду для наблюдения за масштабировщиком:
kubectl get hpa -n sample-domain1-ns -w
Эта команда создает выходные данные, похожие на следующий пример:
$ kubectl get hpa -n sample-domain1-ns -w NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 0/10 (avg) 1 10 1 24m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 0/10 (avg) 1 10 1 24m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 5/10 (avg) 1 10 1 26m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 22/10 (avg) 1 10 1 27m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 7334m/10 (avg) 1 10 3 29m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 14667m/10 (avg) 1 10 3 48m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 0/10 (avg) 1 10 3 30m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 0/10 (avg) 1 10 3 35m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 0/10 (avg) 1 10 1 35m keda-hpa-azure-managed-prometheus-scaler Cluster/sample-domain1-cluster-1 0/10 (avg) 1 10 5 53m
В отдельной оболочке используйте следующую команду для наблюдения за модулями pod WLS:
kubectl get pod -n sample-domain1-ns -w
Эта команда создает выходные данные, похожие на следующий пример:
$ kubectl get pod -n sample-domain1-ns -w NAME READY STATUS RESTARTS AGE sample-domain1-admin-server 2/2 Running 0 28h sample-domain1-managed-server1 2/2 Running 0 28h sample-domain1-managed-server1 2/2 Running 0 28h sample-domain1-managed-server2 0/2 Pending 0 0s sample-domain1-managed-server2 0/2 Pending 0 0s sample-domain1-managed-server2 0/2 ContainerCreating 0 0s sample-domain1-managed-server3 0/2 Pending 0 0s sample-domain1-managed-server3 0/2 Pending 0 0s sample-domain1-managed-server3 0/2 ContainerCreating 0 0s sample-domain1-managed-server3 1/2 Running 0 1s sample-domain1-admin-server 2/2 Running 0 95m sample-domain1-managed-server1 2/2 Running 0 94m sample-domain1-managed-server2 2/2 Running 0 56s sample-domain1-managed-server3 2/2 Running 0 55s sample-domain1-managed-server4 1/2 Running 0 9s sample-domain1-managed-server5 1/2 Running 0 9s sample-domain1-managed-server5 2/2 Running 0 37s sample-domain1-managed-server4 2/2 Running 0 42s sample-domain1-managed-server5 1/2 Terminating 0 6m46s sample-domain1-managed-server5 1/2 Terminating 0 6m46s sample-domain1-managed-server4 1/2 Running 0 6m51s sample-domain1-managed-server4 1/2 Terminating 0 6m53s sample-domain1-managed-server4 1/2 Terminating 0 6m53s sample-domain1-managed-server3 1/2 Running 0 7m40s sample-domain1-managed-server3 1/2 Terminating 0 7m45s sample-domain1-managed-server3 1/2 Terminating 0 7m45s
Граф в рабочей области Azure Monitor выглядит следующим образом:
Очистка ресурсов
Чтобы избежать расходов за использование Azure, необходимо удалить ненужные ресурсы. Если кластер больше не нужен, используйте команду az group delete . Следующие команды удаляют группу ресурсов, службу контейнеров, реестр контейнеров и все связанные ресурсы:
az group delete --name <wls-resource-group-name> --yes --no-wait
az group delete --name <ama-resource-group-name> --yes --no-wait
Следующие шаги
Перейдите к следующим ссылкам для получения дополнительных параметров для создания решений автомасштабирования и запуска WLS в Azure: