Руководство по установке Red Hat JBoss EAP в Azure Виртуальные машины вручную

В этом руководстве показано, как установить Red Hat JBoss EAP и настроить кластер в режиме домена в azure Виртуальные машины (виртуальных машинах) в Red Hat Enterprise Linux (RHEL).

Из этого руководства вы узнаете, как выполнять такие задачи:

  • Создайте пользовательскую виртуальную сеть и создайте виртуальные машины в сети.
  • Установите требуемый JDK и Red Hat JBoss EAP на виртуальных машинах с помощью командной строки вручную.
  • Настройте кластер Red Hat JBoss EAP в режиме домена с помощью интерфейса командной строки (CLI).
  • Настройте подключение к источнику данных PostgreSQL в кластере.
  • Разверните и запустите пример приложения Java EE в кластере.
  • Предоставление приложению общедоступному Интернету через Шлюз приложений Azure.
  • Проверьте успешную конфигурацию.

Если вы предпочитаете полностью автоматизированное решение, которое выполняет все эти действия от вашего имени на виртуальных машинах GNU/Linux непосредственно из портал Azure, см. краткое руководство. Развертывание сервера JBoss EAP на виртуальной машине Azure с помощью портал Azure.

Примечание.

Эта статья содержит упоминания термина slave (ведомый) . Корпорация Майкрософт больше не использует его. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.

Необходимые компоненты

  • Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.

  • Установите Azure CLI версии 2.51.0 или более поздней , чтобы выполнить команды Azure CLI.

    • Если появится запрос, установите расширения Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
  • Убедитесь, что у вас есть необходимые лицензии Red Hat. У вас должна быть учетная запись Red Hat с правами Red Hat Subscription Management (RHSM) для Red Hat JBoss EAP. Это право позволяет полностью автоматизированному решению упоминание ранее (в развертывании сервера JBoss EAP на виртуальной машине Azure с помощью портал Azure) установить проверенную и сертифицированную версию JBoss EAP Red Hat.

    Примечание.

    Если у вас нет прав на EAP, вы можете зарегистрироваться для получения бесплатной подписки разработчика через подписку Red Hat developer для частных лиц. Запишите сведения об учетной записи, которая используется в качестве имени пользователя RHSM и пароля RHSM в следующем разделе.

  • Если вы уже зарегистрированы или после завершения регистрации, вы можете найти необходимые учетные данные (идентификаторы пула), выполнив следующие действия. Эти идентификаторы пула также используются в качестве идентификатора пула RHSM с правами EAP в последующих шагах.

    1. Войдите в учетную запись Red Hat.

    2. При первом входе вам будет предложено завершить профиль. В зависимости от использования выберите "Персональный" или"Корпоративный" для типа учетной записи, как показано на следующем снимке экрана:

      Снимок экрана: окно учетной записи Red Hat, в котором показаны параметры типа учетной записи с выбранным параметром

    3. Откройте подписку разработчика Red Hat для частных лиц. Эта ссылка позволяет вам перейти ко всем подпискам в учетной записи для соответствующего номера SKU.

    4. В строке элементов управления в таблице "Все приобретенные подписки" выберите "Активный". Это гарантирует, что отображаются только активные подписки.

    5. Выберите заголовок столбца сортировки для даты окончания до тех пор, пока в будущем значение не будет отображаться как первая строка.

    6. Выделите первую строку. Затем скопируйте и запишите значение следующих главных пулов из идентификаторов пулов.

  • Java JDK версии 11. В этом руководстве мы рекомендуем Red Hat Build of OpenJDK. Убедитесь, что JAVA_HOME переменная среды правильно задана в оболочках, в которых выполняются команды.

  • Git; используется git --version для проверки того, работает ли git работа. Это руководство было протестировано с версией 2.25.1.

  • Maven; используется mvn -version для проверки того, работает ли mvn работа. Это руководство было протестировано с версией 3.6.3.

Подготовка среды

В этом разделе описана настройка инфраструктуры, в которой устанавливается JDK, Red Hat JBoss EAP и драйвер JDBC PostgreSQL.

Предположения

В этом руководстве настраивается кластер Red Hat JBoss EAP в режиме домена с сервером администрирования и двумя управляемыми серверами в общей сложности на трех виртуальных машинах. Чтобы настроить кластер, необходимо создать следующие три виртуальных машины Azure:

  • Виртуальная машина администратора (имя adminVMвиртуальной машины) выполняется в качестве контроллера домена.
  • Две управляемые виртуальные машины (имена mspVM1 виртуальных машин и mspVM2) выполняются в качестве контроллера узла.

Вход в Azure

Если вы еще не сделали этого, войдите в подписку Azure с помощью команды az login и следуя инструкциям на экране.

az login

Примечание.

Если у вас несколько клиентов Azure, связанных с учетными данными Azure, необходимо указать, в какой клиент вы хотите войти. Это можно сделать с --tenant помощью параметра. Например, az login --tenant contoso.onmicrosoft.com.

Создание или изменение группы ресурсов

Создайте группу ресурсов с помощью команды az group create. Имена групп ресурсов должны быть глобально уникальными в подписке. По этой причине рекомендуется указать уникальный идентификатор для всех созданных имен, которые должны быть уникальными. Полезный способ — использовать ваши инициалы, за которыми следует сегодняшняя дата в mmdd формате. В этом примере создается группа ресурсов с именем abc1110rg в расположении eastus :

az group create \
    --name abc1110rg \
    --location eastus

Создание виртуальной сети

Ресурсы, состоящие из кластера Red Hat JBoss EAP, должны взаимодействовать друг с другом и общедоступным Интернетом, используя виртуальную сеть. Полное руководство по планированию виртуальной сети см. в руководстве По планированию виртуальных сетей в Cloud Adoption Framework для Azure. Дополнительные сведения см. в статье azure виртуальная сеть часто задаваемые вопросы.

В этом разделе создается виртуальная сеть с адресным пространством 192.168.0.0/16 и создается подсеть, используемая для виртуальных машин.

Сначала создайте виртуальную сеть с помощью az network vnet create. В следующем примере создается сеть с именем myVNet:

az network vnet create \
    --resource-group abc1110rg \
    --name myVNet \
    --address-prefixes 192.168.0.0/24

Создайте подсеть для кластера Red Hat JBoss EAP с помощью az network vnet subnet create. В следующем примере создается подсеть с именем mySubnet

az network vnet subnet create \
    --resource-group abc1110rg \
    --name mySubnet \
    --vnet-name myVNet \
    --address-prefixes 192.168.0.0/25

Создайте подсеть для Шлюз приложений с помощью az network vnet subnet create. В следующем примере создается подсеть с именем jbossVMGatewaySubnet

az network vnet subnet create \
    --resource-group abc1110rg \
    --name jbossVMGatewaySubnet \
    --vnet-name myVNet \
    --address-prefixes 192.168.0.128/25

Создайте группу безопасности сети и назначьте ей подсети.

Перед созданием виртуальных машин с общедоступными IP-адресами создайте группу безопасности сети (NSG), чтобы защитить виртуальную сеть и подсети, созданные ранее.

Создайте группу безопасности сети с помощью команды az network nsg create. В следующем примере создается группа безопасности сети с именем mynsg.

az network nsg create \
    --resource-group abc1110rg \
    --name mynsg

Создайте правила группы безопасности сети с помощью az network nsg rule create. В следующем примере создаются правила группы безопасности сети с именем ALLOW_APPGW и ALLOW_HTTP_ACCESS. Эти правила позволяют шлюзу приложений принимать входящий трафик на HTTP-портах, используемых Red Hat JBoss EAP:

az network nsg rule create \
    --resource-group abc1110rg \
    --nsg-name mynsg \
    --name ALLOW_APPGW \
    --protocol Tcp \
    --destination-port-ranges 65200-65535 \
    --source-address-prefix GatewayManager \
    --destination-address-prefix '*' \
    --access Allow \
    --priority 500 \
    --direction Inbound

az network nsg rule create \
    --resource-group abc1110rg \
    --nsg-name mynsg \
    --name ALLOW_HTTP_ACCESS \
    --protocol Tcp \
    --destination-port-ranges 22 80 443 9990 8080 \
    --source-address-prefix Internet \
    --destination-address-prefix '*' \
    --access Allow \
    --priority 510 \
    --direction Inbound

Свяжите подсети, созданные ранее с этой группой безопасности сети, с помощью az network vnet subnet update, как показано в следующем примере:

az network vnet subnet update \
    --resource-group abc1110rg \
    --vnet-name myVNet \
    --name mySubnet \
    --network-security-group mynsg

az network vnet subnet update \
    --resource-group abc1110rg \
    --vnet-name myVNet \
    --name jbossVMGatewaySubnet \
    --network-security-group mynsg

Создание компьютера Red Hat Enterprise Linux для администратора

Создание виртуальной машины администратора

Образ Marketplace, используемый для создания виртуальных машин, — это RedHat:rhel-raw:86-gen2:latest. Другие образы см. в статьях Red Hat Enterprise Linux (RHEL), доступных в Azure.

Примечание.

Вы можете запросить все доступные образы Red Hat Enterprise Linux, предоставляемые Red Hat, с помощью команды az vm image list , например: az vm image list --offer RHEL --publisher RedHat --output table --all Дополнительные сведения см. в разделе "Обзор образов Red Hat Enterprise Linux".

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

Создайте базовую виртуальную машину, установите на нее все необходимые средства, создайте моментальный снимок и создайте реплика на основе моментального снимка.

Создайте виртуальную машину, выполнив команду az vm create. На этой виртуальной машине запущен сервер Администратор istration.

В следующем примере создается виртуальная машина Red Hat Enterprise Linux с использованием имени пользователя и пары паролей для проверки подлинности. При желании можно использовать проверку подлинности TLS/SSL.

az vm create \
    --resource-group abc1110rg \
    --name adminVM \
    --image RedHat:rhel-raw:86-gen2:latest \
    --size Standard_DS1_v2  \
    --admin-username azureuser \
    --admin-password Secret123456 \
    --public-ip-sku Standard \
    --nsg mynsg \
    --vnet-name myVnet \
    --subnet mySubnet

Установка OpenJDK 11 и Red Hat JBoss EAP 7.4

