Aracılığıyla paylaş


Öğretici: Azure Container Apps'te yüksek oranda kullanılabilir eureka sunucu bileşeni kümesi oluşturma

Bu öğreticide, hatalar ve yüksek talep karşısında çalışır durumda kalmak üzere tasarlanmış bir Eureka hizmeti oluşturmayı öğreneceksiniz. Yüksek oranda kullanılabilir bir Eureka hizmeti oluşturmak, Azure Container Apps için kullandığınız hizmet kayıt defterinin talep ne olursa olsun istemciler tarafından her zaman kullanılabilir olmasını sağlamaya yardımcı olur.

Eureka için yüksek kullanılabilirlik durumu elde etmek, birden çok Eureka sunucu örneğinin bir küme oluşturması için birbirine bağlanmayı içerir. Küme, bir Eureka sunucusu başarısız olursa diğer hizmetlerin istekler için kullanılabilir durumda kalması için kaynaklar sağlar.

Bu öğreticide şunları yaptınız:

  • Spring bileşenleri için Eureka sunucuları oluşturun.
  • Spring bileşenleri için iki Eureka sunucusunu bir kümeye bağlayın.
  • Yüksek oranda kullanılabilir hizmet bulma için bir kapsayıcı uygulamasını her iki Eureka sunucusuna da bağlayın.

Önkoşullar

Dikkat edilmesi gereken noktalar

Container Apps'te yönetilen Java bileşenlerini çalıştırdığınızda aşağıdaki ayrıntılara dikkat edin:

Kalem Açıklama
Kapsam Bileşenler, bağlı kapsayıcı uygulamasıyla aynı ortamda çalışır.
Ölçeklendirme Bileşenler ölçeklendirilemiyor. Ölçeklendirme özellikleri minReplicas ve maxReplicas her ikisi de olarak 1ayarlanır.
Kaynaklar Bileşenler için kapsayıcı kaynak ayırması düzeltildi. CPU çekirdeği sayısı 0,5, bellek boyutu ise 1 GB'tır.
Fiyatlandırma Bileşen faturalaması tüketime dayalı fiyatlandırmanın altındadır. Yönetilen bileşenler tarafından kullanılan kaynaklar, kaynak kullanımına bağlı olarak etkin veya boşta kalma fiyatlarına göre faturalandırılır. Faturalamayı durdurmak için artık kullanımda olmayan bileşenleri silebilirsiniz.
Bağlama Kapsayıcı uygulamaları bağlama yoluyla bir bileşene bağlanır. Bağlamalar, yapılandırmaları kapsayıcı uygulaması ortam değişkenlerine ekler. Bağlama oluşturulduktan sonra kapsayıcı uygulaması ortam değişkenlerinden yapılandırma değerlerini okuyabilir ve bileşene bağlanabilir.

İlk kaynakları ayarlama

Eureka hizmet kümeniz için ihtiyacınız olan bazı kaynakları oluşturmak için aşağıdaki adımları kullanın.

  1. Uygulama yapılandırma değerlerini barındıran değişkenler oluşturun.

    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. Azure'da oturum açmak için Azure CLI'yi kullanın.

    az login
    
  3. Kaynak grubu oluşturun.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Container Apps ortamınızı oluşturun.

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

Küme için sunucu oluşturma

Spring bileşenleri için iki Eureka Sunucusu oluşturun.

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

Küme oluşturmak için bileşenleri birbirine bağlama

Eureka sunucularının yüksek kullanılabilirlik yapılandırmasında çalışması için küme olarak birbirine bağlanması gerekir.

  1. İlk Eureka sunucusunu ikinciye bağlayın.

    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. İkinci Eureka sunucusunu birinci sunucuya bağlayın.

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

Uygulamayı dağıtma ve bağlama

Sunucu bileşenleri birbirine bağlı olduğunda kapsayıcı uygulamasını oluşturabilir ve iki Eureka bileşenine bağlayabilirsiniz.

  1. Kapsayıcı uygulamasını oluşturun.

    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. Kapsayıcı uygulamasını ilk Eureka sunucu bileşenine bağlayın.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_FIRST 
    
  3. Kapsayıcı uygulamasını ikinci Eureka sunucu bileşenine bağlayın.

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

Panoyu görüntüleme

Önemli

Spring dashboard'ını görüntülemek için Eureka Sunucusu'nun, Çevre Uygulamaları kaynağı için hesabınıza Microsoft.App/managedEnvironments/write, Owner veya Contributor rolünün atanmış olması gerekir.

  • Bu rollerden birine zaten sahipseniz, URL'yi almak ve panoyu görüntülemek için Pano URL'sini alma bölümüne atlayın.
  • Özel bir rol tanımı oluşturmak ve bunu hesabınıza atamak istiyorsanız, aşağıdaki özel rol oluşturma ve atama bölümündeki adımları izleyin.
  • Hesabınıza kaynağın Owner veya Contributor rolünü atamak istiyorsanız, bu atamayı yapın ve pano URL'sini alma bölümüne atlayın.

Özel rol oluşturma ve atama

  1. Özel rol tanımını oluşturun. Bu komutu çalıştırmadan önce, AssignableScopes içindeki yer tutucuyu abonelik kimliğiniz ile değiştirin.

    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. Container Apps ortamının kaynak kimliğini alın.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Container Apps ortam kaynağı için hesabınıza özel rolü atayın. Bu komutu çalıştırmadan önce, değerdeki yer tutucuyu assignee kullanıcı nesne kimliğiniz veya hizmet sorumlusu kimliğiniz ile değiştirin.

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

Pano URL'sini alma

Spring için Eureka Server panosunun URL'sini alın.

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

Bu komut, Spring için Eureka Server panosuna erişmek için kullanabileceğiniz URL'yi döndürür. Pano aracılığıyla Eureka sunucu kurulumunun iki çoğaltmadan oluştuğunu doğrulayabilirsiniz.

Spring panosu için Eureka'nın ekran görüntüsü. Kayıtlı örnekler bölümünde bir kapsayıcı uygulaması ve durumu yukarı olan iki Eureka sunucusu listelenir.

Kaynakları temizleme

Bu öğreticide oluşturulan kaynaklar Azure faturanızı etkiler. Bu hizmetleri uzun vadede kullanmayacaksanız, bu öğreticide oluşturulan her şeyi kaldırmak için aşağıdaki komutu çalıştırın.

az group delete --resource-group $RESOURCE_GROUP