Megosztás a következőn keresztül:


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

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 1van á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.

  1. 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.
  2. Jelentkezzen be az Azure-ba az Azure CLI-vel.

    az login
    
  3. Hozzon létre egy erőforráscsoportot.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. 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.

  1. 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
    
  2. 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

  1. 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
    
  2. 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.propertiesa 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.

  1. 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 az AssignableScopes előfizetés-azonosítóra.

  2. 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)
    
  3. 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.

  4. 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ó.

    Képernyőkép az Eureka Server for Spring irányítópultjáról.

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-thresholdalá 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 falsevan á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-msidő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ával logging.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.

  1. 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);
      }
    }
    
  2. 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!";
        }
    }
    
  3. Á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
    
  4. 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 egy WebClient.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();
      }
    }
    
  5. 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-preservationamely a következőre falsevan á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ást true, 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

A Spring felügyelt rendszergazdájának integrálása az Eureka Server for Spring szolgáltatással