Tutorial: Migrar o Oracle WebLogic Server para o Serviço Kubernetes do Azure (AKS) com escalador KEDA baseado em Prometheus Metrics
Este tutorial mostra como migrar o Oracle WebLogic Server (WLS) para o Azure Kubernetes Service (AKS) e configurar o dimensionamento horizontal automático com base nas métricas Prometheus.
Neste tutorial, você realiza as seguintes tarefas:
- Saiba quais métricas de aplicativo WebLogic você pode exportar usando o WebLogic Monitoring Exporter.
- Implante e execute um aplicativo WebLogic no AKS usando uma oferta de mercado do Azure.
- Habilite o serviço gerenciado do Azure Monitor para Prometheus usando uma oferta de mercado do Azure.
- Alimente métricas WLS para um espaço de trabalho do Azure Monitor usando uma oferta de mercado do Azure.
- Integre o Kubernetes Event-driven Autoscaling (KEDA) com um cluster AKS usando uma oferta de mercado do Azure.
- Crie um escalador KEDA baseado em Prometheus Metrics.
- Valide a configuração do dimensionador.
O diagrama a seguir ilustra a arquitetura que você cria:
A oferta Oracle WebLogic Server no AKS executa um operador WLS e um domínio WLS no AKS. O operador WLS gerencia um domínio WLS implantado usando um modelo no tipo de origem do domínio da imagem . Para saber mais sobre o operador WLS, consulte Operador Oracle WebLogic Kubernetes.
O WebLogic Monitoring Exporter raspa as métricas do WebLogic Server e as alimenta para o Prometheus. O exportador usa a Interface de Gerenciamento RESTful WebLogic Server 12.2.1.x para acessar o estado de tempo de execução e as métricas.
O serviço gerenciado do Azure Monitor para Prometheus coleta e salva métricas do WLS em escala usando uma solução de monitoramento compatível com Prometheus , com base no projeto Prometheus da Cloud Native Computing Foundation. Para obter mais informações, consulte Serviço gerenciado do Azure Monitor para Prometheus.
Este artigo integra o KEDA ao cluster AKS para dimensionar o cluster WLS com base nas métricas Prometheus do espaço de trabalho Azure Monitor. O KEDA monitora o serviço gerenciado do Azure Monitor para Prometheus e alimenta esses dados para o AKS e o Horizontal Pod Autoscaler (HPA) para impulsionar o rápido dimensionamento da carga de trabalho do WLS.
O estado e as métricas WLS a seguir são exportados por padrão. Você pode configurar o exportador para exportar outras métricas sob demanda. Para obter uma descrição detalhada da configuração e do uso do WebLogic Monitoring Exportador, consulte WebLogic Monitoring Exporter.
Pré-requisitos
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Verifique se você tem a
Owner
função ou asContributor
funções eUser Access Administrator
na assinatura. Você pode verificar a atribuição seguindo as etapas em Listar atribuições de função do Azure usando o portal do Azure. - Prepare uma máquina local com Windows com WSL, GNU/Linux ou macOS instalado.
- Instale a CLI do Azure versão 2.54.0 ou superior para executar comandos da CLI do Azure.
- Instale e configure o kubectl.
- Instale o cURL.
- Ter as credenciais para uma conta de logon único (SSO) Oracle. Para criar uma, consulte Criar sua conta Oracle.
- Use as seguintes etapas para aceitar os termos de licença para WLS:
- Visite o Oracle Container Registry e faça login.
- Se você tiver um direito de suporte, selecione Middleware e, em seguida, pesquise e selecione weblogic_cpu.
- Se você não tiver um direito de suporte da Oracle, selecione Middleware e, em seguida, pesquise e selecione weblogic.
- Aceite o contrato de licença.
Preparar o aplicativo de exemplo
Este artigo usa testwebapp do repositório weblogic-kubernetes-operator como um aplicativo de exemplo.
Use os comandos a seguir para baixar o aplicativo de exemplo pré-criado e expandi-lo para um diretório. Como este artigo grava vários arquivos, esses comandos criam um diretório de nível superior para conter tudo.
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
Modificar o aplicativo de exemplo
Este artigo usa a métrica openSessionsCurrentCount
para aumentar e reduzir a escala do cluster WLS. Por padrão, o tempo limite da sessão no WebLogic Server é de 60 minutos. Para observar a capacidade de redução rapidamente, use as seguintes etapas para definir um tempo limite curto:
Use o comando a seguir para especificar um tempo limite de sessão de 150 segundos usando
wls:timeout-secs
. OHEREDOC
formato é usado para substituir o arquivo em testwebapp/WEB-INF/weblogic.xml com o conteúdo desejado.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
Use o seguinte comando para compactar novamente o aplicativo de exemplo:
cd testwebapp && zip -r ../testwebapp.war * && cd ..
Criar uma conta de Armazenamento do Azure e carregar o aplicativo
Use as etapas a seguir para criar uma conta de armazenamento e um contêiner. Alguns destes passos direcionam-no para outros guias. Depois de concluir as etapas, você pode carregar um aplicativo de exemplo para implantar no WLS.
- Inicie sessão no portal do Azure.
- Crie uma conta de armazenamento seguindo as etapas em Criar uma conta de armazenamento. Use as seguintes especializações para os valores nesse artigo:
- Crie um novo grupo de recursos para a conta de armazenamento.
- Em Região, selecione Leste dos EUA.
- Para Nome da conta de armazenamento, use o mesmo valor que o nome do grupo de recursos.
- Em Desempenho, selecione Standard.
- As guias restantes não precisam de especializações.
- Prossiga para validar e criar a conta e, em seguida, volte a este artigo.
- Crie um contêiner de armazenamento na conta seguindo as etapas na seção Criar um contêiner do Guia de início rápido: carregar, baixar e listar blobs com o portal do Azure.
- No mesmo artigo, siga as etapas na seção Carregar um blob de bloco para carregar o arquivo testwebapp.war . Em seguida, volte a este artigo.
Implantar o WLS no AKS usando a oferta do Azure Marketplace
Nesta seção, você cria um cluster WLS no AKS usando a oferta Oracle WebLogic Server on AKS . A oferta fornece um conjunto completo de recursos para implantar facilmente o WebLogic Server no AKS. Este artigo se concentra nos recursos avançados de dimensionamento dinâmico da oferta. Para obter mais informações sobre a oferta, consulte Implantar um aplicativo Java com o WebLogic Server em um cluster do Serviço Kubernetes do Azure (AKS). Para obter a documentação de referência completa da oferta, consulte a documentação da Oracle.
Esta oferta implementa as seguintes opções para dimensionamento automático horizontal:
Servidor de métricas do Kubernetes. Essa opção configura todas as configurações necessárias no momento da implantação. Um autoscaler de pod horizontal (HPA) é implantado com uma variedade de métricas. Você pode personalizar ainda mais o HPA após a implantação.
Exportador de Monitoramento WebLogic. Essa opção provisiona automaticamente o WebLogic Monitoring Exporter, o serviço gerenciado do Azure Monitor para Prometheus e o KEDA. Após a conclusão da implantação da oferta, as métricas WLS são exportadas e salvas no espaço de trabalho do Azure Monitor. O KEDA é instalado com a capacidade de recuperar métricas do espaço de trabalho do Azure Monitor.
Com essa opção, você deve executar mais etapas após a implantação para concluir a configuração.
Este artigo descreve a segunda opção. Use as seguintes etapas para concluir a configuração:
Abra a oferta Oracle WebLogic Server on AKS no seu navegador e selecione Criar. Você deve ver o painel Noções básicas da oferta.
Use as seguintes etapas para preencher o painel Noções básicas :
- Verifique se o valor mostrado para Assinatura é o mesmo que tem as funções listadas na seção de pré-requisitos.
- No campo Grupo de recursos, selecione Criar novo e preencha um valor exclusivo para o grupo de recursos - por exemplo, wlsaks-eastus-20240109.
- Em Detalhes da instância, para Região, selecione Leste dos EUA.
- Em Credenciais WebLogic, forneça uma senha para criptografia WebLogic Administrator e WebLogic Model, respectivamente. Guarde de lado o nome de utilizador e a palavra-passe do WebLogic Administrator.
- Ao lado de Configuração básica opcional, selecione Não.
- Em Configuração básica opcional, defina Tamanho máximo do cluster dinâmico como 10. Esse valor permite observar o comportamento de dimensionamento automático.
Selecione Avançar e vá para a guia AKS .
Em Seleção de imagem, use as seguintes etapas:
- Para Username for Oracle Single Sign-On authentication, preencha seu nome de usuário Oracle SSO a partir dos pré-requisitos.
- Para autenticação de Senha para Logon Único Oracle, preencha suas credenciais Oracle SSO a partir dos pré-requisitos.
Em Aplicativo, use as seguintes etapas:
Na seção Aplicativo, ao lado de Implantar um aplicativo?, selecione Sim.
Ao lado de Pacote do aplicativo (.war,.ear,.jar), selecione Procurar.
Comece a digitar o nome da conta de armazenamento na seção anterior. Quando a conta de armazenamento desejada aparecer, selecione-a.
Selecione o contêiner de armazenamento na seção anterior.
Marque a caixa de seleção ao lado de testwebapp.war, que você carregou na seção anterior. Selecione Selecionar.
Selecione Seguinte.
Deixe os valores padrão no painel Configuração TLS/SSL. Selecione Avançar para ir para o painel Balanceamento de Carga e use as seguintes etapas:
- Deixe os valores padrão para todas as opções, exceto Criar ingresso para o Console de Administração. Certifique-se de que nenhum aplicativo com o caminho /console*, ele causará conflito com o caminho do Console de Administração. Para esta opção, selecione Sim.
- Deixe os valores padrão para os campos restantes.
- Selecione Seguinte.
Deixe os valores padrão para o painel DNS e selecione Avançar para ir para o painel Banco de dados .
Deixe os valores padrão para o painel Banco de dados, selecione Avançar para ir para o painel Dimensionamento automático e use as seguintes etapas:
- Ao lado de Provisionar recursos para dimensionamento automático horizontal?, selecione Sim.
- Em Configurações de dimensionamento automático horizontal, ao lado de Selecionar opção de dimensionamento automático., selecione WebLogic Monitor Exporter (advanced autoscaling).
- Selecione Rever + criar.
Aguarde até que a Execução da validação final... seja concluída com êxito e, em seguida, selecione Criar. Depois de um tempo, você verá a página Implantação onde a Implantação está em andamento é exibida.
Se vir algum problema durante a execução da validação final..., corrija-o e tente novamente.
Conectar-se ao cluster AKS
As seções a seguir exigem um terminal instalado kubectl
para gerenciar o cluster WLS. Para instalar kubectl
localmente, use o comando az aks install-cli .
Use as seguintes etapas para se conectar ao cluster AKS:
- Abra o portal do Azure e vá para o grupo de recursos que você provisionou na seção Implantar WLS no AKS usando a oferta do Azure Marketplace.
- Selecione o recurso do tipo serviço Kubernetes na lista de recursos.
- Selecione Ligar. A orientação para conectar o cluster AKS é exibida.
- Selecione CLI do Azure e siga as etapas para se conectar ao cluster AKS em seu terminal local.
Recuperar métricas do espaço de trabalho do Azure Monitor
Use as seguintes etapas para ver as métricas no espaço de trabalho do Azure Monitor usando consultas Prometheus Query Language (PromQL):
No portal do Azure, exiba o grupo de recursos usado na seção Implantar WLS no AKS usando a oferta do Azure Marketplace.
Selecione o recurso do tipo espaço de trabalho Azure Monitor.
Em Managed Prometheus, selecione Prometheus explorer.
Entrada
webapp_config_open_sessions_current_count
para consultar a conta atual de sessões abertas, conforme mostrado na captura de tela a seguir:
Nota
Você pode usar o seguinte comando para acessar as métricas expondo o WebLogic Monitoring Exporter:
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
Aguarde até que a EXTERNAL-IP
coluna na linha mude sample-domain1-cluster-1-exporter
para <pending>
um endereço IP. Em seguida, abra a URL http://<exporter-public-ip>:8080/metrics
em um navegador e entre com as credenciais especificadas ao implantar a oferta. Aqui, você pode encontrar todas as métricas disponíveis. Você pode inserir qualquer um deles na janela PromQL para exibi-los no Azure Monitor. Por exemplo, heap_free_percent
mostra um gráfico interessante. Para observar a pressão da memória à medida que a carga é aplicada ao aplicativo, defina Atualização automática e Intervalo de tempo para o menor intervalo possível e deixe a guia aberta.
Criar o escalador KEDA
Os escaladores definem como e quando o KEDA deve dimensionar uma implantação. Este artigo usa o escalonador Prometheus para recuperar métricas do Prometheus do espaço de trabalho do Azure Monitor.
Este artigo usa openSessionsCurrentCount
como gatilho. A regra para esta métrica é descrita da seguinte forma. Quando a contagem média de sessões abertas for superior a 10, aumente a escala do cluster WLS até atingir o tamanho máximo da réplica. Caso contrário, reduza a escala do cluster WLS até que ele atinja seu tamanho mínimo de réplica. A tabela a seguir lista os parâmetros importantes:
Nome do parâmetro | Value |
---|---|
serverAddress |
O ponto de extremidade Consulta do seu espaço de trabalho do Azure Monitor. |
metricName |
webapp_config_open_sessions_current_count |
query |
sum(webapp_config_open_sessions_current_count{app="app1"}) |
threshold |
10 |
minReplicaCount |
1 |
maxReplicaCount |
O valor padrão é 5. Se você modificou o tamanho máximo do cluster durante a implantação da oferta, substitua pelo tamanho máximo do cluster. |
Como você selecionou o WebLogic Monitoring Exporter no momento da implantação, um escalador KEDA está pronto para ser implantado. As etapas a seguir mostram como configurar o escalador KEDA para uso com seu cluster AKS:
Abra o portal do Azure e vá para o grupo de recursos que você provisionou na seção Implantar WLS no AKS usando a oferta do Azure Marketplace.
No painel de navegação, na seção Configurações , selecione Implantações. Você verá uma lista ordenada das implantações para esse grupo de recursos, com a mais recente primeiro.
Desloque-se para a entrada mais antiga desta lista. Esta entrada corresponde à implantação iniciada na seção anterior. Selecione a implantação mais antiga, cujo nome começa com algo semelhante a
oracle.20210620-wls-on-aks
.Selecione Saídas. Esta opção mostra a lista de saídas da implantação.
O valor kedaScalerServerAddress é o endereço do servidor que salva as métricas WLS. KEDA é capaz de acessar e recuperar métricas do endereço.
O valor shellCmdtoOutputKedaScalerSample é a
base64
cadeia de caracteres de uma amostra de scaler. Copie o valor e execute-o no seu terminal. O comando deve ser semelhante ao exemplo a seguir:echo -e YXBpVm...XV0aAo= | base64 -d > scaler.yaml
Este comando produz um arquivo scaler.yaml no diretório atual.
Modifique as
metric:
linhas equery:
em scaler.yaml como mostrado no exemplo a seguir:metricName: webapp_config_open_sessions_current_count query: sum(webapp_config_open_sessions_current_count{app="app1"})
Nota
Quando você implanta um aplicativo com a oferta, ele é nomeado
app1
por padrão. Você pode usar as seguintes etapas para acessar o console de administração do WLS para obter o nome do aplicativo:- Use as etapas anteriores para exibir as saídas de implantação.
- O valor adminConsoleExternalUrl é o link público e totalmente qualificado visível da Internet para o console de administração do WLS. Selecione o ícone de cópia ao lado do valor do campo para copiar o link para a área de transferência.
- Cole o valor no navegador e abra o console de administração do WLS.
- Entre com a conta de administrador do WLS, que você salvou durante a seção Implantar WLS no AKS usando a oferta do Azure Marketplace.
- Em Estrutura do Domínio, selecione Implantações. Você encontra app1 listado.
- Selecione app1 para descobrir que o valor Name do aplicativo é
app1
. Useapp1
como o nome do aplicativo na consulta.
Se desejar, modifique a
maxReplicaCount:
linha em scaler.yaml como mostrado no exemplo a seguir. É um erro definir esse valor mais alto do que o especificado no momento da implantação na guia AKS .maxReplicaCount: 10
Use o seguinte comando para criar a regra de escalador KEDA aplicando scaler.yaml:
kubectl apply -f scaler.yaml
Leva vários minutos para o KEDA recuperar métricas do espaço de trabalho do Azure Monitor. Você pode observar o status do escalador usando o seguinte comando:
kubectl get hpa -n sample-domain1-ns -w
Depois que o dimensionador estiver pronto para funcionar, a saída será semelhante ao conteúdo a seguir. O valor na coluna alterna
TARGETS
de<unknown>
para0
.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
Testar o dimensionamento automático
Agora, você está pronto para observar a capacidade de dimensionamento automático. Este artigo abre novas sessões usando curl
para acessar o aplicativo. Depois que a contagem média de sessões for maior que 10, a ação de dimensionamento acontece. As sessões duram 150 segundos e a contagem de sessões abertas diminui à medida que as sessões expiram. Depois que a contagem média de sessões for inferior a 10, a ação de redução de escala acontece. Use as seguintes etapas para causar as ações de dimensionamento e redução:
Use as seguintes etapas para obter a URL do aplicativo:
- Use as etapas anteriores para exibir as saídas de implantação.
- O valor clusterExternalUrl é o link totalmente qualificado, público e visível pela Internet para o aplicativo de exemplo implantado no WLS neste cluster AKS. Para copiar o link para a área de transferência, selecione o ícone de cópia ao lado do valor do campo.
- O URL para acessar testwebapp.war é
${clusterExternalUrl}testwebapp
- por exemplo,http://wlsgw202403-wlsaks0314-domain1.eastus.cloudapp.azure.com/testwebapp/
.
Execute o
curl
comando para acessar o aplicativo e causar novas sessões. O exemplo a seguir abre 22 novas sessões. As sessões expiram após 150 segundos. Substitua o valor WLS_CLUSTER_EXTERNAL_URL pelo seu.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
Em dois shells separados, use os seguintes comandos:
Use o seguinte comando para observar o escalador:
kubectl get hpa -n sample-domain1-ns -w
Este comando produz uma saída semelhante ao exemplo a seguir:
$ 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
Em um shell separado, use o seguinte comando para observar os pods WLS:
kubectl get pod -n sample-domain1-ns -w
Este comando produz uma saída semelhante ao exemplo a seguir:
$ 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
O gráfico no espaço de trabalho do Azure Monitor é semelhante à captura de tela a seguir:
Clean up resources (Limpar recursos)
Para evitar cobranças do Azure, você deve limpar recursos desnecessários. Quando não precisar mais do cluster, use o comando az group delete . Os comandos a seguir removem o grupo de recursos, o serviço de contêiner, o registro de contêiner e todos os recursos relacionados:
az group delete --name <wls-resource-group-name> --yes --no-wait
az group delete --name <ama-resource-group-name> --yes --no-wait
Próximos passos
Continue a explorar as seguintes referências para obter mais opções para criar soluções de dimensionamento automático e executar o WLS no Azure: