Öğ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 için tasarlanmış bir Eureka hizmeti oluşturmayı öğreneceksiniz. Yüksek oranda kullanılabilir bir Eureka hizmeti oluşturmak, hizmet kayıt defterinin talep ne olursa olsun istemciler tarafından her zaman kullanılabilir olmasını sağlar.

Eureka için yüksek kullanılabilirlik durumu elde etmek, birden çok Eureka sunucu örneğini birbirine bağlayarak küme oluşturmayı 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 bir Eureka sunucusu 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 her iki Eureka sunucusuna da uygulama bağlayın.

Önkoşullar

Bu projeyi tamamlamak için aşağıdaki öğeler gerekir:

Gereksinim Yönergeler
Azure hesabı Etkin bir abonelik gereklidir. Kuruluşunuz yoksa şimdi ücretsiz olarak bir tane oluşturabilirsiniz.
Azure CLI Azure CLI’yi yükleyin.

Dikkat edilmesi gereken noktalar

Yönetilen Java bileşenlerini Azure Container Apps'te çalıştırırken aşağıdaki ayrıntılara dikkat edin:

Kalem Açıklama
Scope Bileşenler, bağlı kapsayıcı uygulamasıyla aynı ortamda çalışır.
Ölçeklendirme Bileşen ö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 çekirdeklerinin sayısı 0,5, bellek boyutu ise 1Gi'dir.
Fiyatlandırma Bileşen faturalaması tüketime dayalı fiyatlandırmanın altındadır. Yönetilen bileşenler tarafından kullanılan kaynaklar etkin/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.

Ayarlama

Eureka hizmet kümenizi 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 CLI ile Azure'da oturum açı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 oluşturma

Ardından iki Eureka sunucu örneği oluşturun ve bunları küme olarak birbirine bağlayın.

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

Bileşenleri birbirine bağlama

Eureka sunucularının yüksek kullanılabilirlik yapılandırmasında çalışması için bunların 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
    

Panoları görüntüleme

Önemli

Panoyu görüntülemek için en azından yönetilen ortam kaynağında Microsoft.App/managedEnvironments/write hesabınıza atanmış rolün olması gerekir. Kaynağa açıkça veya Contributor rol atayabilir Owner ya da özel bir rol tanımı oluşturup bunu hesabınıza atamak için adımları izleyebilirsiniz.

  1. Özel rol tanımını oluşturun.

    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>"]
    }'
    

    Değerdeki köşeli ayraçlar arasındaki <> yer tutucuyu AssignableScopes abonelik kimliğiniz ile değiştirdiğinden emin olun.

  2. Yönetilen ortam kaynağındaki hesabınıza özel rolü atayın.

    Yönetilen ortamın kaynak kimliğini alın.

    export ENVIRONMENT_ID=$(az containerapp env show \
      --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
      --query id -o tsv)
    
  3. Rolü hesabınıza atayın.

    Bu komutu çalıştırmadan önce köşeli ayraçlar arasındaki yer tutucuyu <> kullanıcı 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
    
  4. 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 -o 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 için yüksek oranda kullanılabilir Eureka Server panosunun ekran görüntüsü.

Kaynakları temizleme

Bu öğreticide oluşturulan kaynakların Azure faturanız üzerinde etkisi vardır. Bu hizmetleri uzun süreli 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

Sonraki adımlar