Чтобы установить, выполните следующие действия.

  1. Используйте следующую команду, чтобы получить общедоступный IP-адрес adminVM:

    export ADMIN_VM_PUBLIC_IP=$(az vm show \
        --resource-group abc1110rg \
        --name adminVM \
        --show-details \
        --query publicIps | tr -d '"')
    
  2. Откройте терминал и SSH adminVM , выполнив следующую команду:

    ssh azureuser@$ADMIN_VM_PUBLIC_IP
    
  3. Укажите Secret123456 пароль.

  4. Настройте брандмауэр для портов с помощью следующей команды:

    sudo firewall-cmd --zone=public --add-port={9999/tcp,8443/tcp,8009/tcp,8080/tcp,9990/tcp,9993/tcp,45700/tcp,7600/tcp} --permanent
    sudo firewall-cmd --reload
    sudo iptables-save
    

    Вы увидите слово success после первых двух команд. Вы должны увидеть выходные данные, аналогичные следующему примеру после третьей команды:

    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *filter
    :INPUT ACCEPT [20:3546]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [24:5446]
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *security
    :INPUT ACCEPT [19:3506]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [5:492]
    -A OUTPUT -d 168.63.129.16/32 -p tcp -m tcp --dport 53 -j ACCEPT
    -A OUTPUT -d 168.63.129.16/32 -p tcp -m tcp --dport 53 -j ACCEPT
    -A OUTPUT -d 168.63.129.16/32 -p tcp -m owner --uid-owner 0 -j ACCEPT
    -A OUTPUT -d 168.63.129.16/32 -p tcp -m conntrack --ctstate INVALID,NEW -j DROP
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *raw
    :PREROUTING ACCEPT [20:3546]
    :OUTPUT ACCEPT [24:5446]
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *mangle
    :PREROUTING ACCEPT [20:3546]
    :INPUT ACCEPT [20:3546]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [24:5446]
    :POSTROUTING ACCEPT [24:5446]
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *nat
    :PREROUTING ACCEPT [1:40]
    :INPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [4:240]
    :OUTPUT ACCEPT [4:240]
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    
  5. Используйте следующие команды, чтобы зарегистрировать узел администратора в учетной записи Управления подписками Red Hat (RHSM):

    export RHSM_USER=<your-rhsm-username>
    export RHSM_PASSWORD="<your-rhsm-password>"
    export EAP_POOL=<your-rhsm-pool-ID>
    
    sudo subscription-manager register --username ${RHSM_USER} --password ${RHSM_PASSWORD} --force
    

    Выходные данные должны соответствовать следующему примеру.

    Registering to: subscription.rhsm.redhat.com:443/subscription
    The system has been registered with ID: redacted
    The registered system name is: adminVM
    
  6. Используйте следующую команду, чтобы подключить узел администратора к пулу Red Hat JBoss EAP:

    sudo subscription-manager attach --pool=${EAP_POOL}
    

    Примечание.

    Эта команда игнорируется, если вы используете режим простого доступа к содержимому.

  7. Используйте следующую команду, чтобы установить OpenJDK 11:

    sudo yum install java-11-openjdk -y
    

    Вы должны увидеть множество строк выходных данных, заканчивая Complete!

  8. Используйте следующие команды для установки Red Hat JBoss EAP 7.4:

    sudo subscription-manager repos --enable=jb-eap-7.4-for-rhel-8-x86_64-rpms
    sudo yum update -y --disablerepo='*' --enablerepo='*microsoft*'
    sudo yum groupinstall -y jboss-eap7
    

    Для второй и третьей команд вы увидите множество строк выходных данных, заканчивающиеся на Complete!

  9. Используйте следующие команды, чтобы задать разрешения и конфигурации TCP:

    sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
    echo 'AllowTcpForwarding no' | sudo tee -a /etc/ssh/sshd_config
    sudo systemctl restart sshd
    
  10. Используйте следующие команды для настройки переменных среды:

    echo 'export EAP_RPM_CONF_DOMAIN="/etc/opt/rh/eap7/wildfly/eap7-domain.conf"' >> ~/.bash_profile
    echo 'export EAP_HOME="/opt/rh/eap7/root/usr/share"' >> ~/.bash_profile
    source ~/.bash_profile
    sudo touch /etc/profile.d/eap_env.sh
    echo 'export EAP_HOME="/opt/rh/eap7/root/usr/share"' | sudo tee -a /etc/profile.d/eap_env.sh
    
  11. Выход из подключения SSH путем ввода выхода.

Создание компьютеров для управляемых серверов

Вы установили OpenJDK 11 и Red Hat JBoss EAP 7.4, adminVMна котором работает сервер контроллера домена. Вам по-прежнему нужно подготовить компьютеры для запуска двух серверов контроллера узла. Затем вы создадите моментальный снимок adminVM и подготовите компьютеры для двух управляемых mspVM1 узлов и mspVM2.

В этом разделе представлен подход к подготовке компьютеров с помощью моментального снимка adminVM. Вернитесь в терминал с вошедшего в систему Azure CLI, а затем выполните следующие действия.

  1. Для остановки adminVMиспользуйте следующую команду:

    az vm stop --resource-group abc1110rg --name adminVM
    
  2. Используйте az snapshot create для создания моментального снимка adminVM диска ОС, как показано в следующем примере:

    export ADMIN_OS_DISK_ID=$(az vm show \
        --resource-group abc1110rg \
        --name adminVM \
        --query storageProfile.osDisk.managedDisk.id \
        --output tsv)
    az snapshot create \
        --resource-group abc1110rg \
        --name myAdminOSDiskSnapshot \
        --source ${ADMIN_OS_DISK_ID}
    
  3. Чтобы запустить adminVMследующую команду, выполните следующую команду:

    az vm start --resource-group abc1110rg --name adminVM
    
    
  4. Чтобы создать mspVM1следующие действия, выполните следующие действия.

    1. Сначала создайте управляемый диск для mspVM1az disk create:

      #Get the snapshot ID
      export SNAPSHOT_ID=$(az snapshot show \
          --name myAdminOSDiskSnapshot \
          --resource-group abc1110rg \
          --query '[id]' \
          --output tsv)
      
      #Create a new Managed Disks using the snapshot Id
      #Note that managed disk is created in the same location as the snapshot
      az disk create \
          --resource-group abc1110rg \
          --name mspVM1_OsDisk_1 \
          --source ${SNAPSHOT_ID}
      
    2. Затем используйте следующие команды для создания виртуальной машины mspVM1, подключения диска mspVM1_OsDisk_1ОС:

      #Get the resource Id of the managed disk
      export MSPVM1_DISK_ID=$(az disk show \
          --name mspVM1_OsDisk_1 \
          --resource-group abc1110rg \
          --query '[id]' \
          --output tsv)
      
      #Create VM by attaching existing managed disks as OS
      az vm create \
          --resource-group abc1110rg \
          --name mspVM1 \
          --attach-os-disk ${MSPVM1_DISK_ID} \
          --os-type linux \
          --public-ip-sku Standard \
          --nsg mynsg \
          --vnet-name myVnet \
          --subnet mySubnet
      
    3. Вы создали mspVM1 с помощью OpenJDK 11 и Red Hat JBoss EAP 7.4. Так как виртуальная машина была создана на основе моментального снимка adminVM диска ОС, две виртуальные машины имеют одно и то же имя узла. Используйте az vm run-command invoke , чтобы изменить имя узла на значение mspVM1:

      az vm run-command invoke \
          --resource-group abc1110rg \
          --name mspVM1 \
          --command-id RunShellScript \
          --scripts "sudo hostnamectl set-hostname mspVM1"
      

      После успешного завершения команды вы увидите выходные данные, аналогичные следующему примеру:

      {
          "value": [
              {
              "code": "ProvisioningState/succeeded",
              "displayStatus": "Provisioning succeeded",
              "level": "Info",
              "message": "Enable succeeded: \n[stdout]\n\n[stderr]\n",
              "time": null
              }
          ]
      }
      
  5. Используйте те же команды для создания mspVM2:

    #Create a new Managed Disks for mspVM2
    az disk create \
        --resource-group abc1110rg \
        --name mspVM2_OsDisk_1 \
        --source ${SNAPSHOT_ID}
    
    #Get the resource Id of the managed disk
    export MSPVM2_DISK_ID=$(az disk show \
        --name mspVM2_OsDisk_1 \
        --resource-group abc1110rg \
        --query '[id]' \
        --output tsv)
    
    #Create VM by attaching existing managed disks as OS
    az vm create \
        --resource-group abc1110rg \
        --name mspVM2 \
        --attach-os-disk ${MSPVM2_DISK_ID} \
        --os-type linux \
        --public-ip-sku Standard \
        --nsg mynsg \
        --vnet-name myVnet \
        --subnet mySubnet
    
    #Set hostname
    az vm run-command invoke \
        --resource-group abc1110rg \
        --name mspVM2 \
        --command-id RunShellScript \
        --scripts "sudo hostnamectl set-hostname mspVM2"
    

Используйте следующие команды, чтобы получить и показать частные IP-адреса, которые используются в последующих разделах:

export ADMINVM_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name adminVM \
    --query networkProfile.networkInterfaces'[0]'.id \
    --output tsv)
export ADMINVM_IP=$(az network nic show \
    --ids ${ADMINVM_NIC_ID} \
    --query ipConfigurations'[0]'.privateIPAddress \
    --output tsv)
export MSPVM1_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mspVM1 \
    --query networkProfile.networkInterfaces'[0]'.id \
    --output tsv)
export MSPVM1_IP=$(az network nic show \
    --ids ${MSPVM1_NIC_ID} \
    --query ipConfigurations'[0]'.privateIPAddress \
    --output tsv)
export MSPVM2_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mspVM2 \
    --query networkProfile.networkInterfaces'[0]'.id \
    --output tsv)
export MSPVM2_IP=$(az network nic show \
    --ids ${MSPVM2_NIC_ID} \
    --query ipConfigurations'[0]'.privateIPAddress \
    --output tsv)
echo "Private IP of adminVM: ${ADMINVM_IP}"
echo "Private IP of mspVM1: ${MSPVM1_IP}"
echo "Private IP of mspVM2: ${MSPVM2_IP}"

Теперь все три компьютера готовы. Затем вы настроите кластер Red Hat JBoss EAP в режиме управляемого домена.

Настройка управляемого домена и кластера

Настройте кластер с включенным реплика сеанса. Дополнительные сведения см. в разделе "Репликация сеансов".

Чтобы включить реплика сеанса, используйте Red Hat JBoss EAP Высокий уровень доступности для кластера. Microsoft Azure не поддерживает протоколы обнаружения JGroups, основанные на многоадресной рассылке UDP. Хотя вы можете использовать другие протоколы обнаружения JGroups (например, статическую конфигурацию), общую базу данных (TCPPING), общую файловую систему на основе ping (JDBC_PINGFILE_PING) или TCPGOSSIP), настоятельно рекомендуем использовать протокол обнаружения общих файлов, специально разработанный для Azure: AZURE_PING Дополнительные сведения см. в статье Об использовании высокого уровня доступности JBoss EAP в Microsoft Azure.

Создание учетной записи хранения Azure и контейнера BLOB-объектов для AZURE_PING

Используйте следующие команды для создания учетной записи хранения и контейнера BLOB-объектов:

# Define your storage account name
export STORAGE_ACCOUNT_NAME=azurepingstgabc1110rg
# Define your Blob container name
export CONTAINER_NAME=azurepingcontainerabc1110rg

# Create storage account
az storage account create \
    --resource-group abc1110rg \
    --name ${STORAGE_ACCOUNT_NAME} \
    --location eastus \
    --sku Standard_LRS \
    --kind StorageV2 \
    --access-tier Hot

Затем получите ключ учетной записи хранения для последующего использования с помощью следующей команды. Если вы видите ошибку, подождите несколько минут и повторите попытку. Ошибка может быть вызвана предыдущей командой, чтобы создать учетную запись хранения не полностью завершена.

export STORAGE_ACCESS_KEY=$(az storage account keys list \
    --resource-group abc1110rg \
    --account-name ${STORAGE_ACCOUNT_NAME} \
    --query "[0].value" \
    --output tsv)

# Create blob container
az storage container create \
    --name ${CONTAINER_NAME} \
    --account-name ${STORAGE_ACCOUNT_NAME} \
    --account-key ${STORAGE_ACCESS_KEY}

Должен появиться следующий результат:

{
  "created": true
}

Настройка контроллера домена (узел администратора)

В этом руководстве используются команды командной строки управления Red Hat JBoss EAP для настройки контроллера домена. Дополнительные сведения см. в руководстве по интерфейсу командной строки управления.

Ниже приведены действия по настройке конфигурации adminVMконтроллера домена. Используйте SSH для подключения к adminVM пользователю azureuser . Помните, что общедоступный IP-адрес adminVM был записан ранее в ADMIN_VM_PUBLIC_IP переменную среды.

ssh azureuser@$ADMIN_VM_PUBLIC_IP

Сначала используйте следующие команды, чтобы настроить профиль высокого уровня доступности и JGroups с помощью AZURE_PING протокола:

export HOST_VM_IP=$(hostname -I)
export STORAGE_ACCOUNT_NAME=azurepingstgabc1110rg
export CONTAINER_NAME=azurepingcontainerabc1110rg
export STORAGE_ACCESS_KEY=<the-value-from-before-you-connected-with-SSH>


#-Configure the HA profile and JGroups using AZURE_PING protocol
sudo -u jboss $EAP_HOME/wildfly/bin/jboss-cli.sh --echo-command \
'embed-host-controller --std-out=echo --domain-config=domain.xml --host-config=host-master.xml',\
':write-attribute(name=name,value=domain1)',\
'/profile=ha/subsystem=jgroups/stack=tcp:remove',\
'/profile=ha/subsystem=jgroups/stack=tcp:add()',\
'/profile=ha/subsystem=jgroups/stack=tcp/transport=TCP:add(socket-binding=jgroups-tcp,properties={ip_mcast=false})',\
"/profile=ha/subsystem=jgroups/stack=tcp/protocol=azure.AZURE_PING:add(properties={storage_account_name=\"${STORAGE_ACCOUNT_NAME}\", storage_access_key=\"${STORAGE_ACCESS_KEY}\", container=\"${CONTAINER_NAME}\"})",\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=MERGE3:add',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=FD_SOCK:add(socket-binding=jgroups-tcp-fd)',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=FD_ALL:add',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=VERIFY_SUSPECT:add',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=pbcast.NAKACK2:add(properties={use_mcast_xmit=false,use_mcast_xmit_req=false})',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=UNICAST3:add',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=pbcast.STABLE:add',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=pbcast.GMS:add',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=MFC:add',\
'/profile=ha/subsystem=jgroups/stack=tcp/protocol=FRAG3:add',\
'/profile=ha/subsystem=jgroups/channel=ee:write-attribute(name="stack", value="tcp")',\
'/server-group=main-server-group:write-attribute(name="profile", value="ha")',\
'/server-group=main-server-group:write-attribute(name="socket-binding-group", value="ha-sockets")',\
"/host=master/subsystem=elytron/http-authentication-factory=management-http-authentication:write-attribute(name=mechanism-configurations,value=[{mechanism-name=DIGEST,mechanism-realm-configurations=[{realm-name=ManagementRealm}]}])",\
"/host=master/interface=unsecure:add(inet-address=${HOST_VM_IP})",\
"/host=master/interface=management:write-attribute(name=inet-address, value=${HOST_VM_IP})",\
"/host=master/interface=public:add(inet-address=${HOST_VM_IP})"

# Save a copy of the domain.xml, later you need to share it with all host controllers
cp $EAP_HOME/wildfly/domain/configuration/domain.xml /tmp/domain.xml

Последний строф выходных данных должен выглядеть примерно так, как показано в следующем примере. Если это не так, устраните и устраните проблему перед продолжением.

[domain@embedded /] /host=master/interface=public:add(inet-address=192.168.0.4 )
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => undefined,
    "response-headers" => {"process-state" => "reload-required"}
}
02:05:55,019 INFO  [org.jboss.as] (MSC service thread 1-1) WFLYSRV0050: JBoss EAP 7.4.10.GA (WildFly Core 15.0.25.Final-redhat-00001) stopped in 28ms

Затем выполните следующие команды, чтобы настроить сервер JBoss и настроить службу EAP:

# Configure the JBoss server and setup EAP service
echo 'WILDFLY_HOST_CONFIG=host-master.xml' | sudo tee -a $EAP_RPM_CONF_DOMAIN

# Configure JBoss EAP management user
export JBOSS_EAP_USER=jbossadmin
export JBOSS_EAP_PASSWORD=Secret123456
sudo $EAP_HOME/wildfly/bin/add-user.sh  -u $JBOSS_EAP_USER -p $JBOSS_EAP_PASSWORD -g 'guest,mgmtgroup'

Результат должен выглядеть следующим образом:

Added user 'jbossadmin' to file '/etc/opt/rh/eap7/wildfly/standalone/mgmt-users.properties'
Added user 'jbossadmin' to file '/etc/opt/rh/eap7/wildfly/domain/mgmt-users.properties'
Added user 'jbossadmin' with groups guest,mgmtgroup to file '/etc/opt/rh/eap7/wildfly/standalone/mgmt-groups.properties'
Added user 'jbossadmin' with groups guest,mgmtgroup to file '/etc/opt/rh/eap7/wildfly/domain/mgmt-groups.properties'

Наконец, используйте следующие команды, чтобы запустить службу EAP:

# Start the JBoss server and setup EAP service
sudo systemctl enable eap7-domain.service

# Edit eap7-domain.services
sudo sed -i 's/After=syslog.target network.target/After=syslog.target network.target NetworkManager-wait-online.service/' /usr/lib/systemd/system/eap7-domain.service
sudo sed -i 's/Before=httpd.service/Wants=NetworkManager-wait-online.service \nBefore=httpd.service/' /usr/lib/systemd/system/eap7-domain.service

# Reload and restart EAP service
sudo systemctl daemon-reload
sudo systemctl restart eap7-domain.service

# Check the status of EAP service
systemctl status eap7-domain.service

Результат должен выглядеть следующим образом:

● eap7-domain.service - JBoss EAP (domain mode)
   Loaded: loaded (/usr/lib/systemd/system/eap7-domain.service; enabled; vendor>
   Active: active (running) since Thu 2023-03-30 02:11:44 UTC; 5s ago
 Main PID: 3855 (scl)
    Tasks: 82 (limit: 20612)
   Memory: 232.4M
   CGroup: /system.slice/eap7-domain.service
           ├─3855 /usr/bin/scl enable eap7 -- /opt/rh/eap7/root/usr/share/wildf>
           ├─3856 /bin/bash /var/tmp/sclfYu7yW
           ├─3858 /bin/sh /opt/rh/eap7/root/usr/share/wildfly/bin/launch.sh /us>
           ├─3862 /bin/sh /opt/rh/eap7/root/usr/share/wildfly/bin/domain.sh --h>
           ├─3955 /usr/lib/jvm/jre/bin/java -D[Process Controller] -server -Xms>
           └─3967 /usr/lib/jvm/jre/bin/java -D[Host Controller] -Dorg.jboss.boo>

Mar 30 02:11:44 adminVM systemd[1]: Started JBoss EAP (domain mode).

Введите q , чтобы выйти из пейджера. Выход из подключения SSH путем ввода выхода.

После запуска службы Red Hat JBoss EAP вы можете получить доступ к консоль управления через http://$ADMIN_VM_PUBLIC_IP:9990 веб-браузер. Войдите с настроенным именем пользователя jbossadmin и паролем Secret123456.

Снимок экрана: контроллер домена Red Hat JBoss Enterprise Application Platform консоль управления.

Перейдите на вкладку "Среда выполнения ". В области навигации выберите "Топология". Теперь кластер содержит только один контроллер домена:

Снимок экрана: платформа приложений Red Hat JBoss Enterprise, на котором показана вкладка

Настройка контроллеров узлов (рабочих узлов)

Используйте SSH для подключения к mspVM1 пользователю azureuser . Получите общедоступный IP-адрес виртуальной машины с помощью следующей команды:

MSPVM_PUBLIC_IP=$(az vm show \
    --resource-group abc1110rg \
    --name mspVM1 \
    --show-details \
    --query publicIps)

ssh azureuser@$MSPVM_PUBLIC_IP

Помните, что пароль совпадает с ранее, так как mspVM1 это просто клон adminVM.

Используйте следующие команды, чтобы настроить контроллер узла в mspVM1:

# environment variables
export DOMAIN_CONTROLLER_PRIVATE_IP=<adminVM-private-IP>
export HOST_VM_NAME=$(hostname)
export HOST_VM_NAME_LOWERCASE=$(echo "${HOST_VM_NAME,,}")
export HOST_VM_IP=$(hostname -I)

export JBOSS_EAP_USER=jbossadmin
export JBOSS_EAP_PASSWORD=Secret123456

# Save default domain configuration as backup
sudo -u jboss mv $EAP_HOME/wildfly/domain/configuration/domain.xml $EAP_HOME/wildfly/domain/configuration/domain.xml.backup

# Fetch domain.xml from domain controller
sudo -u jboss scp azureuser@${DOMAIN_CONTROLLER_PRIVATE_IP}:/tmp/domain.xml $EAP_HOME/wildfly/domain/configuration/domain.xml

Вам будет предложено указать пароль для подключения. В этом примере пароль — Secret123456.

Используйте следующие команды, чтобы применить изменения контроллера узла к mspVM1:

# Setup host controller
sudo -u jboss $EAP_HOME/wildfly/bin/jboss-cli.sh --echo-command \
"embed-host-controller --std-out=echo --domain-config=domain.xml --host-config=host-slave.xml",\
"/host=${HOST_VM_NAME_LOWERCASE}/server-config=server-one:remove",\
"/host=${HOST_VM_NAME_LOWERCASE}/server-config=server-two:remove",\
"/host=${HOST_VM_NAME_LOWERCASE}/server-config=${HOST_VM_NAME_LOWERCASE}-server0:add(group=main-server-group)",\
"/host=${HOST_VM_NAME_LOWERCASE}/subsystem=elytron/authentication-configuration=slave:add(authentication-name=${JBOSS_EAP_USER}, credential-reference={clear-text=${JBOSS_EAP_PASSWORD}})",\
"/host=${HOST_VM_NAME_LOWERCASE}/subsystem=elytron/authentication-context=slave-context:add(match-rules=[{authentication-configuration=slave}])",\
"/host=${HOST_VM_NAME_LOWERCASE}:write-attribute(name=domain-controller.remote.username, value=${JBOSS_EAP_USER})",\
"/host=${HOST_VM_NAME_LOWERCASE}:write-attribute(name=domain-controller.remote, value={host=${DOMAIN_CONTROLLER_PRIVATE_IP}, port=9990, protocol=remote+http, authentication-context=slave-context})",\
"/host=${HOST_VM_NAME_LOWERCASE}/core-service=discovery-options/static-discovery=primary:write-attribute(name=host, value=${DOMAIN_CONTROLLER_PRIVATE_IP})",\
"/host=${HOST_VM_NAME_LOWERCASE}/interface=unsecured:add(inet-address=${HOST_VM_IP})",\
"/host=${HOST_VM_NAME_LOWERCASE}/interface=management:write-attribute(name=inet-address, value=${HOST_VM_IP})",\
"/host=${HOST_VM_NAME_LOWERCASE}/interface=public:write-attribute(name=inet-address, value=${HOST_VM_IP})"

Последний строф выходных данных должен выглядеть примерно так, как показано в следующем примере. Если это не так, устраните и устраните проблему перед продолжением.

[domain@embedded /] /host=mspvm1/interface=public:write-attribute(name=inet-address, value=192.168.0.5 )
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => undefined,
    "response-headers" => {"process-state" => "reload-required"}
}
02:58:59,388 INFO  [org.jboss.as] (MSC service thread 1-2) WFLYSRV0050: JBoss EAP 7.4.10.GA (WildFly Core 15.0.25.Final-redhat-00001) stopped in 58ms

Затем выполните следующие команды, чтобы настроить сервер JBoss и настроить службу EAP:

echo 'WILDFLY_HOST_CONFIG=host-slave.xml' | sudo tee -a $EAP_RPM_CONF_DOMAIN

# Enable the JBoss server and setup EAP service
sudo systemctl enable eap7-domain.service

# Edit eap7-domain.services
sudo sed -i 's/After=syslog.target network.target/After=syslog.target network.target NetworkManager-wait-online.service/' /usr/lib/systemd/system/eap7-domain.service
sudo sed -i 's/Before=httpd.service/Wants=NetworkManager-wait-online.service \nBefore=httpd.service/' /usr/lib/systemd/system/eap7-domain.service

# Reload and restart EAP service
sudo systemctl daemon-reload
sudo systemctl restart eap7-domain.service

# Check the status of EAP service
systemctl status eap7-domain.service

Результат должен выглядеть следующим образом:

● eap7-domain.service - JBoss EAP (domain mode)
   Loaded: loaded (/usr/lib/systemd/system/eap7-domain.service; enabled; vendor>
   Active: active (running) since Thu 2023-03-30 03:02:15 UTC; 7s ago
 Main PID: 9699 (scl)
    Tasks: 51 (limit: 20612)
   Memory: 267.6M
   CGroup: /system.slice/eap7-domain.service
           ├─9699 /usr/bin/scl enable eap7 -- /opt/rh/eap7/root/usr/share/wildf>
           ├─9700 /bin/bash /var/tmp/sclgJ1hRD
           ├─9702 /bin/sh /opt/rh/eap7/root/usr/share/wildfly/bin/launch.sh /us>
           ├─9706 /bin/sh /opt/rh/eap7/root/usr/share/wildfly/bin/domain.sh --h>
           ├─9799 /usr/lib/jvm/jre/bin/java -D[Process Controller] -server -Xms>
           └─9811 /usr/lib/jvm/jre/bin/java -D[Host Controller] -Dorg.jboss.boo>

Mar 30 03:02:15 mspVM1 systemd[1]: Started JBoss EAP (domain mode).

Введите q , чтобы выйти из пейджера. Выход из подключения SSH путем ввода выхода.

Используйте SSH для подключения к mspVM2 пользователю azureuser . Получите общедоступный IP-адрес виртуальной машины с помощью следующей команды:

az vm show \
    --resource-group abc1110rg \
    --name mspVM2 \
    --show-details \
    --query publicIps

Повторите предыдущие шаги mspVM2, а затем закройте подключение SSH, введя выход.

После подключения adminVMк двум контроллерам узла вы сможете просмотреть топологию кластера, как показано на следующем снимке экрана:

Снимок экрана: платформа корпоративных приложений Red Hat JBoss, на котором показана вкладка

Предоставление кластера Red Hat JBoss EAP с помощью Шлюз приложений Azure

Теперь, когда вы создали кластер Red Hat JBoss EAP на виртуальных машинах Azure, в этом разделе описывается процесс предоставления Red Hat JBoss EAP в Интернете с помощью Шлюз приложений Azure.

Создание Шлюз приложений Azure

Чтобы предоставить Red Hat JBoss EAP в Интернете, требуется общедоступный IP-адрес. Создайте общедоступный IP-адрес и свяжите с ним шлюз приложение Azure. Используйте az network public-ip create для его создания, как показано в следующем примере:

az network public-ip create \
    --resource-group abc1110rg \
    --name myAGPublicIPAddress \
    --allocation-method Static \
    --sku Standard

Затем добавьте серверные серверы в Шлюз приложений серверный пул. Запрос внутренних IP-адресов с помощью следующих команд. У вас есть только контроллеры узлов (рабочие узлы), настроенные как серверные серверы.

export MSPVM1_NIC_ID=$(az vm show \
    --resource-group abc1110rg \
    --name mspVM1 \
    --query networkProfile.networkInterfaces'[0]'.id \
    --output tsv)
export MSPVM1_IP=$(az network nic show \
    --ids ${MSPVM1_NIC_ID} \
    --query ipConfigurations'[0]'.privateIPAddress \
    --output tsv)
export MSPVM2_NIC_ID=$(az vm show \
    --resource-group abc1110rg \
    --name mspVM2 \
    --query networkProfile.networkInterfaces'[0]'.id \
    --output tsv)
export MSPVM2_IP=$(az network nic show \
    --ids ${MSPVM2_NIC_ID} \
    --query ipConfigurations'[0]'.privateIPAddress \
    --output tsv)

Затем создайте Шлюз приложений Azure. В следующем примере создается шлюз приложений с контроллерами узлов в серверном пуле по умолчанию:

az network application-gateway create \
    --resource-group abc1110rg \
    --name myAppGateway \
    --public-ip-address myAGPublicIPAddress \
    --location eastus \
    --capacity 2 \
    --http-settings-port 8080 \
    --http-settings-protocol Http \
    --frontend-port 80 \
    --sku Standard_V2 \
    --subnet jbossVMGatewaySubnet \
    --vnet-name myVNet \
    --priority 1001 \
    --servers ${MSPVM1_IP} ${MSPVM2_IP}

Примечание.

В этом примере настраивается простой доступ к серверам Red Hat JBoss EAP с помощью HTTP. Если требуется безопасный доступ, настройте завершение TLS/SSL, следуя инструкциям в разделе End to end TLS с Шлюз приложений.

В этом примере контроллеры узла предоставляются через порт 8080. Вы развернете пример приложения с подключением к базе данных к кластеру на последующих шагах.

Подключение База данных Azure для PostgreSQL

В этом разделе показано, как создать экземпляр PostgreSQL в Azure и настроить подключение к PostgreSQL в кластере Red Hat JBoss EAP.

Создание экземпляра Базы данных Azure для PostgreSQL

Чтобы создать экземпляр базы данных, выполните следующие действия.

  1. Используйте az postgres server create для подготовки экземпляра PostgreSQL в Azure, как показано в следующем примере:

    export DATA_BASE_USER=jboss
    export DATA_BASE_PASSWORD=Secret123456
    
    DB_SERVER_NAME="jbossdb$(date +%s)"
    echo "DB_SERVER_NAME=${DB_SERVER_NAME}"
    az postgres server create \
        --resource-group abc1110rg \
        --name ${DB_SERVER_NAME}  \
        --location eastus \
        --admin-user ${DATA_BASE_USER} \
        --ssl-enforcement Enabled \
        --admin-password ${DATA_BASE_PASSWORD} \
        --sku-name GP_Gen5_2
    
  2. Используйте следующие команды, чтобы разрешить доступ из служб Azure:

    # Write down the following names for later use
    export fullyQualifiedDomainName=$(az postgres server show \
        --resource-group abc1110rg \
        --name ${DB_SERVER_NAME} \
        --query "fullyQualifiedDomainName" \
        --output tsv)
    export name=$(az postgres server show \
        --resource-group abc1110rg \
        --name ${DB_SERVER_NAME} \
        --query "name" \
        --output tsv)
    
    az postgres server firewall-rule create \
        --resource-group abc1110rg \
        --server ${DB_SERVER_NAME} \
        --name "AllowAllAzureIps" \
        --start-ip-address 0.0.0.0 \
        --end-ip-address 0.0.0.0
    
  3. Чтобы создать базу данных, используйте следующую команду:

    az postgres db create \
        --resource-group abc1110rg \
        --server ${DB_SERVER_NAME} \
        --name testdb
    

Установка драйвера

Выполните следующие действия, чтобы установить драйвер JDBC с помощью интерфейса командной строки управления JBoss. Дополнительные сведения о драйверах JDBC в Red Hat JBoss EAP см. в разделе "Установка драйвера JDBC в качестве JAR-развертывания".

  1. SSH, чтобы adminVM использовать следующую команду. Этот шаг можно пропустить, если у вас уже открыто подключение.

    ssh azureuser@$ADMIN_VM_PUBLIC_IP
    
  2. Используйте следующие команды, чтобы скачать драйвер JDBC. Здесь вы используете postgresql-42.5.2.jar. Дополнительные сведения о расположениях загрузки драйверов JDBC см. в разделе "Расположения загрузки драйверов JDBC", предоставляемые Red Hat.

    jdbcDriverName=postgresql-42.5.2.jar
    sudo curl --retry 5 -Lo /tmp/${jdbcDriverName} https://jdbc.postgresql.org/download/${jdbcDriverName}
    
  3. Разверните драйвер JDBC с помощью следующей команды интерфейса командной строки JBoss:

    sudo -u jboss $EAP_HOME/wildfly/bin/jboss-cli.sh --connect --controller=$(hostname -I) --echo-command \
    "deploy /tmp/${jdbcDriverName} --server-groups=main-server-group"
    

    Журнал сервера находится в mspVM1 папке и mspVM2 в /var/opt/rh/eap7/lib/wildfly/domain/servers/mspvm1-server0/log/server.log. Если развертывание завершается сбоем, изучите этот файл журнала и устраните проблему перед продолжением.

Настройка подключения к базе данных для кластера Red Hat JBoss EAP

Вы запустили сервер базы данных, получили необходимый идентификатор ресурса и установили драйвер JDBC. Далее в этом разделе показано, как использовать интерфейс командной строки JBoss для настройки подключения к источнику данных с созданным ранее экземпляром PostgreSQL.

  1. Откройте терминал и SSH, чтобы adminVM использовать следующую команду:

    ssh azureuser@$ADMIN_VM_PUBLIC_IP
    
  2. Создайте источник данных с помощью следующих команд:

    # Replace the following values with your own
    export DATA_SOURCE_CONNECTION_STRING=jdbc:postgresql://<database-fully-qualified-domain-name>:5432/testdb
    export DATA_BASE_USER=jboss@<database-server-name>
    export JDBC_DATA_SOURCE_NAME=dataSource-postgresql
    export JDBC_JNDI_NAME=java:jboss/datasources/JavaEECafeDB
    export DATA_BASE_PASSWORD=Secret123456
    export JDBC_DRIVER_NAME=postgresql-42.5.2.jar
    
    sudo -u jboss $EAP_HOME/wildfly/bin/jboss-cli.sh --connect --controller=$(hostname -I) --echo-command \
    "data-source add --driver-name=${JDBC_DRIVER_NAME} --profile=ha --name=${JDBC_DATA_SOURCE_NAME} --jndi-name=${JDBC_JNDI_NAME} --connection-url=${DATA_SOURCE_CONNECTION_STRING} --user-name=${DATA_BASE_USER} --password=${DATA_BASE_PASSWORD}"
    

После выполнения этих действий вы успешно настроили источник данных с именем java:jboss/datasources/JavaEECafeDB.

Развертывание примера приложения Java EE Cafe

Чтобы развернуть пример приложения Java EE Cafe в кластере Red Hat JBoss EAP, выполните следующие действия.

  1. Чтобы создать кафе Java EE, выполните следующие действия. В этих шагах предполагается, что у вас установлена локальная среда с Git и Maven:

    1. Используйте следующую команду, чтобы клонировать исходный код из GitHub:

      git clone https://github.com/Azure/rhel-jboss-templates.git
      
    2. Чтобы создать исходный код, используйте следующую команду:

      mvn clean install --file rhel-jboss-templates/eap-coffee-app/pom.xml
      

      Эта команда создает файл eap-coffee-app/target/javaee-café.war. Вы отправляете этот файл на следующем шаге.

  2. Откройте веб-браузер и перейдите в консоль управления, http://<adminVM-public-IP>:9990а затем войдите с помощью имени пользователя jbossadmin и пароляSecret123456.

  3. Чтобы отправить javaee-café.war в репозиторий содержимого, выполните следующие действия.

    1. На вкладке "Развертывания" консоль управления Red Hat JBoss EAP выберите репозиторий контента в области навигации.

    2. Нажмите кнопку "Добавить", а затем нажмите кнопку "Отправить содержимое".

      Снимок экрана: вкладка

    3. Используйте средство выбора файла браузера, чтобы выбрать файл javaee-café.war .

    4. Выберите Далее.

    5. Примите значения по умолчанию на следующем экране и нажмите кнопку Готово.

    6. Выберите "Просмотреть содержимое".

  4. Чтобы развернуть приложение main-server-group, выполните следующие действия.

    1. В репозитории содержимого выберите javaee-café.war.

    2. В раскрывающемся меню выберите "Развернуть".

    3. Выберите main-server-group в качестве группы серверов для развертывания javaee-café.war.

    4. Выберите "Развернуть" , чтобы начать развертывание. Вы увидите уведомление, аналогичное следующему снимку экрана:

      Снимок экрана: уведомление об успешном развертывании.

Проверка конфигурации кластера Red Hat JBoss EAP

Теперь вы завершили настройку кластера Red Hat JBoss EAP и развертывание приложения Java EE в нем. Чтобы проверить все параметры, выполните следующие действия, чтобы получить доступ к приложению:

  1. Чтобы получить общедоступный IP-адрес Шлюз приложений Azure, выполните следующую команду:

    az network public-ip show \
        --resource-group abc1110rg \
        --name myAGPublicIPAddress \
        --query '[ipAddress]' \
        --output tsv
    
  2. Откройте веб-браузер.

  3. Перейдите к приложению с URL-адресом http://<gateway-public-ip-address>/javaee-cafe/. Не забывайте косую черту.

  4. Попробуйте добавить и удалить кофе.

Очистка ресурсов

Чтобы избежать расходов за использование Azure, необходимо удалить ненужные ресурсы. Если вам больше не нужен кластер Red Hat JBoss EAP, развернутый на виртуальной машине Azure, отмените регистрацию серверов Red Hat JBoss EAP и удалите ресурсы Azure.

Используйте следующие команды, чтобы отменить регистрацию серверов Red Hat JBoss EAP и виртуальных машин из управления подписками Red Hat:

# Unregister domain controller
az vm run-command invoke \
    --resource-group abc1110rg \
    --name adminVM \
    --command-id RunShellScript \
    --scripts "sudo subscription-manager unregister"

# Unregister host controllers
az vm run-command invoke \
    --resource-group abc1110rg \
    --name mspVM1 \
    --command-id RunShellScript \
    --scripts "sudo subscription-manager unregister"
az vm run-command invoke \
    --resource-group abc1110rg \
    --name mspVM2 \
    --command-id RunShellScript \
    --scripts "sudo subscription-manager unregister"

Чтобы удалить группу abc1110rgресурсов, используйте следующую команду:

az group delete --name abc1110rg --yes --no-wait

Следующие шаги

Продолжайте изучать параметры запуска Red Hat JBoss EAP в Azure.