Java EE JCache használata Open Liberty vagy WebSphere Liberty használatával egy Azure Kubernetes Service -fürtön
Ez a cikk bemutatja, hogyan használható a Java EE JCache az AKS-ben üzembe helyezett tárolóalapú alkalmazásokban.
Ebben az útmutatóban a következőt fogja elkönyvelni:
- Hozza létre az infrastruktúrát a Java, Java EE, Jakarta EE vagy MicroProfile alkalmazás Open Liberty vagy WebSphere Liberty futtatókörnyezetben való futtatásához.
- Az Azure Cache for Redis által támogatott Java EE JCache használata munkamenet-gyorsítótárként.
- Az alkalmazás Docker-rendszerképének létrehozása Open Liberty- vagy WebSphere Liberty-tárolórendszerképek használatával.
- Helyezze üzembe a tárolóalapú alkalmazást egy AKS-fürtben az Open Liberty Operátor használatával.
Ez a cikk segítséget nyújt az üzembe helyezés gyors elvégzéséhez. Mielőtt éles környezetben járnál, érdemes megismerkedned a Tuning Liberty-et.
Ha szeretne visszajelzést küldeni vagy szorosan együttműködni a migrálási forgatókönyvekkel a WebSphere Azure-megoldásokon fejlesztő mérnöki csapatával, töltse ki ezt a rövid felmérést a WebSphere migrálásáról , és adja meg a kapcsolattartási adatait. A programmenedzserek, építészek és mérnökök csapata azonnal kapcsolatba lép Önnel, hogy szoros együttműködést kezdeményezze.
Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Ez a cikk az Azure CLI legújabb verzióját igényli. Ha Az Azure Cloud Shellt használja, a legújabb verzió már telepítve van.
- Ha az útmutatóban található parancsokat helyileg futtatja (az Azure Cloud Shell helyett):
- Készítsen elő egy helyi gépet Unix-szerű operációs rendszerrel (például Ubuntu, macOS, Linuxos Windows-alrendszer).
- Telepítse a Java SE 17-es vagy újabb verzióját (például Eclipse Open J9).
- Telepítse a Maven 3.5.0-s vagy újabb verzióját.
- Telepítse a Dockert az operációs rendszerhez.
- Győződjön meg arról, hogy az előfizetéshez szerepkör vagy
Owner
Contributor
User Access Administrator
szerepkör van hozzárendelve. A hozzárendelések ellenőrzéséhez kövesse a felhasználók vagy csoportok szerepkör-hozzárendeléseinek listázása lépéseit.
Az infrastruktúra létrehozása
Az ebben a szakaszban ismertetett lépések segítségével létrehozhatja az alkalmazásinfrastruktúrát az Azure-ban. A lépések elvégzése után egy Azure Container Registry, egy Azure Kubernetes Service-fürt és egy Azure Cache for Redis-példány fog rendelkezni a mintaalkalmazás futtatásához.
Erőforráscsoport létrehozása
Az Azure-erőforráscsoport olyan logikai csoport, amelyben az Azure-erőforrások üzembe helyezése és kezelése zajlik.
Hozzon létre egy java-liberty-project nevű erőforráscsoportot az eastus helyen található az group create paranccsal. Ezt az erőforráscsoportot később az Azure Container Registry (ACR) példány és az AKS-fürt létrehozásához használják.
export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus
ACR-példány létrehozása
Az ACR-példány létrehozásához használja az az acr create parancsot. Az alábbi példa létrehoz egy youruniqueacrname nevű ACR-példányt. Győződjön meg arról, hogy a név egyedi az Azure-ban.
export REGISTRY_NAME=youruniqueacrname
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic \
--admin-enabled
Rövid idő elteltével látnia kell egy JSON-kimenetet, amely a következőket tartalmazza:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Másik lehetőségként létrehozhat egy Azure-tárolóregisztrációs adatbázispéldányt a gyorsútmutató lépéseit követve: Azure-tárolóregisztrációs adatbázis létrehozása az Azure Portal használatával.
Csatlakozás az ACR-példányhoz
Mielőtt leküldhet egy képet, be kell jelentkeznie az ACR-példányba. Futtassa a következő parancsokat a kapcsolat ellenőrzéséhez:
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--query 'loginServer' \
--output tsv)
export USER_NAME=$(az acr credential show \
--name $REGISTRY_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--query 'username' \
--output tsv)
export PASSWORD=$(az acr credential show \
--name $REGISTRY_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--query 'passwords[0].value' \
--output tsv)
docker login $LOGIN_SERVER -u $USER_NAME -p $PASSWORD
Ha sikeresen bejelentkezett az ACR-példányba, a parancs kimenetének végén kell megjelennie Login Succeeded
.
Ha problémát tapasztal az Azure-tárolóregisztrációs adatbázisba való bejelentkezéskor, olvassa el a beállításjegyzék-bejelentkezés hibaelhárításával kapcsolatos témakört.
AKS-fürt létrehozása
Az az aks create paranccsal hozzon létre egy AKS-fürtöt, és adjon neki lemezkép-lekérési engedélyt az ACR-példányból. A következő példa egy myAKSCluster nevű fürtöt hoz létre egy csomóponttal. A parancs végrehajtása több percet vesz igénybe.
export CLUSTER_NAME=myAKSCluster
az aks create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys \
--enable-managed-identity \
--attach-acr $REGISTRY_NAME
Néhány perc elteltével a parancs befejezi és visszaadja a fürt JSON-formátumú adatait, beleértve a következő sorokat:
"nodeResourceGroup": "MC_java-liberty-project_myAKSCluster_eastus",
"privateFqdn": null,
"provisioningState": "Succeeded",
"resourceGroup": "java-liberty-project",
Csatlakozás az AKS-fürthöz
Kubernetes-fürt kezeléséhez a Kubectl, a Kubernetes parancssori ügyfelet kell használnia. Ha az Azure Cloud Shellt használja, kubectl
már telepítve van. A helyi telepítéshez kubectl
használja az az aks install-cli parancsot:
az aks install-cli
Az az aks get-credentials paranccsal konfigurálható kubectl
a Kubernetes-fürthöz való csatlakozásra. Ez a parancs letölti a hitelesítő adatokat, és konfigurálja a Kubernetes parancssori felületét a használatukhoz.
az aks get-credentials \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--overwrite-existing
A fürthöz való csatlakozás ellenőrzéséhez használja a kubectl get parancsot a fürtcsomópontok listájának lekéréséhez.
kubectl get nodes
A következő példakimenet az előző lépésekben létrehozott csomópontot mutatja be. Győződjön meg arról, hogy a csomópont állapota kész.
NAME STATUS ROLES AGE VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready agent 76s v1.18.10
Open Liberty-operátor telepítése
A fürt létrehozása és csatlakoztatása után telepítse az Open Liberty Operátort az alábbi parancsok futtatásával.
# Install cert-manager Operator
CERT_MANAGER_VERSION=v1.11.2
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.yaml
# Install Open Liberty Operator
export OPERATOR_VERSION=1.2.2
mkdir -p overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/olo-all-namespaces.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/cluster-roles.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/kustomization.yaml -q -P ./overlays/watch-all-namespaces
mkdir base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/kustomization.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-crd.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-operator.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-roles.yaml -q -P ./base
kubectl create namespace open-liberty
kubectl apply --server-side -k overlays/watch-all-namespaces
Azure Cache for Redis-példány létrehozása
Az Azure Cache for Redis egy Open Liberty- vagy WebSphere Liberty-kiszolgálón futó Java-alkalmazás megőrzését HttpSession
nyújtja vissza. Az ebben a szakaszban ismertetett lépéseket követve hozzon létre egy Azure Cache for Redis-példányt, és jegyezze fel annak kapcsolati adatait. Ezt az információt később fogjuk használni.
Kövesse a rövid útmutató lépéseit: Az Azure Cache for Redis használata Java nyelven, de a Java-minta megértését nem beleértve.
Másolja ki az Azure Cache for Redis-példány gazdagépnevét és elsődleges hozzáférési kulcsát , majd futtassa a következő parancsokat a környezeti változók hozzáadásához:
export REDISCACHEHOSTNAME=<YOUR_HOST_NAME> export REDISCACHEKEY=<YOUR_PRIMARY_ACCESS_KEY>
Az alkalmazás létrehozása
A mintaalkalmazás létrehozásához és tárolózásához kövesse az ebben a szakaszban leírt lépéseket. Ezek a lépések a Maven és liberty-maven-plugin
az az acr buildet használják. Ha többet szeretne megtudni a webalkalmazásról, olvassa el a liberty-maven-plugin
Webalkalmazás létrehozása a Mavennel című témakört.
Az alkalmazás kivétele
Az alábbi parancsokkal klónozza az útmutató mintakódját. A minta a GitHub open-liberty-on-aks adattárában található. Van néhány minta az adattárban. Ez a cikk java-app-jcache-t használ.
git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
git checkout 20230906
Ha "leválasztott HEAD" állapotú üzenet jelenik meg, ezt az üzenetet nyugodtan figyelmen kívül hagyhatja. Ez csak azt jelenti, hogy kivett egy címkét.
Az alkalmazás a következő fájlstruktúrával rendelkezik:
java-app-jcache/
├── pom.xml
└── src
└── main
├── aks
│ └── openlibertyapplication.yaml
├── docker
│ ├── Dockerfile
│ └── Dockerfile-wlp
├── java
├── liberty
│ └── config
│ └── server.xml
├── redisson
│ └── redisson-config.yaml
├── resources
└── webapp
A java, az erőforrások és a webalkalmazás-könyvtárak tartalmazzák a mintaalkalmazás forráskódját.
Az aks könyvtárban az openlibertyapplication.yaml telepítési fájl az alkalmazás lemezképének üzembe helyezésére szolgál.
A Docker könyvtárban két Docker-fájlt helyezünk el. A Dockerfile az Open Liberty és a Dockerfile-wlp rendszerképek létrehozására szolgál a WebSphere Liberty használatával.
A liberty/config könyvtárban a server.xml fájl az Open Liberty és a WebSphere Liberty fürt munkamenet-gyorsítótárának konfigurálására szolgál.
A redisson könyvtárban a redisson-config.yaml fájl az Azure Cache for Redis-példány kapcsolatának konfigurálására szolgál.
Az alkalmazás tárolóba helyezése
Ha a Liberty-alkalmazást az AKS-fürtön szeretné üzembe helyezni és futtatni, az alábbi lépésekkel tárolózhatja az alkalmazást Docker-rendszerképként. Open Liberty-tárolórendszerképeket vagy WebSphere Liberty-tárolólemezképeket is használhat.
Módosítsa a könyvtárat a helyi klón java-app-jcache elemére.
Futtassa
mvn clean package
az alkalmazás csomagolásához.Futtassa
mvn -Predisson validate
a Redisson konfigurációs fájl másolását a megadott helyre. Ez a lépés beszúrja a környezeti változók értékeitREDISCACHEHOSTNAME
aREDISCACHEKEY
redisson-config.yaml fájlba, amelyre a server.xml fájl hivatkozik.Futtassa
mvn liberty:dev
az alkalmazást. Ha a teszt sikeres, a parancs kimenetében kell megjelennieThe defaultServer server is ready to run a smarter planet.
. Ha a Redis-kapcsolat sikeres, az alábbihoz hasonló kimenetnek kell megjelennie.[INFO] [err] [Default Executor-thread-5] INFO org.redisson.Version - Redisson 3.16.7 [INFO] [err] [redisson-netty-2-2] INFO org.redisson.connection.pool.MasterPubSubConnectionPool - 1 connections initialized for redacted.redis.cache.windows.net/20.25.90.239:6380 [INFO] [err] [redisson-netty-2-20] INFO org.redisson.connection.pool.MasterConnectionPool - 24 connections initialized for redacted.redis.cache.windows.net/20.25.90.239:6380
http://localhost:9080/
Megtekintheti, hogy az alkalmazás fut-e, de a Redis működésének bizonyítéka az előző lépésben felsorolt kimenet.A Ctrl+C billentyűkombinációval állítsa le az alkalmazást.
Az alábbi parancsokkal lekérheti az pom.xml fájlban definiált tulajdonságok
artifactId
version
értékeit.export artifactId=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' --non-recursive exec:exec) export version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
Futtassa
cd target
a könyvtárat a minta buildjének módosításához.Futtassa az alábbi parancsok egyikét az alkalmazás lemezképének létrehozásához és az ACR-példányba való leküldéséhez.
Az alábbi paranccsal létrehozhat egy Open Liberty-alaprendszerképet, ha az Open Liberty-t szeretné egyszerűbb nyílt forráskód Java-futtatókörnyezetként™ használni:
# Build and tag application image. This causes the ACR instance to pull the necessary Open Liberty base images. az acr build -t ${artifactId}:${version} -r $REGISTRY_NAME --resource-group $RESOURCE_GROUP_NAME .
Ha az Open Liberty kereskedelmi verzióját szeretné használni, használja a következő parancsot a WebSphere Liberty alaprendszerképével való buildeléshez:
# Build and tag application image. This causes the ACR instance to pull the necessary WebSphere Liberty base images. az acr build -t ${artifactId}:${version} -r $REGISTRY_NAME --resource-group $RESOURCE_GROUP_NAME --file=Dockerfile-wlp .
Az alkalmazás üzembe helyezése
A tárolóalapú mintaalkalmazás AKS-fürtön való üzembe helyezéséhez kövesse az ebben a szakaszban leírt lépéseket.
Ellenőrizze, hogy az aktuális munkakönyvtár java-app-jcache/target-e a helyi klónban.
Az alábbi parancsokkal hozzon létre egy titkos kulcsot Redisson konfigurációs adataival. Ezzel a titkos kóddal az alkalmazás csatlakozhat a létrehozott Azure Cache for Redis-példányhoz.
export REDISSON_CONFIG_SECRET_NAME=redisson-config-secret kubectl create secret generic ${REDISSON_CONFIG_SECRET_NAME} --from-file=$(pwd)/liberty/wlp/usr/servers/defaultServer/redisson-config.yaml
Az alábbi parancsokkal három replikával helyezheti üzembe a Liberty-alkalmazást az AKS-fürtön. A parancs kimenete beágyazottan is megjelenik.
# Set number of application replicas export REPLICAS=3 # Create OpenLibertyApplication "javaee-cafe-jcache-cluster" envsubst < openlibertyapplication.yaml | kubectl create -f - openlibertyapplication.openliberty.io/javaee-cafe-jcache-cluster created # Check if OpenLibertyApplication instance is created kubectl get openlibertyapplication ${artifactId}-cluster NAME IMAGE EXPOSED RECONCILED AGE javaee-cafe-jcache-cluster youruniqueacrname.azurecr.io/javaee-cafe-jcache:1.0.0 True 59s # Check if deployment created by Operator is ready kubectl get deployment ${artifactId}-cluster --watch NAME READY UP-TO-DATE AVAILABLE AGE javaee-cafe-jcache-cluster 0/3 3 0 20s
Várjon, amíg megjelenik
3/3
azREADY
oszlop alatt és3
azAVAILABLE
oszlop alatt, majd a Ctrl+C billentyűkombinációval állítsa le azkubectl
órafolyamatot.
Az alkalmazás tesztelése
Az alkalmazás futtatásakor a Kubernetes terheléselosztó szolgáltatása elérhetővé teszi az alkalmazás előtérét az interneten. Ez a folyamat eltarthat egy ideig.
A folyamat állapotának monitorozásához használja kubectl get service parancsot a --watch
argumentummal.
kubectl get service ${artifactId}-cluster --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
javaee-cafe-jcache-cluster LoadBalancer 10.0.50.29 20.84.16.169 80:31732/TCP 68s
Ha a külső IP-cím függőben lévőről tényleges nyilvános IP-címre változik, a Ctrl+C billentyűkombinációval állítsa le a kubectl
figyelés folyamatát.
Nyisson meg egy webböngészőt a szolgáltatás külső IP-címére (20.84.16.169
a fenti példában) az alkalmazás kezdőlapjának megtekintéséhez. Ha a lap nincs megfelelően betöltve, az azért van, mert az alkalmazás elindul. Várhat egy ideig, és később frissítheti a lapot. Ekkor megjelenik az alkalmazásreplikák podneve a lap bal felső sarkában (javaee-cafe-jcache-cluster-77d54bccd4-5xnzx
ebben az esetben).
Az Új kávé a munkamenetben űrlapon adja meg a Név és ár mezők értékeit, majd válassza a Küldés lehetőséget. Néhány másodperc elteltével megjelenik a Küldés száma: 1 a lap bal alsó részén.
Annak bemutatásához, hogy a munkamenet-gyorsítótár az alkalmazás összes replikájában megmarad, futtassa a következő parancsot az aktuális replika podnévvel javaee-cafe-jcache-cluster-<pod id from your running app>
való törléséhez:
kubectl delete pod javaee-cafe-jcache-cluster-77d54bccd4-5xnzx
pod "javaee-cafe-jcache-cluster-77d54bccd4-5xnzx" deleted
Ezután frissítse az alkalmazás kezdőlapját. Ugyanazokat az adatokat fogja látni az Új kávé a munkamenetben szakaszban, de egy másik podnév jelenik meg a lap bal felső sarkában.
Végül az alábbi lépésekkel bizonyíthatja, hogy a munkamenet-adatok megmaradnak az Azure Cache for Redis-példányban. A Redis-konzol használatával parancsokat adhat ki az Azure Cache for Redis-példányhoz.
Keresse meg az Azure Cache for Redis-példányt az Azure Portalon.
Válassza a Konzol lehetőséget a Redis-konzol megnyitásához.
Futtassa a következő parancsokat a munkamenet adatainak megtekintéséhez:
scan 0 count 1000 match '*' hgetall "com.ibm.ws.session.attr.default_host%2F"
Keressen rá a café.model.entity.Coffee[id=1, name=Coffee 3, price=30.0] weblapra, amely az Azure Cache for Redis-példányban létrehozott és tárolt kávé.
Az erőforrások eltávolítása
Az Azure-díjak elkerülése érdekében törölje a felesleges erőforrásokat. Ha a fürtre már nincs szükség, az az group delete paranccsal távolítsa el az erőforráscsoportot, a tárolószolgáltatást, a tárolóregisztrációs adatbázist és az összes kapcsolódó erőforrást.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Az Azure Cache for Redis-példány törléséhez keresse meg az erőforráscsoport nevét, és futtassa a következő parancsot:
az group delete --name <AZURE_CACHE_FOR_REDIS_RESOURCE_GROUP_NAME> --yes --no-wait
Következő lépések
Az útmutatóban használt hivatkozásokból többet is megtudhat:
- A Liberty-munkamenetek megőrzésének konfigurálása A JCache használatával
- A Redisson JCache támogatása
- A Liberty Server konfigurációjának megnyitása
A WebSphere-termékek Azure-beli futtatásának lehetőségeiről további információt a WebSphere termékcsalád Azure-beli futtatására vonatkozó megoldások című témakörben talál .
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: