Sdílet prostřednictvím


Kurz: Ruční instalace protokolu EAP JBoss ve službě Azure Virtual Machines

V tomto kurzu se dozvíte, jak nainstalovat Red Hat JBoss Enterprise Application Platform (EAP) a nakonfigurovat cluster v režimu domény na virtuálních počítačích Azure, v Red Hat Enterprise Linuxu (RHEL).

V tomto kurzu se naučíte provádět následující úlohy:

  • Vytvořte vlastní virtuální síť a vytvořte virtuální počítače v síti.
  • Na virtuální počítače nainstalujte požadovanou sadu JDK a Red Hat JBoss EAP pomocí příkazového řádku ručně.
  • Nakonfigurujte cluster Red Hat JBoss EAP v režimu domény pomocí rozhraní příkazového řádku (CLI).
  • Nakonfigurujte připojení zdroje dat PostgreSQL v clusteru.
  • Nasaďte a spusťte ukázkovou aplikaci Java EE v clusteru.
  • Zveřejnění aplikace na veřejném internetu prostřednictvím brány Aplikace Azure lication.
  • Ověřte úspěšnou konfiguraci.

Pokud dáváte přednost plně automatizovanému řešení, které provede všechny tyto kroky vaším jménem na virtuálních počítačích GNU/Linux, přímo z webu Azure Portal, přečtěte si rychlý start: Nasazení clusteru JBoss EAP na virtuálních počítačích Azure.

Pokud chcete poskytnout zpětnou vazbu nebo úzce spolupracovat na scénářích migrace s technickým týmem, který vyvíjí JBoss EAP v řešeních Azure, vyplňte tento krátký průzkum o migraci JBoss EAP a uveďte své kontaktní informace. Tým programových manažerů, architektů a inženýrů se s vámi okamžitě spojí a zahájí úzkou spolupráci.

Poznámka:

Tento článek obsahuje odkazy na termín slave (podřízený) , což je termín, který už Microsoft nepoužívá. Když se termín odebere ze softwaru, odebereme ho z tohoto článku.

Požadavky

  • Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

  • Nainstalujte Azure CLI verze 2.51.0 nebo vyšší , abyste mohli spouštět příkazy Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
  • Ujistěte se, že máte potřebné licence Red Hatu. Musíte mít účet Red Hat s nárokem na správu předplatného Red Hat (RHSM) pro EAP red Hat JBoss. Tento nárok umožňuje plně automatizované řešení (v rychlém startu: Nasazení clusteru JBoss EAP na virtuálních počítačích Azure) nainstalovat otestovanou a certifikovanou verzi protokolu JBoss EAP pro Red Hat.

    Poznámka:

    Pokud nemáte nárok na EAP, můžete si zaregistrovat bezplatné předplatné pro vývojáře prostřednictvím předplatného red hat developer pro jednotlivce. Uložte si podrobnosti o účtu, které se používají jako uživatelské jméno RHSM a heslo RHSM v další části.

  • Pokud jste už zaregistrovaní nebo po dokončení registrace, můžete pomocí následujícího postupu vyhledat potřebné přihlašovací údaje (ID fondu). Tato ID fondu se také používají jako ID fondu RHSM s nárokem EAP v dalších krocích.

    1. Přihlaste se ke svému účtu Red Hat.

    2. Při prvním přihlášení se zobrazí výzva k dokončení profilu. V závislosti na využití vyberte osobní nebo firemní typ účtu, jak je znázorněno na následujícím snímku obrazovky:

      Snímek obrazovky s oknem účtu Red Hat zobrazující možnosti typu účtu s vybranou možností Osobní

    3. Otevřete vývojářské předplatné Red Hat pro jednotlivce. Tento odkaz vás přenese na všechna předplatná ve vašem účtu pro příslušnou skladovou položku.

    4. V řádku ovládacích prvků v tabulce Všechny zakoupené předplatná vyberte Aktivní.

    5. Vyberte záhlaví seřaditelného sloupce pro koncové datum , dokud se hodnota v budoucnu nezobrazí jako první řádek.

    6. Vyberte první řádek. Pak zkopírujte a uložte si hodnotu následující hlavní fondy z ID fondu.

  • Sada Java Development Kit (JDK) verze 11. V této příručce doporučujeme build Red Hat OpenJDK. Ujistěte se, že je vaše JAVA_HOME proměnná prostředí správně nastavená v prostředích, ve kterých spouštíte příkazy.

  • Git– používá git --version se k otestování, jestli git funguje. Tento kurz byl testován s verzí 2.25.1.

  • Maven, slouží mvn -version k otestování, jestli mvn funguje. Tento kurz byl testován s verzí 3.6.3.

Příprava prostředí

V této části nastavíte infrastrukturu, ve které nainstalujete ovladač JDK, Red Hat JBoss EAP a PostgreSQL Java Connectivity (JDBC).

Předpoklady

Tento kurz nakonfiguruje cluster EAP red Hat JBoss v režimu domény se serverem pro správu a dvěma spravovanými servery na celkem třech virtuálních počítačích. Pokud chcete nakonfigurovat cluster, musíte vytvořit následující tři virtuální počítače Azure:

  • Virtuální počítač správce (název adminVMvirtuálního počítače) běží jako řadič domény.
  • Dva spravované virtuální počítače (názvy mspVM1 virtuálních počítačů a mspVM2) se spouštějí jako řadič hostitele.

Přihlášení k Azure

Pokud jste to ještě neudělali, přihlaste se ke svému předplatnému Azure pomocí příkazu az login a podle pokynů na obrazovce.

az login

Poznámka:

Pokud máte k přihlašovacím údajům Azure přidružených více tenantů Azure, musíte určit, ke kterému tenantovi se chcete přihlásit. Můžete to udělat pomocí --tenant této možnosti. Například az login --tenant contoso.onmicrosoft.com.

Vytvoření skupiny zdrojů

Vytvořte skupinu prostředků pomocí příkazu az group create. Názvy skupin prostředků musí být globálně jedinečné v rámci předplatného. Z tohoto důvodu zvažte předvyplnění některého jedinečného identifikátoru u všech názvů, které vytvoříte, které musí být jedinečné. Užitečnou technikou je použít iniciály následované dnešním datem ve mmdd formátu. Tento příklad vytvoří skupinu prostředků pojmenovanou $RESOURCE_GROUP_NAME westus v umístění:

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

Vytvoření virtuální sítě

Prostředky, které tvoří cluster Red Hat JBoss EAP, musí vzájemně komunikovat a veřejný internet pomocí virtuální sítě. Kompletní průvodce plánováním virtuální sítě najdete v průvodci architekturou přechodu na cloud pro Azure. Další informace najdete v tématu Nejčastější dotazy ke službě Azure Virtual Network.

Příklad v této části vytvoří virtuální síť s adresními prostory 192.168.0.0/16 a vytvoří podsíť použitou pro virtuální počítače.

Nejprve vytvořte virtuální síť pomocí příkazu az network vnet create. Následující příklad vytvoří síť s názvem myVNet:

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

Vytvořte podsíť pro cluster Red Hat JBoss EAP pomocí příkazu az network vnet subnet create. Následující příklad vytvoří podsíť s názvem mySubnet:

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

Vytvořte podsíť pro službu Application Gateway pomocí příkazu az network vnet subnet create. Následující příklad vytvoří podsíť s názvem jbossVMGatewaySubnet:

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

Vytvoření skupiny zabezpečení sítě a přiřazení podsítí k ní

Před vytvořením virtuálních počítačů s veřejnými IP adresami vytvořte skupinu zabezpečení sítě (NSG) pro zabezpečení virtuální sítě a podsítí vytvořených dříve.

Vytvořte skupinu zabezpečení sítě pomocí příkazu az network nsg create. Následující příklad vytvoří skupinu zabezpečení sítě s názvem mynsg:

az network nsg create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name mynsg

Vytvořte pravidla skupiny zabezpečení sítě pomocí příkazu az network nsg rule create. Následující příklad vytvoří pravidla skupiny zabezpečení sítě pojmenovaná ALLOW_APPGW a ALLOW_HTTP_ACCESS. Tato pravidla umožňují službě App Gateway přijímat příchozí provoz na portech HTTP používaných protokolem EAP Red Hat JBoss:

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

Přidružte podsítě vytvořené dříve k této skupině zabezpečení sítě pomocí příkazu az network vnet subnet update, jak je znázorněno v následujícím příkladu:

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

Vytvoření počítače s Red Hat Enterprise Linuxem pro správce

Generování klíčů SSH

Pomocí následujícího příkazu vygenerujte klíče SSH pro adminVM:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/jbosseapvm
ssh-add ~/.ssh/jbosseapvm

Vytvoření virtuálního počítače správce

Image z Marketplace, kterou používáte k vytvoření virtuálních počítačů, je RedHat:rhel-raw:86-gen2:latest. Další image najdete v tématu Image RHEL (Red Hat Enterprise Linux) dostupné v Azure.

Poznámka:

Pomocí příkazu az vm image list můžete zadat dotaz na všechny dostupné image Red Hat Enterprise Linuxu , například: az vm image list --offer RHEL --publisher RedHat --output table --all. Další informace najdete v tématu Přehled imagí Red Hat Enterprise Linuxu.

Pokud používáte jinou image, možná budete muset nainstalovat další knihovny, abyste povolili infrastrukturu použitou v této příručce.

Vytvořte základní virtuální počítač, nainstalujte na něj všechny požadované nástroje, pořiďte jeho snímek a pak vytvořte repliky na základě snímku.

Vytvořte virtuální počítač pomocí příkazu az vm create. Na tomto virtuálním počítači spustíte server pro správu.

Následující příklad vytvoří spravovanou identitu Azure a virtuální počítač s Red Hat Enterprise Linuxem pomocí ověřování 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

Instalace Red Hat JBoss EAP

K instalaci použijte následující postup:

  1. Veřejnou IP adresu adminVMzískáte pomocí následujícího příkazu:

    export ADMIN_VM_PUBLIC_IP=$(az vm show \
        --resource-group $RESOURCE_GROUP_NAME \
        --name adminVM \
        --show-details \
        --query publicIps | tr -d '"')
    
  2. Pomocí následujícího příkazu otevřete terminál a SSH:adminVM

    ssh -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
    
  3. Nakonfigurujte bránu firewall pro porty pomocí následujícího příkazu:

    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
    

    Slovo by se mělo zobrazit success za prvními dvěma příkazy. Po třetím příkazu by se měl zobrazit výstup podobný následujícímu příkladu:

    # 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
    

Poznámka:

Hodnoty RHSM_USER a RHSM_PASSWORD hodnoty jsou nutné k instalaci EAP red Hat JBoss. Doporučujeme použít účet služby s omezenými oprávněními pro přístup k zákaznickému portálu Red Hat.

  1. Pomocí následujících příkazů zaregistrujte hostitele správce do účtu správy předplatného 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
    

    Měl by se zobrazit výstup podobný následujícímu příkladu:

    Registering to: subscription.rhsm.redhat.com:443/subscription
    The system has been registered with ID: redacted
    The registered system name is: adminVM
    
  2. Pomocí následujícího příkazu připojte hostitele správce k fondu EAP Red Hat JBoss:

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

    Poznámka:

    Tento příkaz se ignoruje, pokud používáte režim Jednoduchý přístup k obsahu.

  3. Pomocí následujících příkazů nainstalujte 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
    

U druhého a třetího příkazu byste měli vidět mnoho řádků výstupu, končících na Complete!

  1. Pomocí následujících příkazů nastavte oprávnění a konfigurace sítě:

    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
    
  2. Ke konfiguraci proměnných prostředí použijte následující příkazy:

    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
    
  3. Ukončete připojení SSH zadáním ukončení.

Vytvoření počítačů pro spravované servery

Nainstalovali jste Red Hat JBoss EAP na adminVM, který běží jako server řadiče domény. Stále potřebujete připravit počítače na spuštění dvou serverů hostitelského kontroleru. Dále vytvoříte snímek adminVM a připravíte počítače pro dva spravované severy mspVM1 a mspVM2.

