Share via


Tutorial: Manuelles Installieren von Red Hat JBoss EAP auf Azure-VMs

In diesem Lernprogramm werden die Schritte zum Installieren von Red Hat JBoss EAP und zum Konfigurieren eines Clusters im do Standard-Modus auf virtuellen Azure-Computern (VMs) auf Red Hat Enterprise Linux (RHEL) gezeigt.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen Sie ein benutzerdefiniertes virtuelles Netzwerk, und erstellen Sie die virtuellen Computer im Netzwerk.
  • Installieren Sie das gewünschte JDK- und Red Hat JBoss EAP auf den virtuellen Computern mithilfe der Befehlszeile manuell.
  • Konfigurieren Sie einen Red Hat JBoss EAP-Cluster im do Standard Modus mithilfe der Befehlszeilenschnittstelle (CLI).
  • Konfigurieren Sie eine PostgreSQL-Datenquellenverbindung im Cluster.
  • Stellen Sie eine Java EE-Beispielanwendung im Cluster bereit, und führen Sie sie aus.
  • Machen Sie die Anwendung über Azure-App lizenzierungsgateway für das öffentliche Internet verfügbar.
  • Überprüfen Sie die erfolgreiche Konfiguration.

Wenn Sie eine vollautomatisierte Lösung bevorzugen, die all diese Schritte in Ihrem Auftrag auf GNU/Linux-VMs direkt aus dem Azure-Portal ausführt, finden Sie unter Schnellstart: Bereitstellen von JBoss EAP-Server auf einem virtuellen Azure-Computer mit dem Azure-Portal.

Hinweis

Dieser Artikel enthält Verweise auf den Begriff Slave, einen Begriff, den Microsoft nicht mehr verwendet. Sobald der Begriff aus der Software entfernt wurde, wird er auch aus diesem Artikel entfernt.

Voraussetzungen

  • Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.

  • Installieren Sie Azure CLI, Version 2.51.0 oder höher , um Azure CLI-Befehle auszuführen.

    • Installieren Sie die Azure CLI-Erweiterungen bei der ersten Verwendung, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
  • Stellen Sie sicher, dass Sie über die erforderlichen Red Hat-Lizenzen verfügen. Sie müssen über ein Red Hat-Konto mit der Berechtigung Red Hat Subscription Management (RHSM) für Red Hat JBoss EAP verfügen. Mit dieser Berechtigung kann die vollständig automatisierte Lösung Erwähnung früher (in "Bereitstellen von JBoss EAP-Server auf einem virtuellen Azure-Computer mit dem Azure-Portal") installiert werden, um die getestete und zertifizierte JBoss EAP-Version von Red Hat zu installieren.

    Hinweis

    Wenn Sie keine EAP-Berechtigung haben, können Sie sich über Red Hat Entwicklerabonnements für Einzelpersonen für ein kostenloses Entwicklerabonnement registrieren. Speichern Sie die Kontodetails, die im nächsten Abschnitt als RHSM-Benutzername und RHSM-Kennwort verwendet werden.

  • Wenn Sie bereits registriert sind oder nachdem Sie die Registrierung abgeschlossen haben, können Sie die erforderlichen Anmeldeinformationen (Pool-IDs) mithilfe der folgenden Schritte suchen. Diese Pool-IDs werden auch als RHSM-Pool-ID mit EAP-Berechtigung in nachfolgenden Schritten verwendet.

    1. Melden Sie sich bei Ihrem Red Hat-Konto an.

    2. Wenn Sie sich zum ersten Mal anmelden, werden Sie aufgefordert, Ihr Profil abzuschließen. Wählen Sie je nach Verwendung entweder "Persönlich" oder "Unternehmenstyp" aus, wie im folgenden Screenshot gezeigt:

      Screenshot des Fensters

    3. Öffnen Sie das Red Hat-Entwicklerabonnement für Einzelpersonen. Über diesen Link gelangen Sie zu allen Abonnements in Ihrem Konto für die entsprechende SKU.

    4. Wählen Sie in der Zeile der Steuerelemente in der Tabelle "Alle erworbenen Abonnements " die Option "Aktiv" aus. Dadurch wird sichergestellt, dass nur aktive Abonnements angezeigt werden.

    5. Wählen Sie die sortierbare Spaltenüberschrift für "Enddatum " aus, bis der Wert in zukunft am weitesten als erste Zeile angezeigt wird.

    6. Wählen Sie die erste Zeile aus. Kopieren Und speichern Sie dann den Wert nach den Masterpools aus Pool-IDs.

  • Java JDK, Version 11. In diesem Handbuch empfehlen wir Red Hat Build of OpenJDK. Stellen Sie sicher, dass die Umgebungsvariable JAVA_HOME in den Shells korrekt festgelegt ist, in denen Sie die Befehle ausführen.

  • Git; wird verwendet git --version , um zu testen, ob git dies funktioniert. Dieses Lernprogramm wurde mit Version 2.25.1 getestet.

  • Maven; Verwenden Sie mvn -version , um zu testen, ob mvn funktioniert. Dieses Lernprogramm wurde mit Version 3.6.3 getestet.

