Csatlakozás felügyelt Eureka Server for Springhez az Azure Container Appsben
Az Eureka Server for Spring egy szolgáltatásregisztrációs adatbázis, amellyel a mikroszolgáltatások regisztrálhatják magukat, és felfedezhetnek más szolgáltatásokat. Az Eureka Server for Spring Azure Container Apps-összetevőként érhető el. A tárolóalkalmazást az Eureka Server for Springhez kötheti az Eureka-kiszolgálóval való automatikus regisztrációhoz.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Hozzon létre egy Eureka Server for Spring Java-összetevőt.
- Kösse a tárolóalkalmazást az Eureka Server for Spring Java összetevőhöz.
Fontos
Ez az oktatóanyag olyan szolgáltatásokat használ, amelyek hatással lehetnek az Azure-számlájára. Ha úgy dönt, hogy követi a műveletet, győződjön meg arról, hogy törli a cikkben szereplő erőforrásokat a váratlan számlázás elkerülése érdekében.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Ha még nincs ilyenje, ingyenesen létrehozhat egyet.
- Azure parancssori felület (CLI).
Megfontolások
Az Eureka Server for Spring tárolóalkalmazásokban való futtatásakor vegye figyelembe a következő részleteket:
Elem | Magyarázat |
---|---|
Hatókör | Az Eureka Server for Spring összetevő ugyanabban a környezetben fut, mint a csatlakoztatott tárolóalkalmazás. |
Méretezés | Az Eureka Server for Spring összetevő nem méretezhető. A skálázási tulajdonságok minReplicas és maxReplicas mindkettő a következőre 1 van állítva: . A magas rendelkezésre állás eléréséhez lásd : Magas rendelkezésre állású Eureka-szolgáltatás létrehozása a Container Appsben. |
Források | Az Eureka Server for Spring tárolóerőforrás-foglalása ki lett javítva. A processzormagok száma 0,5, a memória mérete pedig 1 Gi. |
Díjszabás | Az Eureka Server for Spring számlázása a fogyasztásalapú díjszabás alá tartozik. A felügyelt Java-összetevők által felhasznált erőforrások számlázása az aktív/tétlen díjszabás szerint van kiszámlázva. Törölheti azokat az összetevőket, amelyek már nincsenek használatban a számlázás leállításához. |
Kötés | A tárolóalkalmazások kötéssel csatlakoznak egy Eureka Server for Spring-összetevőhöz. A kötések konfigurációkat injektálnak a tárolóalkalmazás környezeti változóiba. A kötés létrehozása után a tárolóalkalmazás beolvassa a környezeti változók konfigurációs értékeit, és csatlakozhat az Eureka Server for Spring összetevőhöz. |
Beállítás
Mielőtt elkezdené használni az Eureka Server for Spring összetevőt, először létre kell hoznia a szükséges erőforrásokat.
Futtassa az alábbi parancsokat az erőforráscsoport tárolóalkalmazás-környezetben való létrehozásához.
Hozzon létre változókat az alkalmazáskonfiguráció támogatásához. Ezeket az értékeket a lecke céljaira biztosítjuk.
export LOCATION=eastus export RESOURCE_GROUP=my-services-resource-group export ENVIRONMENT=my-environment export EUREKA_COMPONENT_NAME=eureka export APP_NAME=my-eureka-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"
Változó Leírás LOCATION
Az Azure-régió helye, ahol a tárolóalkalmazást és a Java-összetevőt hozza létre. ENVIRONMENT
A bemutató alkalmazás tárolóalkalmazás-környezetének neve. RESOURCE_GROUP
A bemutató alkalmazás Azure-erőforráscsoportjának neve. EUREKA_COMPONENT_NAME
A tárolóalkalmazáshoz létrehozott Java-összetevő neve. Ebben az esetben létre kell hoznia egy Eureka Server for Spring Java-összetevőt. IMAGE
A tárolóalkalmazásban használt tárolórendszerkép. Jelentkezzen be az Azure-ba az Azure CLI-vel.
az login
Hozzon létre egy erőforráscsoportot.
az group create --name $RESOURCE_GROUP --location $LOCATION
Hozza létre a tárolóalkalmazás-környezetet.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Az Eureka Server for Spring Java összetevő létrehozása
Most, hogy már rendelkezik egy meglévő környezettel, létrehozhatja a tárolóalkalmazást, és az Eureka Server for Spring egy Java-összetevőpéldányához kötheti.
Hozza létre az Eureka Server for Spring Java összetevőt.
az containerapp env java-component eureka-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME
Nem kötelező: Frissítse az Eureka Server for Spring Java összetevő konfigurációját.
az containerapp env java-component eureka-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
A tárolóalkalmazás kötése az Eureka Server for Spring Java összetevőhöz
Hozza létre a tárolóalkalmazást, és kösse hozzá az Eureka Server for Spring összetevőhöz.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --bind $EUREKA_COMPONENT_NAME \ --query properties.configuration.ingress.fqdn
Másolja az alkalmazás URL-címét egy szövegszerkesztőbe, hogy egy közelgő lépésben használhassa.
Térjen vissza a tárolóalkalmazáshoz a portálon. Másolja az alkalmazás URL-címét egy szövegszerkesztőbe, hogy egy közelgő lépésben használhassa.
Lépjen az útvonalra az /allRegistrationStatus
Eureka Server for Spring összetevőben regisztrált összes alkalmazás megtekintéséhez.
A kötés számos konfigurációt injektál az alkalmazásba környezeti változókként, elsősorban a eureka.client.service-url.defaultZone
tulajdonságként. Ez a tulajdonság az Eureka Server Java-összetevő belső végpontját jelzi.
A kötés a következő tulajdonságokat is injektálja:
"eureka.client.register-with-eureka": "true"
"eureka.client.fetch-registry": "true"
"eureka.instance.prefer-ip-address": "true"
A eureka.client.register-with-eureka
tulajdonság úgy van beállítva, hogy true
kényszerítse a regisztrációt az Eureka-kiszolgálón. Ez a regisztráció felülírja a helyi beállítást application.properties
a konfigurációs kiszolgálóról stb. Ha ezt szeretné beállítani false
, felülírhatja egy környezeti változó beállításával a tárolóalkalmazásban.
A eureka.instance.prefer-ip-address
tulajdonság a tárolóalkalmazás-környezet adott tartománynévrendszer-feloldási szabálya miatt van beállítva true
. Ne módosítsa ezt az értéket, hogy ne szegje meg a kötést.
Nem kötelező: A tárolóalkalmazás leválasztása az Eureka Server for Spring Java összetevőről
Ha el szeretne távolítani egy kötést egy tárolóalkalmazásból, használja a --unbind
lehetőséget.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Az alkalmazás megtekintése irányítópulton keresztül
Fontos
Az irányítópult megtekintéséhez legalább a Microsoft.App/managedEnvironments/write
fiókhoz hozzárendelt szerepkört kell hozzárendelnie a felügyelt környezeti erőforráshoz. Explicit módon hozzárendelheti az erőforráshoz a szerepkört vagy Contributor
a Owner
szerepkört. A lépéseket követve létrehozhat egy egyéni szerepkördefiníciót, és hozzárendelheti azt a fiókjához.
Feljegyzés
Az irányítópult nem érhető el az Azure China 21Vianetben.
Egyéni szerepkördefiníció létrehozása.
az role definition create --role-definition '{ "Name": "<YOUR_ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'
Mindenképpen cserélje le az
<SUBSCRIPTION_ID>
érték helyőrzőjének helyét azAssignableScopes
előfizetés-azonosítóra.Rendelje hozzá az egyéni szerepkört a fiókjához egy felügyelt környezeti erőforráson.
A felügyelt környezet erőforrás-azonosítójának lekérése:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Rendelje hozzá a szerepkört a fiókjához.
A parancs futtatása előtt cserélje le a helyőrzőket – szögletes
<>
zárójelek jelzik – a felhasználó vagy szolgáltatásnév azonosítójára és a szerepkör nevére.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Feljegyzés
Az
<USER_OR_SERVICE_PRINCIPAL_ID>
értéknek általában az az identitásnak kell lennie, amelyet az Azure Portal eléréséhez használ. Az<ROLE_NAME>
érték az 1. lépésben hozzárendelt név.Kérje le az Eureka Server for Spring-irányítópult URL-címét.
az containerapp env java-component eureka-server-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv
Ez a parancs az Eureka Server for Spring irányítópult eléréséhez használható URL-címet adja vissza. Az irányítópulton a tárolóalkalmazás is látható, ahogy az alábbi képernyőképen is látható.
Nem kötelező: Az Eureka Server for Spring és a Admin for Spring Java összetevőinek integrálása
Ha integrálni szeretné az Eureka Server for Spring-kiszolgálót és a Spring Java-összetevők rendszergazdáit, olvassa el a Spring felügyelt rendszergazdájának integrálása az Eureka Server for Spring szolgáltatással című témakört.
Az erőforrások eltávolítása
Az oktatóanyagban létrehozott erőforrások hatással vannak az Azure-számlára. Ha nem fogja hosszú távon használni ezeket a szolgáltatásokat, futtassa az alábbi parancsot az oktatóanyagban létrehozott összes eltávolításához.
az group delete --resource-group $RESOURCE_GROUP
Az Eureka Server for Spring engedélyezett konfigurációs listája
A következő szakaszok a támogatott konfigurációkat ismertetik. További információ: Spring Cloud Eureka Server.
Feljegyzés
Küldjön támogatási jegyeket az új funkciókérésekhez.
Konfigurációs lehetőségek
A az containerapp update
parancs a --configuration
paraméterrel szabályozza az Eureka Server for Spring konfigurálását. Egyszerre több paramétert is használhat, ha szóköz választja el őket egymástól. További információ: Spring Cloud Eureka Server.
A konfigurációs tulajdonságban a eureka.server
következő konfigurációs beállítások érhetők el:
Név | Leírás | Alapértelmezett érték |
---|---|---|
eureka.server.enable-self-preservation |
Ha engedélyezve van, a kiszolgáló nyomon követi a kiszolgálótól kapott megújítások számát. Bármikor, amikor a megújítások száma a megadott küszöbérték eureka.server.renewal-percent-threshold alá csökken. Az alapértelmezett érték az eredeti Eureka-kiszolgálón van beállítva true , de az Eureka Server Java összetevőben az alapértelmezett érték a következőre false van állítva. Lásd az Eureka Server for Spring Java összetevő korlátozásait. |
false |
eureka.server.renewal-percent-threshold |
Az ügyfelektől a megadott eureka.server.renewal-threshold-update-interval-ms időszakban várható megújítások minimális százalékos aránya. Ha a megújítások a küszöbérték alá esnek, a lejáratok le lesznek tiltva, ha eureka.server.enable-self-preservation engedélyezve van. |
0.85 |
eureka.server.renewal-threshold-update-interval-ms |
Azt az időközt, amellyel a küszöbértéket frissíteni kell – a megadott módon eureka.server.renewal-percent-threshold . |
0 |
eureka.server.expected-client-renewal-interval-seconds |
Az az intervallum, amellyel az ügyfelek várhatóan elküldik a szívverésüket. Alapértelmezés szerint 30 másodperc. Ha az ügyfelek különböző gyakorisággal küldenek szívveréseket, például 15 másodpercenként, akkor ezt a paramétert ennek megfelelően kell hangolni, különben az önmegőrzés nem a várt módon működik. | 30 |
eureka.server.response-cache-auto-expiration-in-seconds |
Lekéri azt az időt, amelyre a beállításjegyzék hasznos adatait a gyorsítótárban kell tartani, ha a módosítási események nem érvénytelenítik. | 180 |
eureka.server.response-cache-update-interval-ms |
Lekéri azt az időtartamot, amellyel az ügyfél hasznos adatgyorsítótárát frissíteni kell. | 0 |
eureka.server.use-read-only-response-cache |
Jelenleg com.netflix.eureka.registry.ResponseCache kétszintű gyorsítótárazási stratégiát használ a válaszokhoz. Lejárati readWrite szabályzattal rendelkező gyorsítótár és readonly lejárat nélküli gyorsítótár. |
true |
eureka.server.disable-delta |
Ellenőrzi, hogy a változásadatok kézbesíthetők-e az ügyfélnek vagy sem. | false |
eureka.server.retention-time-in-m-s-in-delta-queue |
Adja meg, hogy az ügyfelek mennyi ideig legyenek gyorsítótárazva a változásadatokhoz, és ne hagyják ki az értéket. | 0 |
eureka.server.delta-retention-timer-interval-in-ms |
Lekérheti az időintervallumot, amellyel a tisztítási feladatnak fel kell ébrednie, és ellenőrizze a lejárt változásadatokat. | 0 |
eureka.server.eviction-interval-timer-in-ms |
Lekérheti azt az időintervallumot, amellyel a lejáró feladatnak felébrednie és futnia kell. | 60000 |
eureka.server.sync-when-timestamp-differs |
Ellenőrzi, hogy szinkronizálja-e a példányokat, ha eltér az időbélyeg. | true |
eureka.server.rate-limiter-enabled |
Azt jelzi, hogy a sebességkorlátozót engedélyezni vagy letiltani kell-e. | false |
eureka.server.rate-limiter-burst-size |
Sebességkorlátozó, jogkivonat-gyűjtő algoritmus tulajdonsága. | 10 |
eureka.server.rate-limiter-registry-fetch-average-rate |
Sebességkorlátozó, jogkivonat-gyűjtő algoritmus tulajdonsága. A kikényszerített kérelmek átlagos sebességét adja meg. | 500 |
eureka.server.rate-limiter-privileged-clients |
Minősített ügyfelek listája. Ez a standard eureka Java-ügyfelek mellett van. | N/A |
eureka.server.rate-limiter-throttle-standard-clients |
Adja meg, hogy a standard sebességkorlátozó ügyfelek. Ha be van false állítva, csak a nem megfelelő ügyfelek száma korlátozott. |
false |
eureka.server.rate-limiter-full-fetch-average-rate |
Sebességkorlátozó, jogkivonat-gyűjtő algoritmus tulajdonsága. A kikényszerített kérelmek átlagos sebességét adja meg. | 100 |
Gyakori konfigurációk
- Naplózással kapcsolatos konfigurációk:
logging.level.*
logging.group.*
- A névtérben lévő
logging.*
egyéb konfigurációknak tilosnak kell lenniük – például a naplófájlok írását a használatávallogging.file
tiltani kell.
Alkalmazások közötti hívás
Ez a példa bemutatja, hogyan írhat Java-kódot az Eureka Server for Spring összetevőben regisztrált alkalmazások közötti híváshoz. Ha a tárolóalkalmazások az Eureka-hoz vannak kötve, az Eureka-kiszolgálón keresztül kommunikálnak egymással.
A példa két alkalmazást hoz létre, egy hívót és egy hívót. Mindkét alkalmazás az Eureka Server for Spring összetevő használatával kommunikál egymással. A hívó alkalmazás egy olyan végpontot tesz elérhetővé, amelyet a hívó alkalmazás hív meg.
Hozza létre a hívó alkalmazást. Engedélyezze az Eureka-ügyfelet a Spring Boot-alkalmazásban úgy, hogy hozzáadja a
@EnableDiscoveryClient
jegyzetet a főosztályhoz.@SpringBootApplication @EnableDiscoveryClient public class CalleeApplication { public static void main(String[] args) { SpringApplication.run(CalleeApplication.class, args); } }
Hozzon létre egy végpontot a hívó alkalmazás által hívott híváskezelő alkalmazásban.
@RestController public class CalleeController { @GetMapping("/call") public String calledByCaller() { return "Hello from Application callee!"; } }
Állítsa be a hívó alkalmazás nevét az alkalmazáskonfigurációs fájlban – például application.yml.
spring.application.name=callee
Hozza létre a hívó alkalmazást.
Adja hozzá a
@EnableDiscoveryClient
széljegyzetet az Eureka ügyfélfunkcióinak engedélyezéséhez. Emellett hozzon létre egyWebClient.Builder
babot a@LoadBalanced
széljegyzetekkel, hogy terheléselosztásos hívásokat hajthasson végre más szolgáltatások felé.@SpringBootApplication @EnableDiscoveryClient public class CallerApplication { public static void main(String[] args) { SpringApplication.run(CallerApplication.class, args); } @Bean @LoadBalanced public WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } }
Hozzon létre egy vezérlőt a hívó alkalmazásban, amely a
WebClient.Builder
hívó alkalmazás meghívására használja annak alkalmazásnevét( callee).@RestController public class CallerController { @Autowired private WebClient.Builder webClientBuilder; @GetMapping("/call-callee") public Mono<String> callCallee() { return webClientBuilder.build() .get() .uri("http://callee/call") .retrieve() .bodyToMono(String.class); } }
Most már rendelkezik egy hívó és hívó alkalmazással, amely az Eureka Server for Spring Java-összetevők használatával kommunikál egymással. Mielőtt tesztelni kezdené a végpontot a /call-callee
hívó alkalmazásban, győződjön meg arról, hogy mindkét alkalmazás fut és kapcsolódik az Eureka-kiszolgálóhoz.
Korlátozások
- Az Eureka Server Java-összetevő alapértelmezett konfigurációval rendelkezik,
eureka.server.enable-self-preservation
amely a következőrefalse
van állítva: . Ez az alapértelmezett konfiguráció segít elkerülni azokat az időket, amikor a példányok nem törlődnek az önmegőrzés engedélyezése után. Ha a példányok túl korán törlődnek, előfordulhat, hogy egyes kérések nem létező példányokra irányulnak. Ha módosítani szeretné ezt a beállításttrue
, felülírhatja azt a Java-összetevő saját konfigurációinak beállításával. - Az Eureka-irányítópult nem érhető el az Azure China 21Vianetben.
Következő lépések
Kapcsolódó tartalom
A Spring felügyelt rendszergazdájának integrálása az Eureka Server for Spring szolgáltatással