教學課程:手動在 Azure 虛擬機器 上安裝 JBoss EAP
本教學課程說明在 Red Hat Enterprise Linux 上安裝 Red Hat JBoss Enterprise Application Platform (EAP) 並在 Azure 虛擬機器 (VM) 上設定叢集的步驟。
在本教學課程中,您將瞭解如何執行下列工作:
- 建立自定義虛擬網路,並在網路中建立 VM。
- 手動使用命令行在 VM 上安裝所需的 JDK 和 Red Hat JBoss EAP。
- 使用命令行介面 (CLI) 在網域模式中設定 Red Hat JBoss EAP 叢集。
- 在叢集中設定 PostgreSQL 數據源連線。
- 在叢集中部署和執行範例 Java EE 應用程式。
- 透過 Azure 應用程式閘道 將應用程式公開至公用因特網。
- 驗證成功的設定。
如果您偏好代表 GNU/Linux VM 執行上述所有步驟的完全自動化解決方案,請直接從 Azure 入口網站 參閱快速入門:在 Azure 虛擬機器 (VM) 上部署 JBoss EAP 叢集。
若您有興趣與開發 Azure 上 JBoss EAP 解決方案的工程團隊緊密合作以進行移轉,請填寫這份簡短的 JBoss EAP 移轉問卷,並附上您的連絡資訊。 由專案經理、結構設計師和工程師組成的小組會立即連絡您,以展開緊密合作。
注意
本文包含「從屬」一詞的參考,Microsoft 已不再使用該字詞。 從軟體中移除該字詞時,我們也會將其從本文中移除。
必要條件
Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
安裝 Azure CLI 2.51.0 版 或更高版本以執行 Azure CLI 命令。
- 出現提示時,請在第一次使用時安裝 Azure CLI 擴充功能。 如需延伸模組詳細資訊,請參閱使用 Azure CLI 延伸模組。
- 執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
請確定您擁有必要的 Red Hat 授權。 您必須具備 Red Hat 訂用帳戶管理 (RHSM) Red Hat JBoss EAP 的 Red Hat 帳戶。 此權利可讓完全自動化的解決方案(在快速入門:在 Azure 虛擬機器 (VM)上部署 JBoss EAP 叢集),安裝經 Red Hat 測試和認證的 JBoss EAP 版本。
注意
如果您沒有 EAP 權利,您可以透過個人版 Red Hat 開發人員訂用帳戶註冊免費的開發人員訂用帳戶。 將帳戶詳細數據儲存在一邊,在下一節中做為 RHSM 用戶名稱和 RHSM 密碼 。
如果您已註冊,或在完成註冊之後,您可以使用下列步驟找出必要的認證(集區標識符)。 這些 集區標識碼 也會作為後續步驟中的 RHSM 集區標識碼與 EAP 權利 。
登入您的 Red Hat 帳戶。
第一次登入時,系統會提示您完成配置檔。 根據您的使用量,選取 [個人 ] 或 [公司 帳戶 類型],如下列螢幕快照所示:
開啟 個人版的 Red Hat 開發人員訂用帳戶。 此連結會帶您前往帳戶中適用於適當 SKU 的所有訂用帳戶。
在 [所有已購買的訂閱] 數據表底下的控件數據列中,選取 [作用中]。
選取 [結束日期] 的可排序數據行標頭,直到未來最遠的值顯示為第一個數據列為止。
選取第一個數據列。 然後,從集區標識符複製並儲存下列主要集區的值。
Java 開發套件 (JDK) 第 11 版。 在本指南中,我們建議 使用 Red Hat Build of OpenJDK。 請確定您已在命令執行所在的殼層中正確設定
JAVA_HOME
環境變數。Git;用來
git --version
測試是否git
正常運作。 本教學課程已經過 2.25.1 版的測試。Maven;用來
mvn -version
測試是否mvn
正常運作。 本教學課程已經過 3.6.3 版的測試。
準備環境
在本節中,您會設定安裝 JDK、Red Hat JBoss EAP 和 PostgreSQL Java Database Connectivity (JDBC) 驅動程式的基礎結構。
假設
本教學課程會在網域模式中設定 Red Hat JBoss EAP 叢集,並在總共三部 VM 上設定兩部受管理伺服器。 若要設定叢集,您必須建立下列三個 Azure VM:
- 系統管理 VM (VM 名稱
adminVM
) 會以域控制器身分執行。 - 兩個受控 VM (VM 名稱和
mspVM1
mspVM2
) 會以主機控制器身分執行。
登入 Azure
如果您尚未登入,請使用 az login 命令登入您的 Azure 訂用帳戶,並遵循螢幕上的指示。
az login
注意
如果您有多個與 Azure 認證相關聯的 Azure 租使用者,您必須指定您要登入的租使用者。 您可以使用 選項來執行此動作 --tenant
。 例如: az login --tenant contoso.onmicrosoft.com
。
建立資源群組
使用 az group create 來建立資源群組。 資源群組名稱在訂用帳戶全域中必須是唯一的。 基於這個理由,請考慮將一些唯一標識符前面加上您建立的任何名稱,該名稱必須是唯一的。 實用的技巧是使用您的首字母,後面接著使用 mmdd
格式的今天日期。 此範例會在位置中westus
建立名為 $RESOURCE_GROUP_NAME
的資源群組:
export SUBSCRIPTION=$(az account show --query id --output tsv)
export SUFFIX=$(date +%s)
export RESOURCE_GROUP_NAME=rg-$SUFFIX
echo "Resource group name: $RESOURCE_GROUP_NAME"
az group create \
--name $RESOURCE_GROUP_NAME \
--location westus
建立虛擬網路
組成 Red Hat JBoss EAP 叢集的資源必須使用虛擬網路彼此通訊,以及公用因特網。 如需規劃虛擬網路的完整指南,請參閱 Azure 指南規劃虛擬網路的 雲端採用架構。 如需詳細資訊,請參閱 Azure 虛擬網絡 常見問題。
本節中的範例會建立具有位址空間 192.168.0.0/16
的虛擬網路,並建立用於 VM 的子網。
首先,使用 az network vnet create 建立虛擬網路。 下列範例會建立名為 myVNet
的網路:
az network vnet create \
--resource-group $RESOURCE_GROUP_NAME \
--name myVNet \
--address-prefixes 192.168.0.0/24
使用 az network vnet subnet create 建立 Red Hat JBoss EAP 叢集的子網。 下列範例會建立名為 mySubnet
的子網:
az network vnet subnet create \
--resource-group $RESOURCE_GROUP_NAME \
--name mySubnet \
--vnet-name myVNet \
--address-prefixes 192.168.0.0/25
使用 az network vnet subnet create 建立 應用程式閘道 的子網。 下列範例會建立名為 jbossVMGatewaySubnet
的子網:
az network vnet subnet create \
--resource-group $RESOURCE_GROUP_NAME \
--name jbossVMGatewaySubnet \
--vnet-name myVNet \
--address-prefixes 192.168.0.128/25
建立網路安全組,並將子網指派給它
建立具有公用IP的VM之前,請先建立網路安全組 (NSG),以保護先前建立的虛擬網路和子網。
使用 az network nsg create 建立網路安全組。 下列範例會建立名為 mynsg
的網路安全性群組:
az network nsg create \
--resource-group $RESOURCE_GROUP_NAME \
--name mynsg
使用 az network nsg rule create 建立網路安全組規則。 下列範例會建立名為 ALLOW_APPGW
和 ALLOW_HTTP_ACCESS
的網路安全組規則。 這些規則可讓應用程式閘道在 Red Hat JBoss EAP 所使用的 HTTP 連接埠上接受輸入流量:
az network nsg rule create \
--resource-group $RESOURCE_GROUP_NAME \
--nsg-name mynsg \
--name ALLOW_APPGW \
--protocol Tcp \
--destination-port-ranges 65200-65535 \
--source-address-prefix GatewayManager \
--destination-address-prefix '*' \
--access Allow \
--priority 500 \
--direction Inbound
az network nsg rule create \
--resource-group $RESOURCE_GROUP_NAME \
--nsg-name mynsg \
--name ALLOW_HTTP_ACCESS \
--protocol Tcp \
--destination-port-ranges 22 80 443 9990 8080 \
--source-address-prefix Internet \
--destination-address-prefix '*' \
--access Allow \
--priority 510 \
--direction Inbound
使用 az network vnet subnet update 將先前建立的子網關聯至此網路安全組,如下列範例所示:
az network vnet subnet update \
--resource-group $RESOURCE_GROUP_NAME \
--vnet-name myVNet \
--name mySubnet \
--network-security-group mynsg
az network vnet subnet update \
--resource-group $RESOURCE_GROUP_NAME \
--vnet-name myVNet \
--name jbossVMGatewaySubnet \
--network-security-group mynsg
為系統管理員建立 Red Hat Enterprise Linux 計算機
產生 SSH 金鑰
使用下列命令來產生的 adminVM
SSH 金鑰:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/jbosseapvm
ssh-add ~/.ssh/jbosseapvm
建立系統管理 VM
您用來建立 VM 的 Marketplace 映像為 RedHat:rhel-raw:86-gen2:latest
。 如需其他映像,請參閱 Azure 中提供的 Red Hat Enterprise Linux (RHEL) 映像。
注意
您可以使用 az vm image list 命令查詢 Red Hat 所提供的所有可用 Red Hat Enterprise Linux 映像,例如:az vm image list --offer RHEL --publisher RedHat --output table --all
。 如需詳細資訊,請參閱 Red Hat Enterprise Linux 映像概觀。
如果您使用不同的映像,您可能需要安裝額外的連結庫,才能啟用本指南中使用的基礎結構。
建立基本 VM、在上面安裝所有必要的工具、建立快照集,然後根據快照集建立複本。
使用 az vm create 建立 VM。 您會在此 VM 上執行系統管理伺服器。
下列範例會使用 TLS/SSL 驗證來建立 Azure 受控識別和 Red Hat Enterprise Linux VM。
az identity create \
--name "passwordless-managed-identity" \
--resource-group $RESOURCE_GROUP_NAME \
--location westus
az vm create \
--resource-group $RESOURCE_GROUP_NAME \
--name adminVM \
--image RedHat:rhel-raw:86-gen2:latest \
--assign-identity "/subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/passwordless-managed-identity" \
--size Standard_DS1_v2 \
--admin-username azureuser \
--ssh-key-values ~/.ssh/jbosseapvm.pub \
--public-ip-sku Standard \
--nsg mynsg \
--vnet-name myVnet \
--subnet mySubnet
安裝 Red Hat JBoss EAP
使用下列步驟來安裝:
使用下列指令取得 的
adminVM
公用IP:export ADMIN_VM_PUBLIC_IP=$(az vm show \ --resource-group $RESOURCE_GROUP_NAME \ --name adminVM \ --show-details \ --query publicIps | tr -d '"')
使用下列命令開啟終端機與 SSH 至
adminVM
:ssh -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
使用下列命令設定埠的防火牆:
sudo firewall-cmd --zone=public --add-port={9999/tcp,8443/tcp,8009/tcp,8080/tcp,9990/tcp,9993/tcp,45700/tcp,7600/tcp} --permanent sudo firewall-cmd --reload sudo iptables-save
您應該會在前兩個命令之後看到這個字
success
。 您應該會在第三個命令之後看到類似下列範例的輸出:# Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023 *filter :INPUT ACCEPT [20:3546] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [24:5446] COMMIT # Completed on Wed Mar 29 22:39:23 2023 # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023 *security :INPUT ACCEPT [19:3506] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [5:492] -A OUTPUT -d 168.63.129.16/32 -p tcp -m tcp --dport 53 -j ACCEPT -A OUTPUT -d 168.63.129.16/32 -p tcp -m tcp --dport 53 -j ACCEPT -A OUTPUT -d 168.63.129.16/32 -p tcp -m owner --uid-owner 0 -j ACCEPT -A OUTPUT -d 168.63.129.16/32 -p tcp -m conntrack --ctstate INVALID,NEW -j DROP COMMIT # Completed on Wed Mar 29 22:39:23 2023 # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023 *raw :PREROUTING ACCEPT [20:3546] :OUTPUT ACCEPT [24:5446] COMMIT # Completed on Wed Mar 29 22:39:23 2023 # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023 *mangle :PREROUTING ACCEPT [20:3546] :INPUT ACCEPT [20:3546] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [24:5446] :POSTROUTING ACCEPT [24:5446] COMMIT # Completed on Wed Mar 29 22:39:23 2023 # Generated by iptables-save v1.8.4 on Wed Mar 29 22:39:23 2023 *nat :PREROUTING ACCEPT [1:40] :INPUT ACCEPT [0:0] :POSTROUTING ACCEPT [4:240] :OUTPUT ACCEPT [4:240] COMMIT # Completed on Wed Mar 29 22:39:23 2023
注意
和 RHSM_USER
RHSM_PASSWORD
值必須安裝 Red Hat JBoss EAP。 建議您使用具有有限許可權的服務帳戶來存取 Red Hat 客戶入口網站。
使用下列命令,將系統管理員主機註冊到您的 Red Hat 訂用帳戶管理 (RHSM) 帳戶:
export RHSM_USER=<your-rhsm-username> export RHSM_PASSWORD='<your-rhsm-password>' export EAP_POOL=<your-rhsm-pool-ID> sudo subscription-manager register --username ${RHSM_USER} --password ${RHSM_PASSWORD} --force
您應該會看到類似下列範例的結果:
Registering to: subscription.rhsm.redhat.com:443/subscription The system has been registered with ID: redacted The registered system name is: adminVM
使用下列命令將系統管理員主機附加至 Red Hat JBoss EAP 集區:
sudo subscription-manager attach --pool=${EAP_POOL}
注意
如果您使用簡單內容存取模式,則會忽略此命令。
使用下列命令來安裝 Red Hat JBoss EAP :
sudo subscription-manager repos --enable=jb-eap-7.4-for-rhel-8-x86_64-rpms sudo yum update -y --disablerepo='*' --enablerepo='*microsoft*' sudo yum groupinstall -y jboss-eap7
針對第二和第三個命令,您應該會看到許多輸出行,結尾為 Complete!
使用下列命令來設定權限與網路組態:
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config echo 'AllowTcpForwarding no' | sudo tee -a /etc/ssh/sshd_config sudo systemctl restart sshd
使用下列命令來設定環境變數:
echo 'export EAP_RPM_CONF_DOMAIN="/etc/opt/rh/eap7/wildfly/eap7-domain.conf"' >> ~/.bash_profile echo 'export EAP_HOME="/opt/rh/eap7/root/usr/share"' >> ~/.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
輸入 exit 以結束 SSH 連線。
建立受管理伺服器的機器
您已在上 adminVM
安裝 Red Hat JBoss EAP,其會以域控制器伺服器的形式執行。 您仍然需要準備機器以執行兩部主機控制器伺服器。 接下來,您會建立的 adminVM
快照集,併為兩個受控分機 mspVM1
和 mspVM2
準備機器。
本節介紹使用 快照 adminVM
集準備機器的方法。 返回已登入 Azure CLI 的終端機,然後使用下列步驟:
使用下列命令來停止
adminVM
:az vm stop --resource-group $RESOURCE_GROUP_NAME --name adminVM
使用 az snapshot create 來擷取 OS 磁碟的
adminVM
快照集,如下列範例所示:export ADMIN_OS_DISK_ID=$(az vm show \ --resource-group $RESOURCE_GROUP_NAME \ --name adminVM \ --query storageProfile.osDisk.managedDisk.id \ --output tsv) az snapshot create \ --resource-group $RESOURCE_GROUP_NAME \ --name myAdminOSDiskSnapshot \ --source ${ADMIN_OS_DISK_ID}
使用下列指令啟動
adminVM
:az vm start --resource-group $RESOURCE_GROUP_NAME --name adminVM
使用下列步驟來建立
mspVM1
:首先,使用 az disk create 建立 的
mspVM1
受控磁碟:#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}
接下來,使用下列命令來建立 VM
mspVM1
,並連結 OS 磁碟mspVM1_OsDisk_1
:#Get the resource Id of the managed disk export MSPVM1_DISK_ID=$(az disk show \ --name mspVM1_OsDisk_1 \ --resource-group $RESOURCE_GROUP_NAME \ --query '[id]' \ --output tsv) #Create VM by attaching existing managed disks as OS az vm create \ --resource-group $RESOURCE_GROUP_NAME \ --name mspVM1 \ --assign-identity "/subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/passwordless-managed-identity" \ --attach-os-disk ${MSPVM1_DISK_ID} \ --os-type linux \ --public-ip-sku Standard \ --nsg mynsg \ --vnet-name myVnet \ --subnet mySubnet
您已使用已安裝 Red Hat JBoss EAP 所建立
mspVM1
。 由於 VM 是從 OS 磁碟的adminVM
快照集建立,因此這兩個 VM 具有相同的主機名。 使用 az vm run-command invoke 將主機名變更為 值mspVM1
:az vm run-command invoke \ --resource-group $RESOURCE_GROUP_NAME \ --name mspVM1 \ --command-id RunShellScript \ --scripts "sudo hostnamectl set-hostname mspVM1"
當命令順利完成時,您會看到類似下列範例的輸出:
{ "value": [ { "code": "ProvisioningState/succeeded", "displayStatus": "Provisioning succeeded", "level": "Info", "message": "Enable succeeded: \n[stdout]\n\n[stderr]\n", "time": null } ] }
使用相同的指令來建立
mspVM2
:#Create a new Managed Disks for mspVM2 az disk create \ --resource-group $RESOURCE_GROUP_NAME \ --name mspVM2_OsDisk_1 \ --source ${SNAPSHOT_ID} #Get the resource Id of the managed disk export MSPVM2_DISK_ID=$(az disk show \ --name mspVM2_OsDisk_1 \ --resource-group $RESOURCE_GROUP_NAME \ --query '[id]' \ --output tsv) #Create VM by attaching existing managed disks as OS az vm create \ --resource-group $RESOURCE_GROUP_NAME \ --name mspVM2 \ --assign-identity "/subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/passwordless-managed-identity" \ --attach-os-disk ${MSPVM2_DISK_ID} \ --os-type linux \ --public-ip-sku Standard \ --nsg mynsg \ --vnet-name myVnet \ --subnet mySubnet #Set hostname az vm run-command invoke \ --resource-group $RESOURCE_GROUP_NAME \ --name mspVM2 \ --command-id RunShellScript \ --scripts "sudo hostnamectl set-hostname mspVM2"
使用下列命令來取得並顯示您在後續章節中使用的私人 IP 位址:
export ADMINVM_NIC_ID=$(az vm show \
--resource-group ${RESOURCE_GROUP_NAME} \
--name adminVM \
--query networkProfile.networkInterfaces'[0]'.id \
--output tsv)
export ADMINVM_IP=$(az network nic show \
--ids ${ADMINVM_NIC_ID} \
--query ipConfigurations'[0]'.privateIPAddress \
--output tsv)
export MSPVM1_NIC_ID=$(az vm show \
--resource-group ${RESOURCE_GROUP_NAME} \
--name mspVM1 \
--query networkProfile.networkInterfaces'[0]'.id \
--output tsv)
export MSPVM1_IP=$(az network nic show \
--ids ${MSPVM1_NIC_ID} \
--query ipConfigurations'[0]'.privateIPAddress \
--output tsv)
export MSPVM2_NIC_ID=$(az vm show \
--resource-group ${RESOURCE_GROUP_NAME} \
--name mspVM2 \
--query networkProfile.networkInterfaces'[0]'.id \
--output tsv)
export MSPVM2_IP=$(az network nic show \
--ids ${MSPVM2_NIC_ID} \
--query ipConfigurations'[0]'.privateIPAddress \
--output tsv)
echo "Private IP of adminVM: ${ADMINVM_IP}"
echo "Private IP of mspVM1: ${MSPVM1_IP}"
echo "Private IP of mspVM2: ${MSPVM2_IP}"
現在,這三部機器都已就緒。 接下來,您會在受控網域模式中設定 Red Hat JBoss EAP 叢集。
設定受控網域和叢集
設定已啟用會話復寫的叢集。 如需詳細資訊,請參閱 會話複寫。
若要啟用會話複寫,請使用叢集的 Red Hat JBoss EAP 高可用性。 Microsoft Azure 不支援以多播為基礎的 JGroups 探索通訊協定。 雖然您可以使用其他 JGroups 探索通訊協定(例如靜態組態(TCPPING
)、共用資料庫 (JDBC_PING
)、共用檔系統型 Ping (FILE_PING
), 或 TCPGOSSIP
),但強烈建議您使用針對 Azure 開發的共用檔案探索通訊協定: AZURE_PING
。 如需詳細資訊,請參閱 在 Microsoft Azure 中使用 JBoss EAP 高可用性。
建立適用於AZURE_PING的 Azure 記憶體帳戶和 Blob 容器
使用下列命令來建立記憶體帳戶和 Blob 容器:
# Define your storage account name
export STORAGE_ACCOUNT_NAME=azurepingstgabc1111rg
# Define your Blob container name
export CONTAINER_NAME=azurepingcontainerabc1111rg
# Create storage account
az storage account create \
--resource-group $RESOURCE_GROUP_NAME \
--name ${STORAGE_ACCOUNT_NAME} \
--location westus \
--sku Standard_LRS \
--kind StorageV2 \
--access-tier Hot
然後,使用下列命令擷取記憶體帳戶密鑰以供稍後使用。 如果您看到錯誤,請稍候幾分鐘,然後再試一次。 尚未完成建立記憶體帳戶的上一個命令。
export STORAGE_ACCESS_KEY=$(az storage account keys list \
--resource-group $RESOURCE_GROUP_NAME \
--account-name ${STORAGE_ACCOUNT_NAME} \
--query "[0].value" \
--output tsv)
# Create blob container
az storage container create \
--name ${CONTAINER_NAME} \
--account-name ${STORAGE_ACCOUNT_NAME} \
--account-key ${STORAGE_ACCESS_KEY}
您應該會看見下列輸出:
{
"created": true
}
設定網域控制器 (管理員節點)
本教學課程使用 Red Hat JBoss EAP 管理 CLI 命令來設定域控制器。 如需詳細資訊,請參閱 管理 CLI 指南。
下列步驟在 上 adminVM
設定域控制器組態。 使用 SSH 以使用者身分azureuser
連線到 adminVM
。 回想一下,先前已將的 adminVM
公用IP位址擷取到 ADMIN_VM_PUBLIC_IP
環境變數中。
ssh -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
首先,使用下列命令來使用 AZURE_PING
通訊協議來設定HA設定檔和 JGroups:
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
輸出的最後一節看起來應該類似下列範例。 如果沒有,請先進行疑難解答並解決問題,再繼續進行。
[domain@embedded /] /host=master/interface=public:add(inet-address=192.168.0.4 )
{
"outcome" => "success",
"result" => undefined,
"server-groups" => undefined,
"response-headers" => {"process-state" => "reload-required"}
}
02:05:55,019 INFO [org.jboss.as] (MSC service thread 1-1) WFLYSRV0050: JBoss EAP 7.4.10.GA (WildFly Core 15.0.25.Final-redhat-00001) stopped in 28ms
然後,使用下列命令來設定 JBoss 伺服器並設定 EAP 服務:
注意
JBOSS_EAP_USER
和 JBOSS_EAP_PASSWORD
值必須設定 JBoss EAP 管理使用者。
# Configure the JBoss server and setup EAP service
echo 'WILDFLY_HOST_CONFIG=host-master.xml' | sudo tee -a $EAP_RPM_CONF_DOMAIN
# Configure JBoss EAP management user
export JBOSS_EAP_USER=jbossadmin
export JBOSS_EAP_PASSWORD=Secret123456
sudo $EAP_HOME/wildfly/bin/add-user.sh -u $JBOSS_EAP_USER -p $JBOSS_EAP_PASSWORD -g 'guest,mgmtgroup'
輸出應類似下列範例:
Added user 'jbossadmin' to file '/etc/opt/rh/eap7/wildfly/standalone/mgmt-users.properties'
Added user 'jbossadmin' to file '/etc/opt/rh/eap7/wildfly/domain/mgmt-users.properties'
Added user 'jbossadmin' with groups guest,mgmtgroup to file '/etc/opt/rh/eap7/wildfly/standalone/mgmt-groups.properties'
Added user 'jbossadmin' with groups guest,mgmtgroup to file '/etc/opt/rh/eap7/wildfly/domain/mgmt-groups.properties'
最後,使用下列命令啟動 EAP 服務:
# Start the JBoss server and setup EAP service
sudo systemctl enable eap7-domain.service
# Edit eap7-domain.services
sudo sed -i 's/After=syslog.target network.target/After=syslog.target network.target NetworkManager-wait-online.service/' /usr/lib/systemd/system/eap7-domain.service
sudo sed -i 's/Before=httpd.service/Wants=NetworkManager-wait-online.service \nBefore=httpd.service/' /usr/lib/systemd/system/eap7-domain.service
# Reload and restart EAP service
sudo systemctl daemon-reload
sudo systemctl restart eap7-domain.service
# Check the status of EAP service
systemctl status eap7-domain.service
輸出應類似下列範例:
● eap7-domain.service - JBoss EAP (domain mode)
Loaded: loaded (/usr/lib/systemd/system/eap7-domain.service; enabled; vendor>
Active: active (running) since Thu 2023-03-30 02:11:44 UTC; 5s ago
Main PID: 3855 (scl)
Tasks: 82 (limit: 20612)
Memory: 232.4M
CGroup: /system.slice/eap7-domain.service
├─3855 /usr/bin/scl enable eap7 -- /opt/rh/eap7/root/usr/share/wildf>
├─3856 /bin/bash /var/tmp/sclfYu7yW
├─3858 /bin/sh /opt/rh/eap7/root/usr/share/wildfly/bin/launch.sh /us>
├─3862 /bin/sh /opt/rh/eap7/root/usr/share/wildfly/bin/domain.sh --h>
├─3955 /usr/lib/jvm/jre/bin/java -D[Process Controller] -server -Xms>
└─3967 /usr/lib/jvm/jre/bin/java -D[Host Controller] -Dorg.jboss.boo>
Mar 30 02:11:44 adminVM systemd[1]: Started JBoss EAP (domain mode).
輸入 q 以結束呼叫器。 輸入 exit 以結束 SSH 連線。
啟動 Red Hat JBoss EAP 服務之後,您可以在網頁瀏覽器中透過 http://$ADMIN_VM_PUBLIC_IP:9990
存取管理主控台。 使用已設定的使用者 jbossadmin
名稱和密碼 Secret123456
登入。
選取 [執行階段] 索引標籤。在瀏覽窗格中,選取 [拓撲]。 您現在應該會看到叢集只包含一個域控制器:
設定主機控制器 (背景工作節點)
使用 SSH 以使用者身azureuser
分連線至 mspVM1
。 使用下列指令取得 VM 的公用 IP 位址:
MSPVM_PUBLIC_IP=$(az vm show \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM1 \
--show-details \
--query publicIps | tr -d '"' )
ssh -A -i ~/.ssh/jbosseapvm azureuser@$MSPVM_PUBLIC_IP
使用下列命令在 上 mspVM1
設定主機控制器:
# environment variables
export DOMAIN_CONTROLLER_PRIVATE_IP=<adminVM-private-IP>
export HOST_VM_NAME=$(hostname)
export HOST_VM_NAME_LOWERCASE=$(echo "${HOST_VM_NAME,,}")
export HOST_VM_IP=$(hostname -I)
export JBOSS_EAP_USER=jbossadmin
export JBOSS_EAP_PASSWORD=Secret123456
# Save default domain configuration as backup
sudo -u jboss mv $EAP_HOME/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
使用下列命令將主機控制器變更套用至 mspVM1
:
# Setup host controller
sudo -u jboss $EAP_HOME/wildfly/bin/jboss-cli.sh --echo-command \
"embed-host-controller --std-out=echo --domain-config=domain.xml --host-config=host-slave.xml",\
"/host=${HOST_VM_NAME_LOWERCASE}/server-config=server-one:remove",\
"/host=${HOST_VM_NAME_LOWERCASE}/server-config=server-two:remove",\
"/host=${HOST_VM_NAME_LOWERCASE}/server-config=${HOST_VM_NAME_LOWERCASE}-server0:add(group=main-server-group)",\
"/host=${HOST_VM_NAME_LOWERCASE}/subsystem=elytron/authentication-configuration=slave:add(authentication-name=${JBOSS_EAP_USER}, credential-reference={clear-text=${JBOSS_EAP_PASSWORD}})",\
"/host=${HOST_VM_NAME_LOWERCASE}/subsystem=elytron/authentication-context=slave-context:add(match-rules=[{authentication-configuration=slave}])",\
"/host=${HOST_VM_NAME_LOWERCASE}:write-attribute(name=domain-controller.remote.username, value=${JBOSS_EAP_USER})",\
"/host=${HOST_VM_NAME_LOWERCASE}:write-attribute(name=domain-controller.remote, value={host=${DOMAIN_CONTROLLER_PRIVATE_IP}, port=9990, protocol=remote+http, authentication-context=slave-context})",\
"/host=${HOST_VM_NAME_LOWERCASE}/core-service=discovery-options/static-discovery=primary:write-attribute(name=host, value=${DOMAIN_CONTROLLER_PRIVATE_IP})",\
"/host=${HOST_VM_NAME_LOWERCASE}/interface=unsecured:add(inet-address=${HOST_VM_IP})",\
"/host=${HOST_VM_NAME_LOWERCASE}/interface=management:write-attribute(name=inet-address, value=${HOST_VM_IP})",\
"/host=${HOST_VM_NAME_LOWERCASE}/interface=public:write-attribute(name=inet-address, value=${HOST_VM_IP})"
輸出的最後一節看起來應該類似下列範例。 如果沒有,請先進行疑難解答並解決問題,再繼續進行。
[domain@embedded /] /host=mspvm1/interface=public:write-attribute(name=inet-address, value=192.168.0.5 )
{
"outcome" => "success",
"result" => undefined,
"server-groups" => undefined,
"response-headers" => {"process-state" => "reload-required"}
}
02:58:59,388 INFO [org.jboss.as] (MSC service thread 1-2) WFLYSRV0050: JBoss EAP 7.4.10.GA (WildFly Core 15.0.25.Final-redhat-00001) stopped in 58ms
然後,使用下列命令來設定 JBoss 伺服器並設定 EAP 服務:
echo 'WILDFLY_HOST_CONFIG=host-slave.xml' | sudo tee -a $EAP_RPM_CONF_DOMAIN
# Enable the JBoss server and setup EAP service
sudo systemctl enable eap7-domain.service
# Edit eap7-domain.services
sudo sed -i 's/After=syslog.target network.target/After=syslog.target network.target NetworkManager-wait-online.service/' /usr/lib/systemd/system/eap7-domain.service
sudo sed -i 's/Before=httpd.service/Wants=NetworkManager-wait-online.service \nBefore=httpd.service/' /usr/lib/systemd/system/eap7-domain.service
# Reload and restart EAP service
sudo systemctl daemon-reload
sudo systemctl restart eap7-domain.service
# Check the status of EAP service
systemctl status eap7-domain.service
輸出應類似下列範例:
● eap7-domain.service - JBoss EAP (domain mode)
Loaded: loaded (/usr/lib/systemd/system/eap7-domain.service; enabled; vendor>
Active: active (running) since Thu 2023-03-30 03:02:15 UTC; 7s ago
Main PID: 9699 (scl)
Tasks: 51 (limit: 20612)
Memory: 267.6M
CGroup: /system.slice/eap7-domain.service
├─9699 /usr/bin/scl enable eap7 -- /opt/rh/eap7/root/usr/share/wildf>
├─9700 /bin/bash /var/tmp/sclgJ1hRD
├─9702 /bin/sh /opt/rh/eap7/root/usr/share/wildfly/bin/launch.sh /us>
├─9706 /bin/sh /opt/rh/eap7/root/usr/share/wildfly/bin/domain.sh --h>
├─9799 /usr/lib/jvm/jre/bin/java -D[Process Controller] -server -Xms>
└─9811 /usr/lib/jvm/jre/bin/java -D[Host Controller] -Dorg.jboss.boo>
Mar 30 03:02:15 mspVM1 systemd[1]: Started JBoss EAP (domain mode).
輸入 q 以結束呼叫器。 輸入 exit 以結束 SSH 連線。
使用 SSH 以使用者身azureuser
分連線至 mspVM2
。 使用下列指令取得 VM 的公用 IP 位址:
az vm show \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM2 \
--show-details \
--query publicIps | tr -d '"'
在上 mspVM2
重複上述步驟,然後輸入 exit以結束 SSH 連線。
線上到 adminVM
兩個主機控制器之後,您應該可以看到叢集拓撲,如下列螢幕快照所示:
使用 Azure 應用程式閘道 公開 Red Hat JBoss EAP 叢集
既然您已在 Azure VM 上建立叢集,本節將逐步引導您使用 Azure 應用程式閘道 將 JBoss EAP 公開至因特網。
建立 Azure 應用程式閘道
若要將 Red Hat JBoss EAP 公開至因特網,則需要公用 IP 位址。 建立公用IP位址,然後將Azure 應用程式閘道與其產生關聯。 使用 az network public-ip create 建立它,如下列範例所示:
az network public-ip create \
--resource-group $RESOURCE_GROUP_NAME \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
接下來,將後端伺服器新增至 應用程式閘道 後端集區。 使用下列命令查詢後端IP位址。 您只將主機控制器(工作節點)設定為後端伺服器。
export MSPVM1_NIC_ID=$(az vm show \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM1 \
--query networkProfile.networkInterfaces'[0]'.id \
--output tsv)
export MSPVM1_IP=$(az network nic show \
--ids ${MSPVM1_NIC_ID} \
--query ipConfigurations'[0]'.privateIPAddress \
--output tsv)
export MSPVM2_NIC_ID=$(az vm show \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM2 \
--query networkProfile.networkInterfaces'[0]'.id \
--output tsv)
export MSPVM2_IP=$(az network nic show \
--ids ${MSPVM2_NIC_ID} \
--query ipConfigurations'[0]'.privateIPAddress \
--output tsv)
接下來,建立 Azure 應用程式閘道。 下列範例會在預設後端集區中建立具有主機控制器的應用程式閘道:
az network application-gateway create \
--resource-group $RESOURCE_GROUP_NAME \
--name myAppGateway \
--public-ip-address myAGPublicIPAddress \
--location westus \
--capacity 2 \
--http-settings-port 8080 \
--http-settings-protocol Http \
--frontend-port 80 \
--sku Standard_V2 \
--subnet jbossVMGatewaySubnet \
--vnet-name myVNet \
--priority 1001 \
--servers ${MSPVM1_IP} ${MSPVM2_IP}
注意
此範例會設定使用 HTTP 對 Red Hat JBoss EAP 伺服器的簡單存取。 如果您想要安全存取,請依照使用 應用程式閘道 的端對端 TLS 中的指示來設定 TLS/SSL 終止。
此範例會在埠 8080 公開主機控制器。 您可以在後續步驟中,使用資料庫連線至叢集部署範例應用程式。
線上 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器
本節說明如何建立 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例,並在 Red Hat JBoss EAP 叢集上設定 PostgreSQL 的連線。
建立 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例
使用下列步驟來建立資料庫實例:
使用 az postgres flexible-server create 來布建 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例,如下列範例所示:
export DATA_BASE_USER=jboss DB_SERVER_NAME="jbossdb$(date +%s)" echo "DB_SERVER_NAME=${DB_SERVER_NAME}" az postgres flexible-server create \ --active-directory-auth Enabled \ --resource-group $RESOURCE_GROUP_NAME \ --name ${DB_SERVER_NAME} \ --location westus \ --version 16 \ --public-access 0.0.0.0 \ --tier Burstable \ --sku-name Standard_B1ms \ --yes objectId=$(az identity show --name passwordless-managed-identity --resource-group $RESOURCE_GROUP_NAME --query principalId -o tsv) az postgres flexible-server ad-admin create \ --resource-group $RESOURCE_GROUP_NAME \ --server-name ${DB_SERVER_NAME} \ --display-name "passwordless-managed-identity" \ --object-id $objectId \ --type ServicePrincipal
使用下列命令來允許從 Azure 服務存取:
# Save aside the following names for later use export fullyQualifiedDomainName=$(az postgres flexible-server show \ --resource-group $RESOURCE_GROUP_NAME \ --name ${DB_SERVER_NAME} \ --query "fullyQualifiedDomainName" \ --output tsv) export name=$(az postgres flexible-server show \ --resource-group $RESOURCE_GROUP_NAME \ --name ${DB_SERVER_NAME} \ --query "name" \ --output tsv) az postgres flexible-server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --name ${DB_SERVER_NAME} \ --rule-name "AllowAllWindowsAzureIps" \ --start-ip-address "0.0.0.0" \ --end-ip-address "0.0.0.0"
使用下列命令來建立資料庫:
az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP_NAME \ --server-name ${DB_SERVER_NAME} \ --database-name testdb
安裝驅動程式
使用下列步驟搭配 JBoss 管理 CLI 安裝 JDBC 驅動程式:
使用下列命令透過 SSH 連線至
adminVM
。 如果您已開啟連線,則可以略過此步驟。ssh -A -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
使用下列命令在 adminVM 上下載 JDBC 驅動程式:
# 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
使用下列命令將 JDBC 驅動程式複製到主機控制器:
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"
伺服器記錄位於和
mspVM2
上mspVM1
/var/opt/rh/eap7/lib/wildfly/domain/servers/mspvm1-server0/log/server.log
。 如果部署失敗,請檢查此記錄檔並解決問題,然後再繼續。
使用下列命令來註冊 JDBC 驅動程式:
# 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)"
設定 Red Hat JBoss EAP 叢集的資料庫連線
您已啟動資料庫伺服器、取得必要的資源識別碼,並安裝 JDBC 驅動程式。 接下來,本節中的步驟會示範如何使用 JBoss CLI 來設定與先前建立之 PostgreSQL 實例的數據源聯機。
使用下列命令開啟終端機與 SSH 至
adminVM
:ssh -i ~/.ssh/jbosseapvm azureuser@$ADMIN_VM_PUBLIC_IP
使用下列指令建立資料來源:
# Replace the following values with your own export DATA_SOURCE_CONNECTION_STRING="jdbc:postgresql://<database-fully-qualified-domain-name>:5432/testdb?sslmode=require&user=passwordless-managed-identity&authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin" export JDBC_DATA_SOURCE_NAME=dataSource-postgresql export JDBC_JNDI_NAME=java:jboss/datasources/JavaEECafeDB sudo -u jboss $EAP_HOME/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} "
您已成功設定名為 java:jboss/datasources/JavaEECafeDB
的數據來源。
部署 Java EE Cafe 範例應用程式
使用下列步驟將 Java EE Cafe 範例應用程式部署至 Red Hat JBoss EAP 叢集:
使用下列步驟來建置 Java EE Cafe。 這些步驟假設您已安裝 Git 和 Maven 的本機環境:
使用下列命令從 GitHub 複製原始碼:
git clone https://github.com/Azure/rhel-jboss-templates.git --branch 20240904 --single-branch
使用下列命令建置原始程式碼:
mvn clean install --file rhel-jboss-templates/eap-coffee-app/pom.xml
此命令會建立 eap-coffee-app/target/javaee-café.war 檔案。 您會在下一個步驟中上傳此檔案。
開啟網頁瀏覽器,然後移至的
http://<adminVM-public-IP>:9990
管理主控台,然後使用使用者jbossadmin
名稱和密碼Secret123456
登入。使用下列步驟將javaee-café.war 上傳至內容存放庫:
使用下列步驟將應用程式部署至
main-server-group
:
測試 Red Hat JBoss EAP 叢集設定
您已設定 JBoss EAP 叢集,並將應用程式部署至其中。 使用下列步驟來存取應用程式,以驗證所有設定:
使用下列命令取得 Azure 應用程式閘道 的公用 IP 位址:
az network public-ip show \ --resource-group $RESOURCE_GROUP_NAME \ --name myAGPublicIPAddress \ --query '[ipAddress]' \ --output tsv
開啟網頁瀏覽器。
使用 URL
http://<gateway-public-ip-address>/javaee-cafe/
瀏覽至應用程式。 別忘了尾端斜線。嘗試新增和移除 coffee。
清除資源
若要避免 Azure 費用,您應該清除不必要的資源。 當您不再需要部署在 Azure VM 上的 Red Hat JBoss EAP 叢集時,請取消註冊 Red Hat JBoss EAP 伺服器,並移除 Azure 資源。
使用下列命令,從 Red Hat 訂用帳戶管理取消註冊 Red Hat JBoss EAP 伺服器和 VM:
# Unregister domain controller
az vm run-command invoke \
--resource-group $RESOURCE_GROUP_NAME \
--name adminVM \
--command-id RunShellScript \
--scripts "sudo subscription-manager unregister"
# Unregister host controllers
az vm run-command invoke \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM1 \
--command-id RunShellScript \
--scripts "sudo subscription-manager unregister"
az vm run-command invoke \
--resource-group $RESOURCE_GROUP_NAME \
--name mspVM2 \
--command-id RunShellScript \
--scripts "sudo subscription-manager unregister"
使用下列命令來移除資源群組 $RESOURCE_GROUP_NAME
:
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
下一步
繼續探索在 Azure 上執行 JBoss EAP 的選項。