Vorbereiten der Umgebung

In diesem Abschnitt richten Sie die Infrastruktur ein, in der Sie JDK, Red Hat JBoss EAP und den PostgreSQL VORGANGstreiber installieren.

Annahmen

In diesem Lernprogramm wird ein Red Hat JBoss EAP-Cluster im do Standard-Modus mit einem Verwaltungsserver und zwei verwalteten Servern auf insgesamt drei virtuellen Computern konfiguriert. Zum Konfigurieren des Clusters müssen Sie die folgenden drei Azure-VMs erstellen:

  • Eine Administrator-VM (VM-NameadminVM) wird wie der Controller ausgeführt Standard.
  • Zwei verwaltete VMs (VM-Namen mspVM1 und mspVM2) werden als Hostcontroller ausgeführt.

Anmelden bei Azure

Falls noch nicht geschehen, melden Sie sich mit dem Befehl "az login " bei Ihrem Azure-Abonnement an, und folgen Sie den Anweisungen auf dem Bildschirm.

az login

Hinweis

Wenn Sie über mehrere Azure-Mandanten verfügen, die Ihren Azure-Anmeldeinformationen zugeordnet sind, müssen Sie angeben, bei welchem Mandanten Sie sich anmelden möchten. Sie können dies mit der --tenant Option tun. Beispiel: az login --tenant contoso.onmicrosoft.com.

Erstellen einer Ressourcengruppe

Erstellen Sie mit az group create eine Ressourcengruppe. Ressourcengruppennamen müssen innerhalb eines Abonnements global eindeutig sein. Aus diesem Grund sollten Sie einen eindeutigen Bezeichner für alle Namen, die Sie erstellen, vorab ausstellen, die eindeutig sein müssen. Es hat sich bewährt, Ihre Initialen gefolgt vom heutigen Datum im Format mmdd zu verwenden. In diesem Beispiel wird eine Ressourcengruppe erstellt, die eastus am Speicherort benannt istabc1110rg:

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

Erstellen eines virtuellen Netzwerks

Die Ressourcen, die Ihren Red Hat JBoss EAP-Cluster umfassen, müssen miteinander kommunizieren und das öffentliche Internet über ein virtuelles Netzwerk verwenden. Eine vollständige Anleitung zur Planung Ihres virtuellen Netzwerks finden Sie im Leitfaden zum Planen virtueller Netzwerke im Cloud Adoption Framework für Azure. Weitere Informationen finden Sie unter häufig gestellten Fragen zu Azure Virtual Network.

Im Beispiel in diesem Abschnitt wird ein virtuelles Netzwerk mit Adressraum 192.168.0.0/16 erstellt und ein Subnetz erstellt, das für VMs verwendet wird.

Erstellen Sie zunächst ein virtuelles Netzwerk mit az network vnet create. Im folgenden Beispiel wird ein Netzwerk mit dem Namen myVNet:

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

Erstellen Sie ein Subnetz für den EAP-Cluster "Red Hat JBoss", indem Sie az network vnet subnet create verwenden. Im folgenden Beispiel wird ein Subnetz namens mySubnet erstellt:

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

Erstellen Sie ein Subnetz für das Anwendungsgateway mithilfe des Az-Netzwerk-vnet-Subnetzes. Im folgenden Beispiel wird ein Subnetz namens jbossVMGatewaySubnet erstellt:

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

Erstellen einer Netzwerksicherheitsgruppe und Zuweisen von Subnetzen

Bevor Sie virtuelle Computer mit öffentlichen IPs erstellen, erstellen Sie eine Netzwerksicherheitsgruppe (Network Security Group, NSG), um das zuvor erstellte virtuelle Netzwerk und Subnetze zu sichern.

Erstellen Sie mit az network nsg create eine Netzwerksicherheitsgruppe. Im folgenden Beispiel wird eine Netzwerksicherheitsgruppe namens mynsg erstellt:

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

