Руководство. Установка JBoss EAP в Azure Виртуальные машины (виртуальные машины) вручную
В этом руководстве показано, как установить Red Hat JBoss Enterprise Application Platform (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 Виртуальные машины (виртуальные машины).
Если вы заинтересованы в предоставлении отзывов или тесной работе с сценариями миграции с помощью команды разработчиков, разрабатывающей JBoss EAP в решениях Azure, заполните этот краткий опрос по миграции JBoss EAP и включите контактные данные. Команда руководителей программ, архитекторов и инженеров будет быстро связаться с вами, чтобы начать тесное сотрудничество.
Примечание.
Эта статья содержит упоминания термина slave (ведомый) . Корпорация Майкрософт больше не использует его. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.
Необходимые компоненты
Подписка Azure. Если у вас еще нет подписки 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 Виртуальные машины (виртуальных машинах)) установите протестированную и сертифицированную версию JBoss EAP.
Примечание.
Если у вас нет прав на EAP, вы можете зарегистрироваться для получения бесплатной подписки разработчика через подписку Red Hat developer для частных лиц. Сохраните сведения об учетной записи, которая используется в качестве имени пользователя RHSM и пароля RHSM в следующем разделе.
Если вы уже зарегистрированы или после завершения регистрации, вы можете найти необходимые учетные данные (идентификаторы пула), выполнив следующие действия. Эти идентификаторы пула также используются как идентификатор пула RHSM совместно с правами доступа EAP в последующих шагах.
Войдите в учетную запись Red Hat.
При первом входе вам будет предложено завершить профиль. В зависимости от использования выберите "Персональный" или"Корпоративный" для типа учетной записи, как показано на следующем снимке экрана:
Откройте подписку разработчика Red Hat для частных лиц. Эта ссылка позволяет вам перейти ко всем подпискам в учетной записи для соответствующего номера SKU.
В строке элементов управления в таблице "Все приобретенные подписки" выберите "Активный".
Выберите заголовок столбца сортировки для даты окончания до тех пор, пока в будущем значение не будет отображаться как первая строка.
Выделите первую строку. Затем скопируйте и сохраните значение в сторону следующих главных пулов из идентификаторов пулов.
Пакет средств разработки 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 и драйвер подключения к базе данных Java PostgreSQL (JDBC).
Предположения
В этом руководстве настраивается кластер 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
формате. В этом примере создается группа ресурсов с именем $RESOURCE_GROUP_NAME
в расположении westus
:
export SUBSCRIPTION=$(az account show --query id --output tsv)
export SUFFIX=$(date +%s)
export RESOURCE_GROUP_NAME=rg-$SUFFIX
echo "Resource group name: $RESOURCE_GROUP_NAME"
az group create \
--name $RESOURCE_GROUP_NAME \
--location westus
Создание виртуальной сети
Ресурсы, состоящие из кластера 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 $RESOURCE_GROUP_NAME \
--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 $RESOURCE_GROUP_NAME \
--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 $RESOURCE_GROUP_NAME \
--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 $RESOURCE_GROUP_NAME \
--name mynsg
Создайте правила группы безопасности сети с помощью az network nsg rule create. В следующем примере создаются правила группы безопасности сети с именем ALLOW_APPGW
и ALLOW_HTTP_ACCESS
. Эти правила позволяют шлюзу приложений принимать входящий трафик на HTTP-портах, используемых Red Hat JBoss EAP:
az network nsg rule create \
--resource-group $RESOURCE_GROUP_NAME \
--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 $RESOURCE_GROUP_NAME \
--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 $RESOURCE_GROUP_NAME \
--vnet-name myVNet \
--name mySubnet \
--network-security-group mynsg
az network vnet subnet update \
--resource-group $RESOURCE_GROUP_NAME \
--vnet-name myVNet \
--name jbossVMGatewaySubnet \
--network-security-group mynsg
Создание компьютера Red Hat Enterprise Linux для администратора
Создание ключей SSH
Используйте следующую команду, чтобы создать ключи SSH для adminVM
:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/jbosseapvm
ssh-add ~/.ssh/jbosseapvm
Создание виртуальной машины администратора
Образ 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. На этой виртуальной машине запущен сервер администрирования.
В следующем примере создается управляемое удостоверение Azure и виртуальная машина Red Hat Enterprise Linux с помощью проверки подлинности TLS/SSL.
az identity create \
--name "passwordless-managed-identity" \
--resource-group $RESOURCE_GROUP_NAME \
--location westus
az vm create \
--resource-group $RESOURCE_GROUP_NAME \
--name adminVM \
--image RedHat:rhel-raw:86-gen2:latest \
--assign-identity "/subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/passwordless-managed-identity" \
--size Standard_DS1_v2 \
--admin-username azureuser \
--ssh-key-values ~/.ssh/jbosseapvm.pub \
--public-ip-sku Standard \
--nsg mynsg \
--vnet-name myVnet \
--subnet mySubnet
Установка Red Hat JBoss EAP
Чтобы установить, выполните следующие действия.
Используйте следующую команду, чтобы получить общедоступный IP-адрес
adminVM
:export ADMIN_VM_PUBLIC_IP=$(az vm show \ --resource-group $RESOURCE_GROUP_NAME \ --name adminVM \ --show-details \ --query publicIps | tr -d '"')
Откройте терминал и SSH
adminVM
, выполнив следующую команду:ssh -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
Настройте брандмауэр для портов с помощью следующей команды:
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
Примечание.
Для RHSM_USER
установки Red Hat JBoss EAP необходимы и RHSM_PASSWORD
значения. Рекомендуется использовать учетную запись службы с ограниченными разрешениями для доступа к порталу клиента Red Hat.
Используйте следующие команды, чтобы зарегистрировать узел администратора в учетной записи Управления подписками 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
Используйте следующую команду, чтобы подключить узел администратора к пулу Red Hat JBoss EAP:
sudo subscription-manager attach --pool=${EAP_POOL}
Примечание.
Эта команда игнорируется, если вы используете режим простого доступа к содержимому.
Используйте следующие команды для установки Red Hat JBoss EAP:
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!
Используйте следующие команды, чтобы задать разрешения и конфигурации сети:
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
Используйте следующие команды для настройки переменных среды:
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/wildfly"' >> ~/.bash_profile source ~/.bash_profile sudo touch /etc/profile.d/eap_env.sh echo 'export EAP_HOME="/opt/rh/eap7/root/usr/share/wildfly"' | sudo tee -a /etc/profile.d/eap_env.sh
Выход из подключения SSH путем ввода выхода.
Создание компьютеров для управляемых серверов
Вы установили Red Hat JBoss EAP adminVM
, на котором выполняется сервер контроллера домена. Вам по-прежнему нужно подготовить компьютеры для запуска двух серверов контроллера узла. Затем вы создадите моментальный снимок adminVM
и подготовите компьютеры для двух управляемых mspVM1
узлов и mspVM2
.
В этом разделе представлен подход к подготовке компьютеров с помощью моментального снимка adminVM
. Вернитесь в терминал с вошедшего в систему Azure CLI, а затем выполните следующие действия.
Для остановки
adminVM
используйте следующую команду:az vm stop --resource-group $RESOURCE_GROUP_NAME --name adminVM
Используйте az snapshot create для создания моментального снимка
adminVM
диска ОС, как показано в следующем примере:export ADMIN_OS_DISK_ID=$(az vm show \ --resource-group $RESOURCE_GROUP_NAME \ --name adminVM \ --query storageProfile.osDisk.managedDisk.id \ --output tsv) az snapshot create \ --resource-group $RESOURCE_GROUP_NAME \ --name myAdminOSDiskSnapshot \ --source ${ADMIN_OS_DISK_ID}
Чтобы запустить
adminVM
следующую команду, выполните следующую команду:az vm start --resource-group $RESOURCE_GROUP_NAME --name adminVM
Чтобы создать
mspVM1
следующие действия, выполните следующие действия.Сначала создайте управляемый диск для
mspVM1
az disk create:#Get the snapshot ID export SNAPSHOT_ID=$(az snapshot show \ --name myAdminOSDiskSnapshot \ --resource-group $RESOURCE_GROUP_NAME \ --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 $RESOURCE_GROUP_NAME \ --name mspVM1_OsDisk_1 \ --source ${SNAPSHOT_ID}
Затем используйте следующие команды для создания виртуальной машины
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 $RESOURCE_GROUP_NAME \ --query '[id]' \ --output tsv) #Create VM by attaching existing managed disks as OS az vm create \ --resource-group $RESOURCE_GROUP_NAME \ --name mspVM1 \ --assign-identity "/subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/passwordless-managed-identity" \ --attach-os-disk ${MSPVM1_DISK_ID} \ --os-type linux \ --public-ip-sku Standard \ --nsg mynsg \ --vnet-name myVnet \ --subnet mySubnet
Вы создали
mspVM1
с установленным пакетом Red Hat JBoss EAP. Так как виртуальная машина была создана на основе моментального снимкаadminVM
диска ОС, две виртуальные машины имеют одно и то же имя узла. Используйте az vm run-command invoke , чтобы изменить имя узла на значениеmspVM1
:az vm run-command invoke \ --resource-group $RESOURCE_GROUP_NAME \ --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 } ] }
Используйте те же команды для создания
mspVM2
:#Create a new Managed Disks for mspVM2 az disk create \ --resource-group $RESOURCE_GROUP_NAME \ --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 $RESOURCE_GROUP_NAME \ --query '[id]' \ --output tsv) #Create VM by attaching existing managed disks as OS az vm create \ --resource-group $RESOURCE_GROUP_NAME \ --name mspVM2 \ --assign-identity "/subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/passwordless-managed-identity" \ --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 $RESOURCE_GROUP_NAME \ --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 High Availability для кластера. Microsoft Azure не поддерживает протоколы обнаружения JGroups, основанные на многоадресной рассылке. Хотя вы можете использовать другие протоколы обнаружения JGroups (например, статическую конфигурацию), общую базу данных (TCPPING
), общую файловую систему на основе ping (JDBC_PING
FILE_PING
) илиTCPGOSSIP
), настоятельно рекомендуем использовать протокол обнаружения общих файлов, разработанный для Azure: AZURE_PING
Дополнительные сведения см. в статье Об использовании высокого уровня доступности JBoss EAP в Microsoft Azure.
Создание учетной записи хранения Azure и контейнера BLOB-объектов для AZURE_PING
Используйте следующие команды для создания учетной записи хранения и контейнера BLOB-объектов:
# Define your storage account name
export STORAGE_ACCOUNT_NAME=azurepingstgabc1111rg
# Define your Blob container name
export CONTAINER_NAME=azurepingcontainerabc1111rg
# Create storage account
az storage account create \
--resource-group $RESOURCE_GROUP_NAME \
--name ${STORAGE_ACCOUNT_NAME} \
--location westus \
--sku Standard_LRS \
--kind StorageV2 \
--access-tier Hot
Затем получите ключ учетной записи хранения для последующего использования с помощью следующей команды. Если вы видите ошибку, подождите несколько минут и повторите попытку. Предыдущая команда для создания учетной записи хранения еще не выполнена.
export STORAGE_ACCESS_KEY=$(az storage account keys list \
--resource-group $RESOURCE_GROUP_NAME \
--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 -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
Сначала используйте следующие команды, чтобы настроить профиль высокого уровня доступности и JGroups с помощью AZURE_PING
протокола:
export HOST_VM_IP=$(hostname -I)
export STORAGE_ACCOUNT_NAME=azurepingstgabc1111rg
export CONTAINER_NAME=azurepingcontainerabc1111rg
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/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/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:
Примечание.
Для JBOSS_EAP_USER
настройки пользователя управления JBoss EAP необходимы и JBOSS_EAP_PASSWORD
значения.
# 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/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
.
Перейдите на вкладку "Среда выполнения ". В области навигации выберите "Топология". Теперь кластер содержит только один контроллер домена:
Настройка контроллеров узлов (рабочих узлов)
Используйте SSH для подключения к mspVM1
пользователю azureuser
. Получите общедоступный IP-адрес виртуальной машины с помощью следующей команды:
MSPVM_PUBLIC_IP=$(az vm show \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM1 \
--show-details \
--query publicIps | tr -d '"' )
ssh -A -i ~/.ssh/jbosseapvm azureuser@$MSPVM_PUBLIC_IP
Используйте следующие команды, чтобы настроить контроллер узла в 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/domain/configuration/domain.xml $EAP_HOME/domain/configuration/domain.xml.backup
# Fetch domain.xml from domain controller
scp azureuser@${DOMAIN_CONTROLLER_PRIVATE_IP}:/tmp/domain.xml /tmp/domain.xml
sudo mv /tmp/domain.xml $EAP_HOME/domain/configuration/domain.xml
sudo chown jboss:jboss $EAP_HOME/domain/configuration/domain.xml
Используйте следующие команды, чтобы применить изменения контроллера узла к mspVM1
:
# Setup host controller
sudo -u jboss $EAP_HOME/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 $RESOURCE_GROUP_NAME \
--name mspVM2 \
--show-details \
--query publicIps | tr -d '"'
Повторите предыдущие шаги mspVM2
, а затем закройте подключение SSH, введя выход.
После подключения adminVM
к двум контроллерам узла вы сможете просмотреть топологию кластера, как показано на следующем снимке экрана:
Предоставление кластера Red Hat JBoss EAP с помощью Шлюз приложений Azure
Теперь, когда вы создали кластер на виртуальных машинах Azure, в этом разделе описывается предоставление JBoss EAP в Интернете с помощью Шлюз приложений Azure.
Создание Шлюз приложений Azure
Чтобы предоставить Red Hat JBoss EAP в Интернете, требуется общедоступный IP-адрес. Создайте общедоступный IP-адрес и свяжите с ним шлюз приложение Azure. Используйте az network public-ip create для его создания, как показано в следующем примере:
az network public-ip create \
--resource-group $RESOURCE_GROUP_NAME \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
Затем добавьте серверные серверы в Шлюз приложений серверный пул. Запрос внутренних IP-адресов с помощью следующих команд. У вас есть только контроллеры узлов (рабочие узлы), настроенные как серверные серверы.
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)
Затем создайте Шлюз приложений Azure. В следующем примере создается шлюз приложений с контроллерами узлов в серверном пуле по умолчанию:
az network application-gateway create \
--resource-group $RESOURCE_GROUP_NAME \
--name myAppGateway \
--public-ip-address myAGPublicIPAddress \
--location westus \
--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
В этом разделе показано, как создать экземпляр гибкого сервера База данных Azure для PostgreSQL и настроить подключение к PostgreSQL в кластере Red Hat JBoss EAP.
Создание экземпляра гибкого сервера База данных Azure для PostgreSQL
Чтобы создать экземпляр базы данных, выполните следующие действия.
Используйте az postgres flexible-server create для подготовки экземпляра гибкого сервера База данных Azure для PostgreSQL, как показано в следующем примере:
export DATA_BASE_USER=jboss DB_SERVER_NAME="jbossdb$(date +%s)" echo "DB_SERVER_NAME=${DB_SERVER_NAME}" az postgres flexible-server create \ --active-directory-auth Enabled \ --resource-group $RESOURCE_GROUP_NAME \ --name ${DB_SERVER_NAME} \ --location westus \ --version 16 \ --public-access 0.0.0.0 \ --tier Burstable \ --sku-name Standard_B1ms \ --yes objectId=$(az identity show --name passwordless-managed-identity --resource-group $RESOURCE_GROUP_NAME --query principalId -o tsv) az postgres flexible-server ad-admin create \ --resource-group $RESOURCE_GROUP_NAME \ --server-name ${DB_SERVER_NAME} \ --display-name "passwordless-managed-identity" \ --object-id $objectId \ --type ServicePrincipal
Используйте следующие команды, чтобы разрешить доступ из служб Azure:
# Save aside the following names for later use export fullyQualifiedDomainName=$(az postgres flexible-server show \ --resource-group $RESOURCE_GROUP_NAME \ --name ${DB_SERVER_NAME} \ --query "fullyQualifiedDomainName" \ --output tsv) export name=$(az postgres flexible-server show \ --resource-group $RESOURCE_GROUP_NAME \ --name ${DB_SERVER_NAME} \ --query "name" \ --output tsv) az postgres flexible-server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --name ${DB_SERVER_NAME} \ --rule-name "AllowAllWindowsAzureIps" \ --start-ip-address "0.0.0.0" \ --end-ip-address "0.0.0.0"
Чтобы создать базу данных, используйте следующую команду:
az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP_NAME \ --server-name ${DB_SERVER_NAME} \ --database-name testdb
Установка драйвера
Чтобы установить драйвер JDBC с помощью интерфейса командной строки управления JBoss, выполните следующие действия.
SSH, чтобы
adminVM
использовать следующую команду. Этот шаг можно пропустить, если у вас уже открыто подключение.ssh -A -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
Используйте следующие команды, чтобы скачать драйвер JDBC на adminVM:
# Create JDBC driver and module directory jdbcDriverModuleDirectory=$EAP_HOME/modules/com/postgresql/main sudo mkdir -p "$jdbcDriverModuleDirectory" # Download JDBC driver and passwordless extensions extensionJarName=azure-identity-extensions-1.1.20.jar extensionPomName=azure-identity-extensions-1.1.20.pom sudo curl --retry 5 -Lo ${jdbcDriverModuleDirectory}/${extensionJarName} https://repo1.maven.org/maven2/com/azure/azure-identity-extensions/1.1.20/$extensionJarName sudo curl --retry 5 -Lo ${jdbcDriverModuleDirectory}/${extensionPomName} https://repo1.maven.org/maven2/com/azure/azure-identity-extensions/1.1.20/$extensionPomName sudo yum install maven -y sudo mvn dependency:copy-dependencies -f ${jdbcDriverModuleDirectory}/${extensionPomName} -Ddest=${jdbcDriverModuleDirectory} # Create module for JDBC driver jdbcDriverModule=module.xml sudo cat <<EOF >${jdbcDriverModule} <?xml version="1.0" ?> <module xmlns="urn:jboss:module:1.1" name="com.postgresql"> <resources> <resource-root path="${extensionJarName}"/> EOF # Add all jars from target/dependency for jar in ${jdbcDriverModuleDirectory}/target/dependency/*.jar; do if [ -f "$jar" ]; then # Extract just the filename from the path jarname=$(basename "$jar") echo " <resource-root path=\"target/dependency/${jarname}\"/>" >> ${jdbcDriverModule} fi done # Add the closing tags cat <<EOF >> ${jdbcDriverModule} </resources> <dependencies> <module name="javaee.api"/> <module name="sun.jdk"/> <module name="ibm.jdk"/> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module> EOF chmod 644 $jdbcDriverModule sudo mv $jdbcDriverModule $jdbcDriverModuleDirectory/$jdbcDriverModule
Используйте следующие команды, чтобы скопировать драйвер JDBC на контроллеры узлов:
scp -rp $EAP_HOME/modules/com/postgresql azureuser@mspvm1:/tmp/ ssh azureuser@mspvm1 "sudo mkdir -p $EAP_HOME/modules/com/postgresql && sudo cp -rp /tmp/postgresql/* $EAP_HOME/modules/com/postgresql && sudo rm -rf /tmp/postgresql" scp -rp $EAP_HOME/modules/com/postgresql azureuser@mspvm2:/tmp/ ssh azureuser@mspvm2 "sudo mkdir -p $EAP_HOME/modules/com/postgresql && sudo cp -rp /tmp/postgresql/* $EAP_HOME/modules/com/postgresql && sudo rm -rf /tmp/postgresql"
Журнал сервера находится в
mspVM1
папке иmspVM2
в/var/opt/rh/eap7/lib/wildfly/domain/servers/mspvm1-server0/log/server.log
. Если развертывание завершается сбоем, изучите этот файл журнала и устраните проблему перед продолжением.
Чтобы зарегистрировать драйвер JDBC, используйте следующие команды:
# Register JDBC driver sudo -u jboss $EAP_HOME/bin/jboss-cli.sh --connect --controller=$(hostname -I) --echo-command \ "/profile=ha/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource,driver-class-name=org.postgresql.Driver)"
Настройка подключения к базе данных для кластера Red Hat JBoss EAP
Вы запустили сервер базы данных, получили необходимый идентификатор ресурса и установили драйвер JDBC. Далее в этом разделе показано, как использовать интерфейс командной строки JBoss для настройки подключения к источнику данных с созданным ранее экземпляром PostgreSQL.
Откройте терминал и SSH, чтобы
adminVM
использовать следующую команду:ssh -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
Создайте источник данных с помощью следующих команд:
# Replace the following values with your own export DATA_SOURCE_CONNECTION_STRING="jdbc:postgresql://<database-fully-qualified-domain-name>:5432/testdb?sslmode=require&user=passwordless-managed-identity&authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin" export JDBC_DATA_SOURCE_NAME=dataSource-postgresql export JDBC_JNDI_NAME=java:jboss/datasources/JavaEECafeDB sudo -u jboss $EAP_HOME/bin/jboss-cli.sh --connect --controller=$(hostname -I) --echo-command \ "data-source add --driver-name=postgresql --profile=ha --name=${JDBC_DATA_SOURCE_NAME} --jndi-name=${JDBC_JNDI_NAME} --connection-url=${DATA_SOURCE_CONNECTION_STRING} "
Вы успешно настроили источник данных с именем java:jboss/datasources/JavaEECafeDB
.
Развертывание примера приложения Java EE Cafe
Чтобы развернуть пример приложения Java EE Cafe в кластере Red Hat JBoss EAP, выполните следующие действия.
Чтобы создать кафе Java EE, выполните следующие действия. В этих шагах предполагается, что у вас установлена локальная среда с Git и Maven:
Используйте следующую команду, чтобы клонировать исходный код из GitHub:
git clone https://github.com/Azure/rhel-jboss-templates.git --branch 20240904 --single-branch
Чтобы создать исходный код, используйте следующую команду:
mvn clean install --file rhel-jboss-templates/eap-coffee-app/pom.xml
Эта команда создает файл eap-coffee-app/target/javaee-café.war. Вы отправляете этот файл на следующем шаге.
Откройте веб-браузер и перейдите в консоль управления,
http://<adminVM-public-IP>:9990
а затем войдите с помощью имени пользователяjbossadmin
и пароляSecret123456
.Чтобы отправить javaee-café.war в репозиторий содержимого, выполните следующие действия.
На вкладке "Развертывания" консоль управления Red Hat JBoss EAP выберите репозиторий контента в области навигации.
Нажмите кнопку "Добавить", а затем нажмите кнопку "Отправить содержимое".
Используйте средство выбора файла браузера, чтобы выбрать файл javaee-café.war .
Выберите Далее.
Примите значения по умолчанию на следующем экране и нажмите кнопку Готово.
Выберите "Просмотреть содержимое".
Чтобы развернуть приложение
main-server-group
, выполните следующие действия.
Проверка конфигурации кластера Red Hat JBoss EAP
Вы настроили кластер JBoss EAP и развернули приложение в нем. Чтобы проверить все параметры, выполните следующие действия, чтобы получить доступ к приложению:
Чтобы получить общедоступный IP-адрес Шлюз приложений Azure, выполните следующую команду:
az network public-ip show \ --resource-group $RESOURCE_GROUP_NAME \ --name myAGPublicIPAddress \ --query '[ipAddress]' \ --output tsv
Откройте веб-браузер.
Перейдите к приложению с URL-адресом
http://<gateway-public-ip-address>/javaee-cafe/
. Не забывайте косую черту.Попробуйте добавить и удалить кофе.
Очистка ресурсов
Чтобы избежать расходов за использование 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 $RESOURCE_GROUP_NAME \
--name adminVM \
--command-id RunShellScript \
--scripts "sudo subscription-manager unregister"
# Unregister host controllers
az vm run-command invoke \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM1 \
--command-id RunShellScript \
--scripts "sudo subscription-manager unregister"
az vm run-command invoke \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM2 \
--command-id RunShellScript \
--scripts "sudo subscription-manager unregister"
Чтобы удалить группу $RESOURCE_GROUP_NAME
ресурсов, используйте следующую команду:
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Следующие шаги
Перейдите к просмотру параметров для запуска JBoss EAP в Azure.