Öğ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 1 ayarlanı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.
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"
Azure CLI ile Azure'da oturum açın.
az login
Kaynak grubu oluşturun.
az group create --name $RESOURCE_GROUP --location $LOCATION
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.
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.
İ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
İ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.
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
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
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.
Ö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 tutucuyuAssignableScopes
abonelik kimliğiniz ile değiştirdiğinden emin olun.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)
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
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.
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