Erstellen Sie Netzwerksicherheitsgruppenregeln mithilfe der az network nsg-Regel. Im folgenden Beispiel werden Netzwerksicherheitsgruppenregeln namens ALLOW_APPGW und ALLOW_HTTP_ACCESS. Diese Regeln ermöglichen es App-Gateway, eingehenden Datenverkehr in den HTTP-Ports zu akzeptieren, die von Red Hat JBoss EAP verwendet werden:

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

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

Ordnen Sie die zuvor erstellten Subnetze dieser Netzwerksicherheitsgruppe mithilfe des Az-Netzwerk-vnet-Subnetzupdates zu, wie im folgenden Beispiel gezeigt:

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

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

Erstellen eines Red Hat Enterprise Linux-Computers für Administratoren

Erstellen des virtuellen Administratorcomputers

Das Marketplace-Image, das Sie zum Erstellen der virtuellen Computer verwenden, ist RedHat:rhel-raw:86-gen2:latest. Weitere Bilder finden Sie unter Red Hat Enterprise Linux (RHEL)-Images, die in Azure verfügbar sind.

Hinweis

Sie können alle verfügbaren Red Hat Enterprise Linux-Images abfragen, die von Red Hat mit dem Befehl az vm image list bereitgestellt werden , z. B.: az vm image list --offer RHEL --publisher RedHat --output table --all. Weitere Informationen finden Sie unter Übersicht über Red Hat Enterprise Linux-Images.

Wenn Sie ein anderes Image verwenden, müssen Sie möglicherweise zusätzliche Bibliotheken installieren, um die in diesem Handbuch verwendete Infrastruktur zu aktivieren.

Erstellen Sie einen einfachen virtuellen Computer, installieren Sie alle erforderlichen Tools, nehmen Sie eine Momentaufnahme davon und erstellen Sie dann Replikate basierend auf dem Momentaufnahme.

Erstellen Sie einen virtuellen Computer mit az vm create. Sie führen den Verwaltungsserver auf dieser VM aus.

Im folgenden Beispiel wird eine Linux-VM für Red Hat Enterprise mit Benutzername und Kennwortpaar für die Authentifizierung erstellt. Bei Bedarf können Sie stattdessen TLS/SSL-Authentifizierung verwenden.

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

Installieren von OpenJDK 11 und Red Hat JBoss EAP 7.4

Führen Sie die folgenden Schritte aus, um folgendes zu installieren:

  1. Verwenden Sie den folgenden Befehl, um die öffentliche IP von adminVM:

    export ADMIN_VM_PUBLIC_IP=$(az vm show \
        --resource-group abc1110rg \
        --name adminVM \
        --show-details \
        --query publicIps | tr -d '"')
    
  2. Öffnen Sie ein Terminal und SSH mit adminVM dem folgenden Befehl:

    ssh azureuser@$ADMIN_VM_PUBLIC_IP
    
  3. Geben Sie Secret123456 als Kennwort an.

  4. Konfigurieren Sie die Firewall für Ports mithilfe des folgenden Befehls:

    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
    

    Das Wort success sollte nach den ersten beiden Befehlen angezeigt werden. Nach dem dritten Befehl sollte die Ausgabe ähnlich wie im folgenden Beispiel angezeigt werden:

    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *filter
    :INPUT ACCEPT [20:3546]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [24:5446]
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *security
    :INPUT ACCEPT [19:3506]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [5:492]
    -A OUTPUT -d 168.63.129.16/32 -p tcp -m tcp --dport 53 -j ACCEPT
    -A OUTPUT -d 168.63.129.16/32 -p tcp -m tcp --dport 53 -j ACCEPT
    -A OUTPUT -d 168.63.129.16/32 -p tcp -m owner --uid-owner 0 -j ACCEPT
    -A OUTPUT -d 168.63.129.16/32 -p tcp -m conntrack --ctstate INVALID,NEW -j DROP
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *raw
    :PREROUTING ACCEPT [20:3546]
    :OUTPUT ACCEPT [24:5446]
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *mangle
    :PREROUTING ACCEPT [20:3546]
    :INPUT ACCEPT [20:3546]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [24:5446]
    :POSTROUTING ACCEPT [24:5446]
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023
    *nat
    :PREROUTING ACCEPT [1:40]
    :INPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [4:240]
    :OUTPUT ACCEPT [4:240]
    COMMIT
    # Completed on Wed Mar 29 22:39:23 2023
    
  5. Verwenden Sie die folgenden Befehle, um den Administratorhost bei Ihrem RhSM-Konto (Red Hat Subscription Management) zu registrieren:

    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
    

    Die Ausgabe sollte etwa folgendem Beispiel entsprechen:

    Registering to: subscription.rhsm.redhat.com:443/subscription
    The system has been registered with ID: redacted
    The registered system name is: adminVM
    
  6. Verwenden Sie den folgenden Befehl, um den Administratorhost an den EAP-Pool "Red Hat JBoss" anzufügen:

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

    Hinweis

    Dieser Befehl wird ignoriert, wenn Sie den Modus für den einfachen Inhaltszugriff verwenden.

  7. Verwenden Sie den folgenden Befehl, um OpenJDK 11 zu installieren:

    sudo yum install java-11-openjdk -y
    

    Es sollte viele Ausgabezeilen angezeigt werden, die mit Complete!

  8. Verwenden Sie die folgenden Befehle, um Red Hat JBoss EAP 7.4 zu installieren:

    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
    

    Für die zweiten und dritten Befehle sollten viele Ausgabezeilen angezeigt werden, die mit Complete!

  9. Verwenden Sie die folgenden Befehle, um Berechtigungs- und TCP-Konfigurationen festzulegen:

    sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
    echo 'AllowTcpForwarding no' | sudo tee -a /etc/ssh/sshd_config
    sudo systemctl restart sshd
    
  10. Verwenden Sie die folgenden Befehle, um die Umgebungsvariablen zu konfigurieren:

    echo 'export EAP_RPM_CONF_DOMAIN="/etc/opt/rh/eap7/wildfly/eap7-domain.conf"' >> ~/.bash_profile
    echo 'export EAP_HOME="/opt/rh/eap7/root/usr/share"' >> ~/.bash_profile
    source ~/.bash_profile
    sudo touch /etc/profile.d/eap_env.sh
    echo 'export EAP_HOME="/opt/rh/eap7/root/usr/share"' | sudo tee -a /etc/profile.d/eap_env.sh
    
  11. Beenden Sie die SSH-Verbindung, indem Sie "Exit" eingeben.

Erstellen von Computern für verwaltete Server

Sie haben OpenJDK 11 und Red Hat JBoss EAP 7.4 installiertadminVM, auf dem der Controllerserver ausgeführt wird Standard. Sie müssen weiterhin Computer vorbereiten, um die beiden Hostcontrollerserver auszuführen. Als Nächstes erstellen Sie eine Momentaufnahme von adminVM computern für zwei verwaltete mspVM1 Server und bereiten mspVM2sie vor.

In diesem Abschnitt wird ein Ansatz zum Vorbereiten von Computern mit dem Momentaufnahme von adminVM. Kehren Sie zu Ihrem Terminal zurück, in dem Azure CLI angemeldet ist, und führen Sie dann die folgenden Schritte aus:

  1. Verwenden Sie den folgenden Befehl, um den Befehl zu beenden adminVM:

    az vm stop --resource-group abc1110rg --name adminVM
    
  2. Verwenden Sie az Momentaufnahme erstellen, um eine Momentaufnahme des adminVM Betriebssystemdatenträgers zu übernehmen, wie im folgenden Beispiel gezeigt:

    export ADMIN_OS_DISK_ID=$(az vm show \
        --resource-group abc1110rg \
        --name adminVM \
        --query storageProfile.osDisk.managedDisk.id \
        --output tsv)
    az snapshot create \
        --resource-group abc1110rg \
        --name myAdminOSDiskSnapshot \
        --source ${ADMIN_OS_DISK_ID}
    
  3. Verwenden Sie den folgenden Befehl, um zu starten adminVM:

    az vm start --resource-group abc1110rg --name adminVM
    
    
  4. Führen Sie die folgenden Schritte aus, um folgendes zu erstellen mspVM1:

    1. Erstellen Sie zunächst einen verwalteten Datenträger für mspVM1az disk create:

      #Get the snapshot ID
      export SNAPSHOT_ID=$(az snapshot show \
          --name myAdminOSDiskSnapshot \
          --resource-group abc1110rg \
          --query '[id]' \
          --output tsv)
      
      #Create a new Managed Disks using the snapshot Id
      #Note that managed disk is created in the same location as the snapshot
      az disk create \
          --resource-group abc1110rg \
          --name mspVM1_OsDisk_1 \
          --source ${SNAPSHOT_ID}
      
    2. Verwenden Sie als Nächstes die folgenden Befehle zum Erstellen eines virtuellen mspVM1Computers, zum Anfügen des Betriebssystemdatenträgers mspVM1_OsDisk_1:

      #Get the resource Id of the managed disk
      export MSPVM1_DISK_ID=$(az disk show \
          --name mspVM1_OsDisk_1 \
          --resource-group abc1110rg \
          --query '[id]' \
          --output tsv)
      
      #Create VM by attaching existing managed disks as OS
      az vm create \
          --resource-group abc1110rg \
          --name mspVM1 \
          --attach-os-disk ${MSPVM1_DISK_ID} \
          --os-type linux \
          --public-ip-sku Standard \
          --nsg mynsg \
          --vnet-name myVnet \
          --subnet mySubnet
      
    3. Sie haben mit OpenJDK 11 und Red Hat JBoss EAP 7.4 installiert.mspVM1 Da der virtuelle Computer von einem Momentaufnahme des adminVM Betriebssystemdatenträgers erstellt wurde, weisen die beiden virtuellen Computer denselben Hostnamen auf. Verwenden Sie az vm run-command invoke , um den Hostnamen in den Wert mspVM1zu ändern:

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

      Wenn der Befehl erfolgreich abgeschlossen ist, wird die Ausgabe ähnlich wie im folgenden Beispiel angezeigt:

      {
          "value": [
              {
              "code": "ProvisioningState/succeeded",
              "displayStatus": "Provisioning succeeded",
              "level": "Info",
              "message": "Enable succeeded: \n[stdout]\n\n[stderr]\n",
              "time": null
              }
          ]
      }
      
  5. Verwenden Sie die gleichen Befehle zum Erstellen mspVM2:

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

Verwenden Sie die folgenden Befehle, um die privaten IP-Adressen abzurufen und anzuzeigen, die Sie in späteren Abschnitten verwenden:

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

Jetzt sind alle drei Maschinen bereit. Als Nächstes konfigurieren Sie einen Red Hat JBoss EAP-Cluster im verwalteten Modus Standard.

Konfigurieren von verwalteten Aufgaben Standard und Cluster

Konfigurieren Sie den Cluster mit aktivierter Sitzungsreplikation. Weitere Informationen finden Sie unter Session Replication.

Um die Sitzungsreplikation zu aktivieren, verwenden Sie Red Hat JBoss EAP High Availability für den Cluster. Microsoft Azure unterstützt keine JGroups-Ermittlungsprotokolle, die auf UDP-Multicast basieren. Obwohl Sie möglicherweise andere JGroups-Ermittlungsprotokolle (z. B. eine statische Konfiguration (TCPPING), eine freigegebene Datenbank (JDBC_PING), einen freigegebenen dateisystembasierten Ping (FILE_PING) verwenden oder TCPGOSSIP), empfehlen wir dringend, das für Azure entwickelte freigegebene Dateiermittlungsprotokoll zu verwenden: AZURE_PING. Weitere Informationen finden Sie unter Verwenden von JBoss EAP High Availability in Microsoft Azure.

Erstellen eines Azure-Speicherkontos und eines Blob-Containers für AZURE_PING

Verwenden Sie die folgenden Befehle, um ein Speicherkonto und blob-Container zu erstellen:

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

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

Rufen Sie dann den Speicherkontoschlüssel für die spätere Verwendung mithilfe des folgenden Befehls ab. Wenn ein Fehler angezeigt wird, warten Sie einige Minuten, und versuchen Sie es erneut. Der Fehler kann durch den vorherigen Befehl verursacht werden, um das Speicherkonto zu erstellen, das nicht vollständig abgeschlossen wird.

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

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

Die folgende Ausgabe wird angezeigt.

{
  "created": true
}

Do Standard-Controller konfigurieren (Administratorknoten)

In diesem Lernprogramm werden die Befehle der Red Hat JBoss EAP-Verwaltungs-CLI zum Konfigurieren des Do Standard Controllers verwendet. Weitere Informationen finden Sie im Management CLI Guide.

Die folgenden Schritte richten die Do Standard Controllerkonfiguration auf adminVM. Verwenden Sie SSH, um eine Verbindung mit dem adminVMazureuser Benutzer herzustellen. Erinnern Sie sich daran, dass die öffentliche IP-Adresse zuvor adminVM in der ADMIN_VM_PUBLIC_IP Umgebungsvariable erfasst wurde.

ssh azureuser@$ADMIN_VM_PUBLIC_IP

Verwenden Sie zunächst die folgenden Befehle, um das HA-Profil und JGroups mithilfe des AZURE_PING Protokolls zu konfigurieren:

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


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

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

Die letzte Sanza der Ausgabe sollte ähnlich wie im folgenden Beispiel aussehen. Andernfalls beheben Sie das Problem, bevor Sie fortfahren.

[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

Verwenden Sie dann die folgenden Befehle, um den JBoss-Server zu konfigurieren und den EAP-Dienst einzurichten:

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

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

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'

Verwenden Sie schließlich die folgenden Befehle, um den EAP-Dienst zu starten:

# 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

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

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

Geben Sie q ein, um den Pager zu beenden. Beenden Sie die SSH-Verbindung, indem Sie "Exit" eingeben.

Nachdem Sie den Red Hat JBoss EAP-Dienst gestartet haben, können Sie über http://$ADMIN_VM_PUBLIC_IP:9990 Ihren Webbrowser auf die Verwaltungskonsole zugreifen. Melden Sie sich mit dem konfigurierten Benutzernamen jbossadmin und Kennwort Secret123456an.

Screenshot der Red Hat JBoss Enterprise Application Platform do Standard Controller Verwaltungskonsole.

Wählen Sie die Registerkarte "Laufzeit" aus. Wählen Sie im Navigationsbereich die Topologie aus. Sie sollten sehen, dass Ihr Cluster vorerst nur einen Do-Controller enthält Standard Controller:

Screenshot der Red Hat JBoss Enterprise Application Platform, die die Registerkarte

Konfigurieren von Hostcontrollern (Workerknoten)

Verwenden Sie SSH, um eine Verbindung mit dem azureuser Benutzer herzustellenmspVM1. Rufen Sie die öffentliche IP-Adresse der VM mit dem folgenden Befehl ab:

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

ssh azureuser@$MSPVM_PUBLIC_IP

Denken Sie daran, dass das Kennwort wie zuvor identisch ist, da mspVM1 es sich einfach um einen Klon von adminVM.

Verwenden Sie die folgenden Befehle, um den Hostcontroller mspVM1einzurichten:

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

export JBOSS_EAP_USER=jbossadmin
export JBOSS_EAP_PASSWORD=Secret123456

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

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

Sie werden nach dem Kennwort für die Verbindung gefragt. In diesem Beispiel ist das Kennwort "Secret123456".

Verwenden Sie die folgenden Befehle, um Änderungen des Hostcontrollers auf folgendes anzuwenden 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})"

Die letzte Sanza der Ausgabe sollte ähnlich wie im folgenden Beispiel aussehen. Andernfalls beheben Sie das Problem, bevor Sie fortfahren.

[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

Verwenden Sie dann die folgenden Befehle, um den JBoss-Server zu konfigurieren und den EAP-Dienst einzurichten:

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

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

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

Geben Sie q ein, um den Pager zu beenden. Beenden Sie die SSH-Verbindung, indem Sie "Exit" eingeben.

Verwenden Sie SSH, um eine Verbindung mit dem azureuser Benutzer herzustellenmspVM2. Rufen Sie die öffentliche IP-Adresse der VM mit dem folgenden Befehl ab:

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

Wiederholen Sie die vorherigen Schritte, mspVM2und beenden Sie dann die SSH-Verbindung, indem Sie "Exit" eingeben.

Nachdem zwei Hostcontroller verbunden adminVMsind, sollten Sie die Clustertopologie sehen können, wie im folgenden Screenshot gezeigt:

Screenshot der Red Hat JBoss Enterprise Application Platform, die die Registerkarte

Verfügbarmachen von Red Hat JBoss EAP-Cluster mit Azure-App lizenzierungsgateway

Nachdem Sie nun den Red Hat JBoss EAP-Cluster auf virtuellen Azure-Computern erstellt haben, führt Sie dieser Abschnitt durch den Prozess der Bereitstellung von Red Hat JBoss EAP für das Internet mit Azure-App lication Gateway.

Erstellen Sie die Azure Application Gateway-Instanz.

Um Red Hat JBoss EAP für das Internet verfügbar zu machen, ist eine öffentliche IP-Adresse erforderlich. Erstellen Sie die öffentliche IP-Adresse, und ordnen Sie ihr ein Azure-App Lizenzierungsgateway zu. Verwenden Sie az network public-ip create , um sie zu erstellen, wie im folgenden Beispiel gezeigt:

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

Fügen Sie als Nächstes die Back-End-Server zum Back-End-Pool des Anwendungsgateways hinzu. Fragen Sie mithilfe der folgenden Befehle nach Back-End-IP-Adressen ab. Sie haben nur die Hostcontroller (Arbeitsknoten) als Back-End-Server konfiguriert.

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

Erstellen Sie als Nächstes ein Azure-App lizenzierungsgateway. Im folgenden Beispiel wird ein Anwendungsgateway mit Hostcontrollern im Standard-Back-End-Pool erstellt:

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

Hinweis

In diesem Beispiel wird einfacher Zugriff auf die EAP-Server von Red Hat JBoss mit HTTP eingerichtet. Wenn Sie einen sicheren Zugriff wünschen, konfigurieren Sie die TLS/SSL-Beendigung, indem Sie die Anweisungen unter "End to end TLS with Application Gateway" befolgen.

In diesem Beispiel werden die Hostcontroller an Port 8080 verfügbar gemacht. Sie stellen eine Beispielanwendung mit einer Datenbankverbindung mit dem Cluster in späteren Schritten bereit.

Verbinden Azure-Datenbank für PostgreSQL

In diesem Abschnitt erfahren Sie, wie Sie eine PostgreSQL-Instanz in Azure erstellen und eine Verbindung mit PostgreSQL auf Ihrem Red Hat JBoss EAP-Cluster konfigurieren.

Erstellen einer Azure Database for PostgreSQL-Instanz

Führen Sie die folgenden Schritte aus, um die Datenbankinstanz zu erstellen:

  1. Verwenden Sie az postgres server create to provision a PostgreSQL instance on Azure, as shown in the following example:

    export DATA_BASE_USER=jboss
    export DATA_BASE_PASSWORD=Secret123456
    
    DB_SERVER_NAME="jbossdb$(date +%s)"
    echo "DB_SERVER_NAME=${DB_SERVER_NAME}"
    az postgres server create \
        --resource-group abc1110rg \
        --name ${DB_SERVER_NAME}  \
        --location eastus \
        --admin-user ${DATA_BASE_USER} \
        --ssl-enforcement Enabled \
        --admin-password ${DATA_BASE_PASSWORD} \
        --sku-name GP_Gen5_2
    
  2. Verwenden Sie die folgenden Befehle, um den Zugriff von Azure-Diensten zuzulassen:

    # Save aside the following names for later use
    export fullyQualifiedDomainName=$(az postgres server show \
        --resource-group abc1110rg \
        --name ${DB_SERVER_NAME} \
        --query "fullyQualifiedDomainName" \
        --output tsv)
    export name=$(az postgres server show \
        --resource-group abc1110rg \
        --name ${DB_SERVER_NAME} \
        --query "name" \
        --output tsv)
    
    az postgres server firewall-rule create \
        --resource-group abc1110rg \
        --server ${DB_SERVER_NAME} \
        --name "AllowAllAzureIps" \
        --start-ip-address 0.0.0.0 \
        --end-ip-address 0.0.0.0
    
  3. Verwenden Sie den folgenden Befehl, um die Datenbank zu erstellen:

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

Treiber installieren

Führen Sie die folgenden Schritte aus, um den INSTALLATIONStreiber mit der JBoss Management CLI zu installieren. Weitere Informationen zu TREIBERN auf Red Hat JBoss EAP finden Sie unter Installing a DRIVER driver as a JAR Deployment.

  1. SSH mit adminVM dem folgenden Befehl zu verwenden. Sie können diesen Schritt überspringen, wenn Sie bereits eine Verbindung geöffnet haben.

    ssh azureuser@$ADMIN_VM_PUBLIC_IP
    
  2. Verwenden Sie die folgenden Befehle, um DEN TREIBER FÜR DEN DOWNLOAD VON DATEIEN herunterzuladen. Hier verwenden Sie postgresql-42.5.2.jar. Weitere Informationen zu DOWNLOADspeicherorten für TREIBERN finden Sie unter DEN DOWNLOAD-Speicherorten des TREIBERs VON RED Hat.

    jdbcDriverName=postgresql-42.5.2.jar
    sudo curl --retry 5 -Lo /tmp/${jdbcDriverName} https://jdbc.postgresql.org/download/${jdbcDriverName}
    
  3. Stellen Sie MITHILFE des folgenden JBoss CLI-Befehls DEN FOLGENDEN TREIBER BEREIT:

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

    Das Serverprotokoll befindet sich auf mspVM1 und mspVM2 unter /var/opt/rh/eap7/lib/wildfly/domain/servers/mspvm1-server0/log/server.log. Wenn die Bereitstellung fehlschlägt, überprüfen Sie diese Protokolldatei, und beheben Sie das Problem, bevor Sie fortfahren.

Konfigurieren der Datenbankverbindung für den Red Hat JBoss EAP-Cluster

Sie haben den Datenbankserver gestartet, die erforderliche Ressourcen-ID erhalten und den VORGANGstreiber installiert. Im nächsten Schritt erfahren Sie, wie Sie die JBoss CLI verwenden, um eine Datenquellenverbindung mit der zuvor erstellten PostgreSQL-Instanz zu konfigurieren.

  1. Öffnen Sie ein Terminal und SSH adminVM mithilfe des folgenden Befehls:

    ssh azureuser@$ADMIN_VM_PUBLIC_IP
    
  2. Erstellen Sie die Datenquelle mithilfe der folgenden Befehle:

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

Nach diesen Schritten haben Sie eine Datenquelle mit dem Namen erfolgreich java:jboss/datasources/JavaEECafeDBkonfiguriert.

Bereitstellen einer Java EE Cafe-Beispielanwendung

Führen Sie die folgenden Schritte aus, um java EE Cafe-Beispielanwendung für den Red Hat JBoss EAP-Cluster bereitzustellen:

  1. Führen Sie die folgenden Schritte aus, um Java EE Cafe zu erstellen. Bei diesen Schritten wird davon ausgegangen, dass Sie eine lokale Umgebung mit Git und Maven installiert haben:

    1. Verwenden Sie den folgenden Befehl, um den Quellcode von GitHub zu klonen:

      git clone https://github.com/Azure/rhel-jboss-templates.git
      
    2. Verwenden Sie den folgenden Befehl, um den Quellcode zu erstellen:

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

      Mit diesem Befehl wird die Datei "eap-coffee-app/target/javaee-café.war" erstellt. Sie laden diese Datei im nächsten Schritt hoch.

  2. Öffnen Sie einen Webbrowser, und wechseln Sie zum Verwaltungskonsole unter http://<adminVM-public-IP>:9990, und melden Sie sich dann mit Benutzername jbossadmin und Kennwort Secret123456an.

  3. Führen Sie die folgenden Schritte aus, um das Javaee-café.war in das Inhalts-Repository hochzuladen:

    1. Wählen Sie im Navigationsbereich auf der Registerkarte "Bereitstellungen" des EAP-Verwaltungskonsole "Red Hat JBoss EAP" die Option "Inhalts-Repository" aus.

    2. Wählen Sie die Schaltfläche "Hinzufügen" und dann "Inhalt hochladen" aus.

      Screenshot der Registerkarte

    3. Verwenden Sie die Browserdateiauswahl, um die Datei javaee-café.war auszuwählen.

    4. Wählen Sie Weiter aus.

    5. Übernehmen Sie die Standardwerte auf dem nächsten Bildschirm, und wählen Sie dann "Fertig stellen" aus.

    6. Wählen Sie " Inhalt anzeigen" aus.

  4. Führen Sie die folgenden Schritte aus, um eine Anwendung bereitzustellen für main-server-group:

    1. Wählen Sie im Inhalts-Repository javaee-café.war aus.

    2. Wählen Sie im Dropdownmenü " Bereitstellen" aus.

    3. Wählen Sie main-server-group als Servergruppe für die Bereitstellung von javaee-café.war aus.

    4. Wählen Sie Bereitstellen aus, um die Bereitstellung zu starten. Es sollte eine Benachrichtigung wie der folgende Screenshot angezeigt werden:

      Screenshot des Hinweises zur erfolgreichen Bereitstellung.

Testen der EAP-Clusterkonfiguration von Red Hat JBoss

Sie haben nun die Konfiguration des Red Hat JBoss EAP-Clusters abgeschlossen und die Java EE-Anwendung darauf bereitgestellt. Führen Sie die folgenden Schritte aus, um auf die Anwendung zuzugreifen, um alle Einstellungen zu überprüfen:

  1. Verwenden Sie den folgenden Befehl, um die öffentliche IP-Adresse des Azure-App lizenzierungsgateways abzurufen:

    az network public-ip show \
        --resource-group abc1110rg \
        --name myAGPublicIPAddress \
        --query '[ipAddress]' \
        --output tsv
    
  2. Öffnen Sie einen Webbrowser.

  3. Navigieren Sie mit der URL http://<gateway-public-ip-address>/javaee-cafe/zur Anwendung. Vergessen Sie nicht den nachgestellten Schrägstrich.

  4. Versuchen Sie, Kaffee hinzuzufügen und zu entfernen.

Bereinigen von Ressourcen

Zum Vermeiden von Azure-Gebühren sollten Sie nicht benötigte Ressourcen bereinigen. Wenn Sie den Red Hat JBoss EAP-Cluster nicht mehr auf einer Azure-VM bereitstellen müssen, heben Sie die Registrierung der Red Hat JBoss EAP-Server auf, und entfernen Sie die Azure-Ressourcen.

Verwenden Sie die folgenden Befehle, um die Registrierung der Red Hat JBoss EAP-Server und VMs von der Red Hat-Abonnementverwaltung aufzuheben:

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

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

Verwenden Sie den folgenden Befehl, um die Ressourcengruppe abc1110rgzu löschen:

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

Nächste Schritte

Erkunden Sie weiterhin Optionen zum Ausführen von Red Hat JBoss EAP auf Azure.