Tato část představuje přístup k přípravě počítačů se snímkem adminVM. Vraťte se do terminálu s přihlášenou službou Azure CLI a pak postupujte následovně:

  1. K zastavení adminVMpoužijte následující příkaz:

    az vm stop --resource-group $RESOURCE_GROUP_NAME --name adminVM
    
  2. Pomocí příkazu az snapshot create pořiďte snímek adminVM disku s operačním systémem, jak je znázorněno v následujícím příkladu:

    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}
    
  3. Spuštěním následujícího příkazu adminVM:

    az vm start --resource-group $RESOURCE_GROUP_NAME --name adminVM
    
  4. Pomocí následujících kroků vytvořte mspVM1:

    1. Nejprve vytvořte spravovaný disk pro mspVM1 příkaz 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}
      
    2. Dále pomocí následujících příkazů vytvořte virtuální počítač mspVM1, připojte disk mspVM1_OsDisk_1s operačním systémem:

      #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
      
    3. Vytvořili mspVM1 jste s nainstalovaným programem Red Hat JBoss EAP. Vzhledem k tomu, že se virtuální počítač vytvořil ze snímku adminVM disku s operačním systémem, mají dva virtuální počítače stejný název hostitele. Pomocí příkazu az vm run-command můžete změnit název hostitele na hodnotu mspVM1:

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

      Po úspěšném dokončení příkazu se zobrazí výstup podobný následujícímu příkladu:

      {
          "value": [
              {
              "code": "ProvisioningState/succeeded",
              "displayStatus": "Provisioning succeeded",
              "level": "Info",
              "message": "Enable succeeded: \n[stdout]\n\n[stderr]\n",
              "time": null
              }
          ]
      }
      
  5. K vytvoření mspVM2použijte stejné příkazy:

    #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"
    

Pomocí následujících příkazů získáte a zobrazíte privátní IP adresy, které použijete v dalších částech:

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}"

Teď jsou všechny tři počítače připravené. Dále nakonfigurujete cluster Red Hat JBoss EAP v režimu spravované domény.

Konfigurace spravované domény a clusteru

Nakonfigurujte cluster s povolenou replikací relací. Další informace naleznete v tématu Replikace relace.

Pokud chcete povolit replikaci relací, použijte pro cluster vysokou dostupnost Red Hat JBoss EAP. Microsoft Azure nepodporuje protokoly zjišťování JGroups založené na vícesměrových vysíláních. I když můžete používat jiné protokoly zjišťování JGroups (například statickou konfiguraci (TCPPING), sdílenou databázi (JDBC_PING), příkaz ping založený na systému sdílených souborů (FILE_PING) nebo TCPGOSSIP), důrazně doporučujeme použít protokol zjišťování sdílených souborů vyvinutý pro Azure: AZURE_PING. Další informace najdete v tématu Použití vysoké dostupnosti JBoss EAP v Microsoft Azure.

Vytvoření účtu úložiště Azure a kontejneru objektů blob pro AZURE_PING

K vytvoření účtu úložiště a kontejneru objektů blob použijte následující příkazy:

# 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

Potom pomocí následujícího příkazu načtěte klíč účtu úložiště pro pozdější použití. Pokud se zobrazí chyba, počkejte několik minut a zkuste to znovu. Předchozí příkaz pro vytvoření účtu úložiště možná ještě není hotový.

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}

Měl by se zobrazit následující výstup:

{
  "created": true
}

Konfigurace řadiče domény (uzel správce)

V tomto kurzu se ke konfiguraci řadiče domény používají příkazy rozhraní příkazového řádku pro správu EAP Red Hat JBoss. Další informace najdete v průvodci rozhraním příkazového řádku pro správu.

Následující kroky nastaví konfiguraci řadiče domény v systému adminVM. Připojte se jako adminVM azureuser uživatel pomocí SSH. Vzpomeňte si, že veřejná IP adresa adminVM byla zachycena dříve do ADMIN_VM_PUBLIC_IP proměnné prostředí.

ssh -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP

Nejprve pomocí následujících příkazů nakonfigurujte profil vysoké dostupnosti a skupiny JGroup pomocí AZURE_PING protokolu:

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/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

Poslední stanza výstupu by měla vypadat podobně jako v následujícím příkladu. Pokud ne, před pokračováním problém vyřešte a vyřešte ho.

[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

Pak pomocí následujících příkazů nakonfigurujte server JBoss a nastavte službu EAP:

Poznámka:

Hodnoty JBOSS_EAP_USER a JBOSS_EAP_PASSWORD hodnoty jsou potřeba ke konfiguraci uživatele pro správu EAP JBoss.

# 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'

Výstup by měl vypadat zhruba jako v tomto příkladu:

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'

Nakonec pomocí následujících příkazů spusťte službu 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

Výstup by měl vypadat zhruba jako v tomto příkladu:

● 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).

Zadáním q ukončete pager. Ukončete připojení SSH zadáním ukončení.

Po spuštění služby Red Hat JBoss EAP můžete ke konzole pro správu přistupovat prostřednictvím http://$ADMIN_VM_PUBLIC_IP:9990 webového prohlížeče. Přihlaste se pomocí nakonfigurovaného uživatelského jména jbossadmin a hesla Secret123456.

Snímek obrazovky konzoly pro správu řadiče domény platformy Enterprise Application Platform pro Red Hat JBoss

Vyberte kartu Runtime. V navigačním podokně vyberte Topologie. Teď byste měli vidět, že váš cluster obsahuje jenom jeden řadič domény:

Konfigurace řadičů hostitele (pracovních uzlů)

Připojte se jako azureuser uživatel pomocí mspVM1 SSH. Pomocí následujícího příkazu získejte veřejnou IP adresu virtuálního počítače:

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

K nastavení hostitelského kontroleru použijte mspVM1následující příkazy:

# 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
scp azureuser@${DOMAIN_CONTROLLER_PRIVATE_IP}:/tmp/domain.xml /tmp/domain.xml
sudo mv /tmp/domain.xml $EAP_HOME/wildfly/domain/configuration/domain.xml
sudo chown jboss:jboss $EAP_HOME/wildfly/domain/configuration/domain.xml

Pomocí následujících příkazů použijte změny kontroleru hostitele na 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})"

Poslední stanza výstupu by měla vypadat podobně jako v následujícím příkladu. Pokud ne, před pokračováním problém vyřešte a vyřešte ho.

[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

Pak pomocí následujících příkazů nakonfigurujte server JBoss a nastavte službu 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

Výstup by měl vypadat zhruba jako v tomto příkladu:

● 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).

Zadáním q ukončete pager. Ukončete připojení SSH zadáním ukončení.

Připojte se jako azureuser uživatel pomocí mspVM2 SSH. Pomocí následujícího příkazu získejte veřejnou IP adresu virtuálního počítače:

az vm show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name mspVM2 \
    --show-details \
    --query publicIps | tr -d '"'

Opakujte předchozí kroky mspVM2a ukončete připojení SSH zadáním ukončení.

Po připojení adminVMdvou řadičů hostitelů byste měli být schopni zobrazit topologii clusteru, jak je znázorněno na následujícím snímku obrazovky:

Zveřejnění clusteru Red Hat JBoss EAP s Aplikace Azure lication Gateway

Teď, když jste vytvořili cluster na virtuálních počítačích Azure, vás tato část provede zveřejněním protokolu JBoss EAP na internetu pomocí brány Aplikace Azure lication Gateway.

Vytvoření brány Aplikace Azure lication

K zveřejnění protokolu EAP Red Hat JBoss eAP na internetu se vyžaduje veřejná IP adresa. Vytvořte veřejnou IP adresu a pak k ní přidružte bránu Aplikace Azure lication. Pomocí příkazu az network public-ip create ho vytvořte, jak je znázorněno v následujícím příkladu:

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

