Bagikan melalui


Tutorial: Membuat kluster komponen server Eureka yang sangat tersedia di Azure Container Apps

Dalam tutorial ini, Anda mencari tahu cara membuat layanan Eureka yang dirancang untuk tetap beroperasi dalam menghadapi kegagalan dan permintaan tinggi. Membangun layanan Eureka yang sangat tersedia membantu memastikan registri layanan yang Anda gunakan untuk Azure Container Apps selalu tersedia untuk klien terlepas dari permintaan.

Mencapai status ketersediaan tinggi untuk Eureka termasuk menautkan beberapa instans server Eureka bersama-sama sehingga membentuk kluster. Kluster menyediakan sumber daya sehingga jika satu server Eureka gagal, layanan lain tetap tersedia untuk permintaan.

Di tutorial ini, Anda akan:

  • Buat server Eureka untuk komponen Spring.
  • Ikat dua server Eureka untuk komponen Spring bersama-sama ke dalam kluster.
  • Ikat aplikasi kontainer ke kedua server Eureka untuk penemuan layanan dengan ketersediaan tinggi.

Prasyarat

Pertimbangan

Saat Anda menjalankan komponen Java terkelola di Container Apps, ketahui detail berikut:

Item Penjelasan
Cakupan Komponen berjalan di lingkungan yang sama dengan aplikasi kontainer yang terhubung.
Penskalaan Komponen tidak dapat menskalakan. Properti minReplicas penskalakan dan maxReplicas keduanya diatur ke 1.
Sumber Alokasi sumber daya kontainer untuk komponen diperbaiki. Jumlah inti CPU adalah 0,5, dan ukuran memorinya adalah 1 GB.
Harga Penagihan komponen berada di bawah harga berbasis konsumsi. Sumber daya yang digunakan oleh komponen terkelola ditagih dengan tarif aktif atau diam, tergantung pada penggunaan sumber daya. Anda dapat menghapus komponen yang tidak lagi digunakan untuk menghentikan penagihan.
Pengikatan Aplikasi kontainer terhubung ke komponen melalui pengikatan. Pengikatan menyuntikkan konfigurasi ke dalam variabel lingkungan aplikasi kontainer. Setelah pengikatan dibuat, aplikasi kontainer dapat membaca nilai konfigurasi dari variabel lingkungan dan terhubung ke komponen.

Menyiapkan sumber daya awal

Gunakan langkah-langkah berikut untuk membuat beberapa sumber daya yang Anda butuhkan untuk kluster layanan Eureka Anda.

  1. Buat variabel yang menyimpan nilai konfigurasi aplikasi.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-services-resource-group
    export ENVIRONMENT=my-environment
    export EUREKA_COMPONENT_FIRST=eureka01
    export EUREKA_COMPONENT_SECOND=eureka02
    export APP_NAME=sample-service-eureka-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"
    
  2. Gunakan Azure CLI untuk masuk ke Azure.

    az login
    
  3. Buat grup sumber daya.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Buat lingkungan Aplikasi Kontainer Anda.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Membuat server untuk kluster

Buat dua komponen Eureka Server for Spring.

az containerapp env java-component eureka-server-for-spring create \
    --environment $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --name $EUREKA_COMPONENT_FIRST
az containerapp env java-component eureka-server-for-spring create \
    --environment $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --name $EUREKA_COMPONENT_SECOND

Mengikat komponen bersama-sama untuk membentuk kluster

Agar server Eureka berfungsi dalam konfigurasi ketersediaan tinggi, server tersebut perlu ditautkan bersama sebagai kluster.

  1. Ikat server Eureka pertama ke server kedua.

    az containerapp env java-component eureka-server-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_FIRST \
        --bind $EUREKA_COMPONENT_SECOND
    
  2. Ikat server Eureka kedua ke server pertama.

    az containerapp env java-component eureka-server-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_SECOND \
        --bind $EUREKA_COMPONENT_FIRST
    

Menyebarkan dan mengikat aplikasi

Dengan komponen server yang ditautkan bersama-sama, Anda dapat membuat aplikasi kontainer dan mengikatnya ke dua komponen Eureka.

  1. Buat aplikasi kontainer.

    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
    
  2. Ikat aplikasi kontainer ke komponen server Eureka pertama.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_FIRST 
    
  3. Ikat aplikasi kontainer ke komponen server Eureka kedua.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_SECOND
    

Lihat dasbor

Penting

Untuk melihat dasbor Eureka Server untuk Spring, Anda harus memiliki peran Microsoft.App/managedEnvironments/write, Owner, atau Contributor yang ditetapkan ke akun Anda untuk sumber daya lingkungan Container Apps.

  • Jika Anda sudah memiliki salah satu peran ini, lewati ke bagian Dapatkan URL dasbor untuk mendapatkan URL dan melihat dasbor.
  • Jika Anda ingin membuat definisi peran kustom dan menetapkannya ke akun Anda, lakukan langkah-langkah di bagian berikut, Buat dan tetapkan peran kustom.
  • Jika Anda ingin menetapkan akun Anda peran Owner atau Contributor untuk sumber daya, lakukan penugasan tersebut, lalu lewati ke bagian Dapatkan URL dasbor.

Buat dan tetapkan peran khusus

  1. Buat definisi peran kustom. Sebelum Anda menjalankan perintah ini, ganti tempat penampung dalam AssignableScopes nilai dengan ID langganan Anda.

    az role definition create --role-definition '{
        "Name": "Java Component Dashboard Access",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    
  2. Dapatkan ID sumber daya dari lingkungan Container Apps.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Tetapkan peran kustom ke akun Anda untuk sumber daya lingkungan Container Apps. Sebelum Anda menjalankan perintah ini, ganti placeholder dalam nilai assignee dengan ID objek pengguna atau ID principal layanan Anda.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "Java Component Dashboard Access" \
        --scope $ENVIRONMENT_ID
    

Dapatkan URL dasbor

Dapatkan URL dasbor Eureka Server for Spring.

az containerapp env java-component eureka-server-for-spring show \
    --environment $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --name $EUREKA_COMPONENT_FIRST \
    --query properties.ingress.fqdn \
    --output tsv

Perintah ini mengembalikan URL yang dapat Anda gunakan untuk mengakses dasbor Eureka Server for Spring. Melalui dasbor, Anda dapat memverifikasi bahwa penyiapan server Eureka terdiri dari dua replika.

Cuplikan layar dasbor Eureka untuk Spring. Bagian instans terdaftar mencantumkan aplikasi kontainer dan dua server Eureka, semuanya dengan status naik.

Membersihkan sumber daya

Sumber daya yang dibuat dalam tutorial ini memengaruhi tagihan Azure Anda. Jika Anda tidak akan menggunakan layanan ini dalam jangka panjang, jalankan perintah berikut untuk menghapus semuanya yang dibuat dalam tutorial ini.

az group delete --resource-group $RESOURCE_GROUP