Dále přidejte back-endové servery do back-endového fondu služby Application Gateway. K dotazování na back-endové IP adresy použijte následující příkazy. Řadiče hostitelů (pracovní uzly) jsou nakonfigurované jenom jako back-endové servery.

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)

Dále vytvořte Aplikace Azure lication Gateway. Následující příklad vytvoří aplikační bránu s řadiči hostitelů ve výchozím back-endovém fondu:

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}

Poznámka:

Tento příklad nastaví jednoduchý přístup k serverům EAP Red Hat JBoss pomocí protokolu HTTP. Pokud chcete zabezpečený přístup, nakonfigurujte ukončení protokolu TLS/SSL podle pokynů na konci protokolu TLS se službou Application Gateway.

Tento příklad zveřejňuje kontrolery hostitelů na portu 8080. V dalších krocích nasadíte ukázkovou aplikaci s připojením k databázi ke clusteru.

Připojení flexibilního serveru Azure Database for PostgreSQL

V této části se dozvíte, jak vytvořit instanci flexibilního serveru Azure Database for PostgreSQL a nakonfigurovat připojení k PostgreSQL v clusteru Red Hat JBoss EAP.

Vytvoření instance flexibilního serveru Azure Database for PostgreSQL

K vytvoření instance databáze použijte následující postup:

  1. Pomocí příkazu az postgres flexible-server create zřiďte instanci flexibilního serveru Azure Database for PostgreSQL, jak je znázorněno v následujícím příkladu:

    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 
    
  2. Pomocí následujících příkazů povolte přístup ze služeb 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"
    
  3. K vytvoření databáze použijte následující příkaz:

    az postgres flexible-server db create \
        --resource-group $RESOURCE_GROUP_NAME \
        --server-name ${DB_SERVER_NAME} \
        --database-name testdb
    

Instalace ovladače

Pomocí následujících kroků nainstalujte ovladač JDBC pomocí rozhraní příkazového řádku pro správu JBoss:

  1. Pomocí následujícího příkazu se přes SSH připojte k adminVM serveru SSH. Tento krok můžete přeskočit, pokud už máte otevřené připojení.

    ssh -A -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
    
  2. Pomocí následujících příkazů stáhněte ovladač JDBC na adminVM:

    # Create JDBC driver and module directory
    jdbcDriverModuleDirectory="$EAP_HOME"/wildfly/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
    
  3. Pomocí následujících příkazů zkopírujte ovladač JDBC do řadičů hostitelů:

    scp -rp $EAP_HOME/wildfly/modules/com/postgresql azureuser@mspvm1:/tmp/
    ssh azureuser@mspvm1 "sudo mkdir -p $EAP_HOME/wildfly/modules/com/postgresql && sudo cp -rp /tmp/postgresql/* $EAP_HOME/wildfly/modules/com/postgresql && sudo rm -rf /tmp/postgresql"
    
    scp -rp $EAP_HOME/wildfly/modules/com/postgresql azureuser@mspvm2:/tmp/
    ssh azureuser@mspvm2 "sudo mkdir -p $EAP_HOME/wildfly/modules/com/postgresql && sudo cp -rp /tmp/postgresql/* $EAP_HOME/wildfly/modules/com/postgresql && sudo rm -rf /tmp/postgresql"
    

    Protokol serveru se nachází na mspVM1 adrese a mspVM2 na /var/opt/rh/eap7/lib/wildfly/domain/servers/mspvm1-server0/log/server.logadrese . Pokud nasazení selže, projděte si tento soubor protokolu a před pokračováním problém vyřešte.


  1. K registraci ovladače JDBC použijte následující příkazy:

    # Register JDBC driver
    sudo -u jboss $EAP_HOME/wildfly/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)"
    

Konfigurace připojení k databázi pro cluster Red Hat JBoss EAP

Spustili jste databázový server, získali potřebné ID prostředku a nainstalovali jste ovladač JDBC. Dále kroky v této části ukazují, jak pomocí rozhraní příkazového řádku JBoss nakonfigurovat připojení zdroje dat k instanci PostgreSQL, kterou jste vytvořili dříve.

  1. Pomocí následujícího příkazu otevřete terminál a SSH:adminVM

    ssh -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
    
  2. K vytvoření zdroje dat použijte následující příkazy:

    # 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/wildfly/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} "
    

Úspěšně jste nakonfigurovali zdroj dat s názvem java:jboss/datasources/JavaEECafeDB.

Nasazení ukázkové aplikace Java EE Cafe

Pomocí následujících kroků nasaďte ukázkovou aplikaci Java EE Cafe do clusteru Red Hat JBoss EAP:

  1. Pomocí následujícího postupu sestavte Java EE Cafe. Tento postup předpokládá, že máte místní prostředí s nainstalovaným Gitem a Mavenem:

    1. Ke klonování zdrojového kódu z GitHubu použijte následující příkaz:

      git clone https://github.com/Azure/rhel-jboss-templates.git --branch 20240904 --single-branch
      
    2. K sestavení zdrojového kódu použijte následující příkaz:

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

      Tento příkaz vytvoří soubor eap-coffee-app/target/javaee-café.war. Tento soubor nahrajete v dalším kroku.

  2. Otevřete webový prohlížeč a přejděte do konzoly pro správu na adrese http://<adminVM-public-IP>:9990, pak se přihlaste pomocí uživatelského jména jbossadmin a hesla Secret123456.

  3. Pomocí následujícího postupu nahrajte soubor javaee-café.war do úložiště obsahu:

    1. Na kartě Nasazení konzoly pro správu Red Hat JBoss EAP vyberte v navigačním podokně úložiště obsahu.

    2. Vyberte tlačítko Přidat a pak vyberte Nahrát obsah.

      Snímek obrazovky s kartou Nasazení podnikové aplikační platformy Red Hat JBoss a zvýrazněnou možností Nabídky Nahrát obsah

    3. Pomocí voliče souborů prohlížeče vyberte soubor javaee-café.war .

    4. Vyberte Další.

    5. Přijměte výchozí hodnoty na další obrazovce a pak vyberte Dokončit.

    6. Vyberte Zobrazit obsah.

  4. Pomocí následujícího postupu nasaďte aplikaci do main-server-group:

    1. V úložišti obsahu vyberte javaee-café.war.

    2. V rozevírací nabídce vyberte Nasadit.

    3. Jako skupinu serverů vyberte main-server-group pro nasazení javaee-café.war.

    4. Výběrem možnosti Nasadit zahájíte nasazení. Mělo by se zobrazit upozornění podobné následujícímu snímku obrazovky:

      Snímek obrazovky s oznámením o úspěšném nasazení

Testování konfigurace clusteru Red Hat JBoss EAP

Nakonfigurovali jste cluster JBoss EAP a nasadili jste do něj aplikaci. Pokud chcete ověřit všechna nastavení, použijte následující postup:

  1. Pomocí následujícího příkazu získejte veřejnou IP adresu Aplikace Azure lication Gateway:

    az network public-ip show \
        --resource-group $RESOURCE_GROUP_NAME \
        --name myAGPublicIPAddress \
        --query '[ipAddress]' \
        --output tsv
    
  2. Otevřete webový prohlížeč.

  3. Přejděte do aplikace s adresou URL http://<gateway-public-ip-address>/javaee-cafe/. Nezapomeňte na koncové lomítko.

  4. Zkuste přidat a odebrat kávu.

Vyčištění prostředků

Abyste se vyhnuli poplatkům za Azure, měli byste vyčistit nepotřebné prostředky. Pokud už cluster Red Hat JBoss EAP nasazený na virtuálním počítači Azure nepotřebujete, zrušte registraci serverů EAP Red Hat JBoss a odeberte prostředky Azure.

Pomocí následujících příkazů zrušíte registraci serverů a virtuálních počítačů EAP red Hat jBoss ze správy předplatného 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"

Pomocí následujícího příkazu odstraňte skupinu $RESOURCE_GROUP_NAMEprostředků:

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

Další kroky

Pokračujte v prozkoumání možností spuštění JBoss EAP v Azure.