Aracılığıyla paylaş


Azure Sanal Makine Ölçek Kümesi aracıları

Azure DevOps Services

Bundan sonra ölçek kümesi aracıları olarak adlandırılan Azure Sanal Makine Ölçek Kümesi aracıları, taleplerinizi karşılamak için otomatik olarak ölçeklendirilebilen şirket içinde barındırılan aracıların bir biçimidir. Bu esneklik, ayrılmış aracıları sürekli çalıştırma gereksiniminizi azaltır. Microsoft tarafından barındırılan aracılardan farklı olarak aracıların üzerinde çalıştığı makinelerin boyutu ve görüntüsü üzerinde de esnekliğe sahip olursunuz.

İpucu

Yönetilen DevOps Havuzları, Azure DevOps Sanal Makine Ölçek Kümesi aracı havuzlarının evrimi olan ve özel havuzların ölçeklenebilirliğini ve güvenilirliğini artırarak özel havuz oluşturmayı daha da basitleştiren yeni bir hizmettir. Yönetilen DevOps Havuzları, Azure DevOps Sanal Makine Ölçek Kümesi aracı havuzlarını kullanırken olduğu gibi aracıları destekleyen sanal makinelerin veya kapsayıcıların kendi Azure aboneliğinizde değil Microsoft Azure aboneliğinde yaşadığı tam olarak yönetilen bir hizmettir. Daha fazla bilgi için Yönetilen DevOps Havuzları belgelerine bakın.

Microsoft tarafından barındırılan aracıları seviyorsanız ancak sundukları ile sınırlıysa ölçek kümesi aracılarını göz önünde bulundurmanız gerekir. Burada bazı örnekler verilmiştir:

  • Microsoft tarafından barındırılan yerel aracılarda sunduğumuzdan daha fazla belleğe, işlemciye, daha fazla depolama alanına veya daha fazla GÇ'ye ihtiyacınız vardır.
  • Makine öğrenmesi için belirli yönerge kümelerine sahip bir NCv2 sanal makinesine ihtiyacınız var.
  • Gelen bağlantısı olmayan bir özel sanal ağdaki özel Azure App Service'e dağıtım yapmanız gerekiyor.
  • Microsoft tarafından barındırılan aracıların sunucularınızla iletişim kurabilmesi için şirket güvenlik duvarını belirli IP adreslerine açmanız gerekir.
  • Aracı makinelerin ağ bağlantısını kısıtlamanız ve yalnızca onaylanan sitelere ulaşmalarına izin vermeniz gerekir.
  • Microsoft'tan ihtiyaçlarınızı karşılamaya yetecek kadar aracı alamıyorsunuz.
  • İşleriniz Microsoft tarafından barındırılan aracının zaman aşımı süresini aşıyor.
  • Microsoft tarafından barındırılan paralel işleri kuruluşunuzdaki tek tek projelere veya ekiplere bölümleyemezsiniz.
  • Artımlı kaynak ve makine düzeyinde paket önbelleklerinin avantajından yararlanmak için aracıda birkaç ardışık iş çalıştırmak istiyorsunuz.
  • Bir aracı işleri kabul etmeye başlamadan önce yapılandırmayı veya önbellek ısınmasını çalıştırmak istiyorsunuz.

Şirket içinde barındırılan aracıları seviyor ancak yönetmeyi basitleştirebiliyorsanız ölçek kümesi aracılarını göz önünde bulundurmanız gerekir. Burada bazı örnekler verilmiştir:

  • Ayrılmış aracıları 24 saat çalıştırmak istemiyorsunuz. İşleri çalıştırmak için kullanılmayan aracı makinelerinin sağlamasını kaldırmak istiyorsunuz.
  • İşlem hattınızda güvenilmeyen kod çalıştırıyor ve her işten sonra aracı makinelerinin görüntüsünü yeniden oluşturmak istiyorsunuz.
  • Aracılarınız için temel görüntüyü düzenli aralıklarla güncelleştirmeyi basitleştirmek istiyorsunuz.

Not

  • Ölçek kümelerini kullanarak Mac aracılarını çalıştıramazsınız. Windows veya Linux aracılarını yalnızca bu şekilde çalıştırabilirsiniz.

  • Azure DevOps Services için Sanal Makine Ölçek Kümeleri aracı havuzlarının kullanılması yalnızca Azure Genel (genel hizmet) bulutu için desteklenir. Şu anda Sanal Makine Ölçek Kümeleri aracı havuzları diğer ulusal bulut tekliflerini desteklememektedir.

  • Sanal makine ölçek kümelerini birden çok havuzla ilişkilendirmemelisiniz.

Ölçek kümesini oluşturma

Ölçek kümesi aracıları oluşturmaya hazırlanırken, önce Azure portalında bir Sanal Makine Ölçek Kümesi oluşturmanız gerekir. Azure Pipelines'ın yönetebilmesi için Sanal Makine Ölçek Kümesi'ni belirli bir şekilde oluşturmanız gerekir. Özellikle, Azure Pipelines'ın gelen işlem hattı işlerinin sayısına göre ölçeklendirmeyi nasıl gerçekleştireceğini belirleyebilmesi için otomatik ölçeklendirmeyi devre dışı bırakmanız gerekir. Ölçek kümesini oluşturmak için aşağıdaki adımları kullanmanızı öneririz.

Aşağıdaki örnekte, UbuntuLTS VM görüntüsü kullanılarak Azure Cloud Shell ile yeni bir kaynak grubu ve Sanal Makine Ölçek Kümesi oluşturulur.

Not

Bu örnekte, ölçek kümesi için UbuntuLTS VM görüntüsü kullanılır. Aracınızın temeli olarak özelleştirilmiş bir VM görüntüsüne ihtiyacınız varsa, özel görüntü, yazılım veya disk boyutuyla ölçek kümesi oluşturma bölümündeki adımları izleyerek ölçek kümesini oluşturmadan önce özelleştirilmiş görüntüyü oluşturun.

  1. adresinden Azure Cloud Shell'e https://shell.azure.com/göz atın.

  2. Varsayılan Azure aboneliğinizi doğrulamak için aşağıdaki komutu çalıştırın.

    az account list -o table
    

    İstediğiniz abonelik varsayılan olarak listelenmiyorsa, istediğiniz aboneliği seçin.

    az account set -s <your subscription ID>
    
  3. Sanal Makine Ölçek Kümeniz için bir kaynak grubu oluşturun.

    az group create \
    --location westus \
    --name vmssagents
    
  4. Kaynak grubunuzda bir Sanal Makine Ölçek Kümesi oluşturun. Bu örnekte Ubuntu2204 VM görüntüsü belirtilmiştir.

    az vmss create \
    --name vmssagentspool \
    --resource-group vmssagents \
    --image Ubuntu2204 \
    --vm-sku Standard_D2_v4 \
    --storage-sku StandardSSD_LRS \
    --authentication-type SSH \
    --generate-ssh-keys \
    --instance-count 2 \
    --disable-overprovision \
    --upgrade-policy-mode manual \
    --single-placement-group false \
    --platform-fault-domain-count 1 \
    --load-balancer "" \
    --orchestration-mode Uniform
    

    Not

    Azure Pipelines, ölçek kümesi fazla sağlamayı ve otomatik ölçeklendirmeyi desteklemez. Ölçek kümeniz için her iki özelliğin de devre dışı bırakıldığından emin olun.

    Ölçek kümesini Azure Pipelines yönettiğinden aşağıdaki ayarlar gereklidir veya önerilir:

    • --disable-overprovision -Gerekli
    • --upgrade-policy-mode manual -Gerekli
    • --load-balancer "" - Azure Pipelines işleri ölçek kümesi aracı havuzundaki aracılara yönlendirmek için yük dengeleyici gerektirmez, ancak yük dengeleyici yapılandırmak, güvenlik duvarı kuralları için kullanabileceğiniz ölçek kümesi aracılarınızın IP adresini alma yollarından biridir. Ölçek kümesi aracılarınız için IP adresi almak için bir diğer seçenek de ölçek kümenizi seçenekleri kullanarak --public-ip-address oluşturmaktır. Ölçek kümenizi yük dengeleyici veya genel IP adresiyle yapılandırma hakkında daha fazla bilgi için Sanal Makine Ölçek Kümeleri belgelerine ve az vmss create bölümüne bakın.
    • --instance-count 2 - bu ayar gerekli değildir, ancak bir aracı havuzu oluşturmadan önce ölçek kümesinin tamamen işlevsel olduğunu doğrulama fırsatı verir. İki VM'nin oluşturulması birkaç dakika sürebilir. Daha sonra aracı havuzunu oluşturduğunuzda Azure Pipelines bu iki VM'yi siler ve yenilerini oluşturur.

    Önemli

    Bu betiği Windows üzerinde Azure CLI kullanarak çalıştırırsanız, içindekini "" --load-balancer "" aşağıdaki gibi tek tırnak içine almanız gerekir: --load-balancer '""'

    VM boyutunuz Kısa Ömürlü işletim sistemi disklerini destekliyorsa, Kısa Ömürlü işletim sistemi disklerini etkinleştirmek için aşağıdaki parametreler isteğe bağlıdır ancak sanal makine yeniden oluşturma sürelerini geliştirmek için önerilir.

    • --ephemeral-os-disk true
    • --os-disk-caching readonly

    Önemli

    Kısa ömürlü işletim sistemi diskleri tüm VM boyutlarında desteklenmez. Desteklenen VM boyutlarının listesi için bkz . Azure VM'leri için kısa ömürlü işletim sistemi diskleri.

    Ölçek kümesini oluşturmak için Azure Market veya kendi özel görüntünüzden herhangi bir Linux veya Windows görüntüsünü seçin. Görüntüde Azure Pipelines aracısını önceden yüklemeyin. Azure Pipelines, aracıyı yeni sanal makineler sağladığından otomatik olarak yükler. Yukarıdaki örnekte düz UbuntuLTS bir görüntü kullandık. Özel görüntü oluşturma ve kullanma yönergeleri için bkz . SSS.

    Herhangi bir VM SKU'su ve depolama SKU'su seçin.

    Not

    Lisanslama konusunda dikkat edilmesi gerekenler, Microsoft tarafından barındırılan görüntüleri dağıtmamızı kısıtlar. Ölçek kümesi aracılarınızda kullanmanız için bu görüntüleri sağlayamıyoruz. Ancak bu görüntüleri oluşturmak için kullandığımız betikler açık kaynak. Bu betikleri kullanabilir ve kendi özel görüntülerinizi oluşturabilirsiniz.

  5. Ölçek kümenizi oluşturduktan sonra Azure portalında ölçek kümenize gidin ve aşağıdaki ayarları doğrulayın:

    • Yükseltme ilkesi - El ile

      Yükseltme ilkesini doğrulayın.

      Aşağıdaki Azure CLI komutunu çalıştırarak da bu ayarı doğrulayabilirsiniz.

      az vmss show --resource-group vmssagents --name vmssagentspool --output table
      
      Name            ResourceGroup    Location    Zones    Capacity    Overprovision    UpgradePolicy
      --------------  ---------------  ----------  -------  ----------  ---------------  ---------------
      vmssagentspool  vmssagents       westus               0           False            Manual
      
    • Ölçeklendirme - El ile ölçeklendirme

      El ile ölçeklendirme ilkesini doğrulayın.

Önemli

Azure Pipelines örnek korumasını desteklemez. Ölçek daraltma ve ölçek kümesi eylemleri örnek korumalarının devre dışı bırakıldıklarından emin olun.

Düzenleme modları

Azure sanal makine ölçek kümeleri iki düzenleme moduyla yapılandırılabilir: Tekdüzen ve Esnek. Tekdüzen düzenleme modu için Azure Pipelines desteği genel olarak tüm müşteriler tarafından kullanılabilir.

Esnek düzenleme modu, Azure Pipelines'ın birden çok ölçek kümesi işlemini paralel olarak kuyruğa almalarını sağlar. Esnek düzenleme için Azure Pipelines desteği istek üzerine kullanılabilir ve değerlendirmeye tabidir. Müşterilerin kullanım düzenlerinin bundan önemli bir fayda sağladığını belirtmesi gerekir. Bu tür müşterilerin büyük ölçek kümeleri vardır, birden çok iş için aracıları yeniden kullanmaz, birden çok, kısa ömürlü işi paralel olarak çalıştırır ve yalnızca sanal makinelerinde kısa ömürlü diskler kullanır. Bu özelliği kullanmak isterseniz destek ekibimize ulaşın.

Ölçek kümesi aracı havuzunu oluşturma

  1. Azure DevOps Projesi ayarlarınıza gidin, İşlem Hatları'nın altında Aracı havuzları'nı seçin ve havuz ekle'yi seçerek yeni bir aracı havuzu oluşturun.

    Aracı havuzu oluşturma.

    Önemli

    Ölçek kümesi havuzunuzu Project ayarlarında veya Kuruluş ayarlarında oluşturabilirsiniz, ancak bir ölçek kümesi havuzunu sildiğinizde, bunu Project ayarlarından değil Kuruluş ayarlarından silmeniz gerekir.

  2. Havuz türü için Azure Sanal Makine Ölçek Kümesi'ni seçin. Ölçek kümesini içeren Azure aboneliğini seçin, Yetkilendir'i seçin ve bu abonelikten istediğiniz Sanal Makine Ölçek Kümesi'ni seçin. Mevcut bir hizmet bağlantınız varsa, bunu abonelik yerine listeden seçebilirsiniz.

    Önemli

    • Ölçek kümesi aracı havuzunu yapılandırmak için, seçili abonelikte Sahip veya Kullanıcı Erişimi Yöneticisi izinlerine sahip olmanız gerekir. Bu izinlerden birine sahipseniz ancak Yetki ver'i seçtiğinizde hata alırsanız sorun giderme bölümüne bakın.

    • Şu anda desteklenen tek hizmet bağlantısı, hizmet sorumlusu anahtarına dayalı bir Azure Resource Manager (ARM) hizmet bağlantısıdır. Sertifika kimlik bilgilerine veya Yönetilen Kimliğe dayalı ARM hizmeti bağlantıları başarısız olur. Aboneliğinizdeki mevcut ölçek kümelerini listelemeye çalıştığınızda aşağıdaki gibi bir hata görürsünüz:

      Invalid Service Endpoint with Id <guid> and Scope <guid>

  3. Bu abonelikten istediğiniz Sanal Makine Ölçek Kümesini seçin.

  4. Aracı havuzunuz için bir ad belirtin.

  5. Aşağıdaki seçenekleri yapılandırın:

    • Her kullanımdan sonra sanal makineleri otomatik olarak yok edin - Her iş için yeni bir VM örneği kullanılır. Vm bir işi çalıştırdıktan sonra çevrimdışı olur ve başka bir iş almadan önce yeniden oluşturulur.
    • İyi durumda olmayan bir aracıyı araştırma için kaydetme - İyi durumda olmayan aracı VM'lerini silmek yerine sorun giderme için kaydedip kaydetmeyebilirsiniz.
    • Ölçek kümesindeki en fazla sanal makine sayısı - Azure Pipelines aracı sayısının ölçeğini otomatik olarak genişletecek, ancak bu sınırı aşmayacaktır.
    • Beklemede tutulacak aracı sayısı - Azure Pipelines aracı sayısına otomatik olarak ölçeklendirilir, ancak yeni işleri çalıştırmak için her zaman bu kadar çok aracı olmasını sağlar. Beklemede kalacak aracı sayısı değerini 0 olarak ayarlarsanız (örneğin, düşük hacimli işlerin maliyetini korumak için) Azure Pipelines vm'yi yalnızca işi olduğunda başlatır.
    • Fazla boştaki aracıları silmeden önce dakika cinsinden gecikme - Gün boyunca derleme yükündeki değişkenliği hesaba katmak için, Azure Pipelines fazla boştaki aracıyı silmeden önce belirtilen süreyi bekler.
    • VM'leri etkileşimli testler çalıştıracak şekilde yapılandırma (Yalnızca Windows Server işletim sistemi) - Windows aracıları otomatik oturum açma ile ve etkileşimli kullanıcı arabirimiyle birlikte çalıştırılacak şekilde yapılandırılabilir veya yükseltilmiş izinlerle çalışacak şekilde yapılandırılabilir. Etkileşimli kullanıcı arabirimiyle unelevated çalıştırmak için bu kutuyu işaretleyin. Her iki durumda da aracı kullanıcısı Yöneticiler grubunun bir üyesidir.
  6. Ayarlarınız yapılandırıldığında, aracı havuzunu oluşturmak için Oluştur'u seçin.

Ölçek kümesi aracı havuzunu kullanma

Ölçek kümesi aracı havuzu kullanmak diğer aracı havuzlarına benzer. Bunu klasik derleme, yayın veya YAML işlem hatlarında kullanabilirsiniz. Kullanıcı izinleri, işlem hattı izinleri, onaylar ve diğer denetimler diğer aracı havuzlarında olduğu gibi çalışır. Daha fazla bilgi için bkz . Aracı havuzları.

Önemli

Doğrudan Azure portalında ölçek kümesinde değişiklik yaparken dikkatli olunmalıdır.

  • Azure portalında ölçek kümesi yapılandırma ayarlarının çoğunu değiştiremezsiniz. Azure Pipelines ölçek kümesinin yapılandırmasını güncelleştirir. Ölçek kümesinde el ile yaptığınız tüm değişiklikler Azure Pipelines'ın çalışmasını etkileyebilir.
  • Önce Azure Pipelines'da ölçek kümesi havuzunu silmeden bir ölçek kümesini yeniden adlandıramaz veya silemezsiniz.

Azure Pipelines ölçek kümesini nasıl yönetir?

Ölçek kümesi aracı havuzu oluşturulduktan sonra Azure Pipelines aracı makinelerini otomatik olarak ölçeklendirir.

Azure Pipelines, havuzdaki aracıların durumunu ve ölçek kümesindeki sanal makinelerin durumunu 5 dakikada bir örneklemektedir. Ölçeği daraltma veya genişletme kararı, o sırada boşta olan aracıların sayısına bağlıdır. Bir aracı çevrimiçiyse ve bir işlem hattı işi çalıştırmıyorsa boşta olarak kabul edilir. Aşağıdaki koşullardan biri karşılanırsa Azure Pipelines bir ölçek genişletme işlemi gerçekleştirir:

  • Boşta olan aracı sayısı, belirttiğiniz bekleme aracılarının sayısının altına düşer
  • Kuyrukta bekleyen işlem hattı işlerine hizmet vermek için boşta aracı yok

Bu koşullardan biri karşılanırsa Azure Pipelines, VM sayısını artırır. Ölçeği genişletme işlemi, havuz boyutu üst sınırının belirli bir yüzdesinin artışlarıyla gerçekleştirilir. Her adım için makinelerin oluşturulması için 20 dakika izin verin.

Azure Pipelines, boştaki aracı sayısı bekleme sayısını 30 dakikadan fazla aştığında aracılarda ölçeklendirilir (fazla boştaki aracıları silmeden önce dakika cinsinden gecikme kullanılarak yapılandırılabilir).

Bunların tümünü bir örneğe koymak için, iki hazır bekleyen aracı ve dört maksimum aracı ile yapılandırılmış bir ölçek kümesi aracı havuzu düşünün. Her kullanımdan sonra VM'yi yıkmak istediğinizi varsayalım. Ayrıca, ölçek kümesinde başlangıç olarak kullanılabilecek VM olmadığını varsayalım.

  • Boşta aracı sayısı 0 olduğundan ve boşta aracı sayısı 2 olan bekleme sayısının altında olduğundan Azure Pipelines ölçeği genişletir ve ölçek kümesine iki VM ekler. Bu aracılar çevrimiçi olduktan sonra iki boşta aracı olacaktır.

  • Bir işlem hattı işinin geldiğini ve aracılardan birine ayrıldığını varsayalım.

  • Şu anda boşta olan aracıların sayısı 1'dir ve bu, bekleme sayısı olan 2'den azdır. Bu nedenle Azure Pipelines ölçeği genişleterek 2 VM daha ekler (bu örnekte kullanılan artım boyutu). Şu anda havuzda üç boşta aracı ve bir meşgul aracısı vardır.

  • İlk aracıdaki işin tamamlandığını söyleyelim. Azure Pipelines bu aracıyı çevrimdışına alarak makineyi yeniden oluşturur. Birkaç dakika sonra yeni bir görüntüyle geri gelir. Şu anda dört boşta aracımız olacak.

  • 30 dakika boyunca başka bir iş gelmezse (fazla boştaki aracıları silmeden önce dakika cinsinden gecikme kullanılarak yapılandırılabilir), Azure Pipelines gerekenden daha fazla boşta aracı olduğunu belirler. Bu nedenle havuzda iki aracıya ölçeklendirilir.

Bu işlem boyunca Azure Pipelines'ın hedefi beklemede istenen boşta aracı sayısına ulaşmaktır. Havuzların ölçeği yavaş yavaş genişletilir ve daraltılır. Bir gün boyunca, istekler sabah kuyruğa alındıkçe havuzun ölçeği genişletilir ve akşam yük azalırken ölçeği daraltılır. Azure Pipelines belirttiğiniz kısıtlamalara aşamalı olarak yakınsadığı için beklenen, çeşitli zamanlarda istediğinizden daha fazla boşta aracı gözlemleyebilirsiniz.

Not

Azure Pipelines'ın sanal makinelerde ölçeği genişletmesi veya ölçeği genişletmesi bir saat veya daha fazla sürebilir. Azure Pipelines adım adım ölçeği genişletecek, hataların işlemlerini izleyecek ve kullanılamayan makineleri silerek ve zaman içinde yenilerini oluşturarak tepki verecek. Bu düzeltme işlemi bir saatten fazla sürebilir.

En yüksek kararlılığa ulaşmak için ölçek kümesi işlemleri sırayla gerçekleştirilir. Örneğin, havuzun ölçeğinin genişletilmesi gerekiyorsa ve silinecek iyi durumda olmayan makineler varsa, Azure Pipelines önce havuzun ölçeğini genişletecektir. Havuz beklemede istenen boşta aracı sayısına ulaşmak için ölçeği genişlettikten sonra, İyi durumda olmayan bir aracıyı araştırma için kaydet ayarına bağlı olarak iyi durumda olmayan makineler silinir. Daha fazla bilgi için bkz . İyi durumda olmayan aracılar.

Örnekleme boyutu 5 dakika olduğundan, tüm aracılar kısa bir süre için işlem hatlarını çalıştırabilir ve ölçeği genişletme gerçekleşmez.

İşlem Hattı Aracı Yapılandırmasını Özelleştirme

Ölçek kümeniz için işletim sistemi özel görüntünüzde ortam değişkenleri tanımlayarak Azure Pipelines Aracısı'nın yapılandırmasını özelleştirebilirsiniz. Örneğin, ölçek kümesi aracısı çalışma dizini varsayılan olarak Windows için C:\a ve Linux için /agent/_work olarak ayarlanır. Çalışma dizinini değiştirmek istiyorsanız, istenen çalışma diziniyle VSTS_AGENT_INPUT_WORK adlı bir ortam değişkeni ayarlayın. İşlem Hatları Aracısı Katılımsız Yapılandırma belgelerinde daha fazla bilgi bulunabilir. Bazı Örnekler:

  • VSTS_AGENT_INPUT_WORK
  • VSTS_AGENT_INPUT_PROXYURL
  • VSTS_AGENT_INPUT_PROXYUSERNAME
  • VSTS_AGENT_INPUT_PROXYPASSWORD

Önemli

İşlem Hatları aracısını özelleştirirken dikkatli olunmalıdır. Bazı ayarlar diğer gerekli ayarlarla çakışarak aracının kaydedilememesine ve VM'nin silinmesine neden olur. Bu ayarlar ayarlanmamalı veya değiştirilmemelidir:

  • VSTS_AGENT_INPUT_URL
  • VSTS_AGENT_INPUT_AUTH
  • VSTS_AGENT_INPUT_TOKEN
  • VSTS_AGENT_INPUT_USERNAME
  • VSTS_AGENT_INPUT_PASSWORD
  • VSTS_AGENT_INPUT_POOL
  • VSTS_AGENT_INPUT_AGENT
  • VSTS_AGENT_INPUT_RUNASSERVICE
  • ... ve Dağıtım Grupları ile ilgili her şeyi.

Özel Betik Uzantısı aracılığıyla Sanal Makine Başlatmayı Özelleştirme

Kullanıcılar, bu makineler işlem hattı işlerini çalıştırmaya başlamadan önce ölçek kümesi aracı makinelerinde başlangıç betikleri yürütmek isteyebilir. Başlangıç betikleri için bazı yaygın kullanım örnekleri arasında yazılım yükleme, önbellekleri ısıtma veya depoları getirme sayılabilir. Windows için Özel Betik Uzantısı'nı veya Linux için Özel Betik Uzantısı'nı yükleyerek başlangıç betiklerini yürütebilirsiniz.

Bu uzantı, oluşturulduktan veya yeniden oluşturulduktan hemen sonra ölçek kümesindeki tüm sanal makinelerde yürütülür. Azure Pipelines aracı uzantısı yürütülmeden önce özel betik uzantısı yürütülür.

Linux için özel betik uzantısı oluşturmaya yönelik bir örnek aşağıda verilmiştır.

az vmss extension set \
--vmss-name <scaleset name> \
--resource-group <resource group> \
--name CustomScript \
--version 2.0 \
--publisher Microsoft.Azure.Extensions \
--settings '{ \"fileUris\":[\"https://<myGitHubRepoUrl>/myScript.sh\"], \"commandToExecute\": \"bash ./myScript.sh /myArgs \" }'

Aşağıda, Windows için özel betik uzantısı oluşturmaya yönelik bir örnek verilmiştır.

az vmss extension set \
--vmss-name <scaleset name> \
--resource-group <resource group> \
--name CustomScriptExtension \
--version 1.9 \
--publisher Microsoft.Compute \
--settings '{ \"FileUris\":[\"https://<myGitHubRepoUrl>/myscript.ps1\"], \"commandToExecute\": \"Powershell.exe -ExecutionPolicy Unrestricted -File myscript.ps1 -myargs 0 \" }'

Önemli

Vm'nin VM oluşturma işlemini tamamlaması için Özel Betik Uzantısı'nda yürütülen betiklerin çıkış kodu 0 ile döndürülmesi gerekir. Özel betik uzantısı bir özel durum oluşturursa veya sıfır olmayan bir çıkış kodu döndürürse, Azure Pipeline uzantısı yürütülmeyecek ve VM Azure DevOps aracı havuzuna kaydedilmez.

Uzantınız tüm VM kaynakları sağlanmadan önce çalışır ve bu durumda "temel önkoşullar yüklenemedi" hatasına benzer bir hata görürsünüz. Betiğinizin başına bir sleep komut ekleyerek (örneğin, sleep 30) bunu düzeltebilirsiniz.

Ölçek Kümesi Aracısı Yaşam Döngüsü

Azure Pipelines Sanal Makine Ölçek Kümesi Aracısı için işlem akışı aşağıdadır

  1. Azure DevOps Ölçek Kümesi Aracı Havuzu boyutlandırma işi, havuzda çok az boşta aracı olduğunu ve ölçeği genişletmesi gerektiğini belirler. Azure Pipelines, ölçek kümesi kapasitesini artırmak için Azure Ölçek Kümeleri'ne bir çağrı yapar.

  2. Azure Ölçek Kümesi yeni sanal makineleri oluşturmaya başlar. Sanal makineler çalıştırıldıktan sonra, Azure Ölçek Kümeleri yüklü vm uzantılarını sıralı olarak yürütür.

  3. Özel Betik Uzantısı yüklüyse, Azure Pipelines Aracısı uzantısından önce yürütülür. Özel Betik Uzantısı sıfır olmayan bir çıkış kodu döndürürse, VM oluşturma işlemi durdurulup silinir.

  4. Azure Pipelines Aracısı uzantısı yürütülür. Bu uzantı, Azure Pipelines Aracısı'nın en son sürümünü ve yapılandırma betiğinin en son sürümünü indirir. Yapılandırma betikleri aşağıdaki biçimlere sahip URL'lerde bulunabilir:

    • Linux: https://vstsagenttools.blob.core.windows.net/tools/ElasticPools/Linux/<script_version>/enableagent.sh, örneğin, sürüm 15
    • Windows: https://vstsagenttools.blob.core.windows.net/tools/ElasticPools/Windows/<script_version>/enableagent.ps1, örneğin, sürüm 17
  5. Yapılandırma betiği, işletim sistemi Windows Server veya Linux ise adlı AzDevOps bir yerel kullanıcı oluşturur. Windows 10 İstemci İşletim Sistemi için aracı LocalSystem olarak çalışır. Betik daha sonra Azure Pipelines Aracısı'nı çözüyor, yüklüyor ve yapılandırıyor. Yapılandırmanın bir parçası olarak aracı, Azure DevOps aracı havuzuna kaydolup Aracı havuzu listesinde Çevrimdışı durumda görünür.

  6. Çoğu senaryoda, yapılandırma betiği aracıyı yerel kullanıcı AzDevOpsolarak çalışacak şekilde hemen başlatır. Aracı Çevrimiçi olur ve işlem hattı işlerini çalıştırmaya hazırdır.

    Havuz etkileşimli kullanıcı arabirimi için yapılandırılmışsa, aracı yapılandırıldıktan sonra sanal makine yeniden başlatılır. Yeniden başlatmadan sonra yerel kullanıcı otomatik olarak oturum açar ve işlem hatları aracısı başlatılır. Ardından aracı çevrimiçi olur ve işlem hattı işlerini çalıştırmaya hazırdır.

Özel görüntü, yazılım veya disk boyutuyla ölçek kümesi oluşturma

Yalnızca genel kullanıma açık bir Azure görüntüsü kullanarak varsayılan 128 GB işletim sistemi diskine sahip bir ölçek kümesi oluşturmak istiyorsanız, doğrudan 10. adıma geçin ve ölçek kümesini oluşturmak için genel görüntü adını (UbuntuLTS, Win2019DataCenter vb.) kullanın. Aksi takdirde, VM görüntünüzü özelleştirmek için bu adımları izleyin.

  1. İstediğiniz işletim sistemi görüntüsüyle bir VM oluşturun ve isteğe bağlı olarak işletim sistemi disk boyutunu 128 GB'tan 'a <myDiskSizeGb>genişletin.

    • Kullanılabilir bir Azure Görüntüsü ile başlıyorsanız, örneğin <myBaseImage> = (Win2019DataCenter, UbuntuLTS):

      az vm create --resource-group <myResourceGroup> --name <MyVM> --image <myBaseImage> --os-disk-size-gb <myDiskSize>  --admin-username myUserName --admin-password myPassword
      
    • Genelleştirilmiş bir VHD ile başlıyorsanız:

      1. İlk olarak, istenen boyutta yönetilmeyen bir diskle VM'yi oluşturun ve ardından yönetilen diske dönüştürün:

        az vm create --resource-group <myResourceGroup> --name <MyVM> --image <myVhdUrl> --os-type windows --os-disk-size-gb <myDiskSizeGb> --use-unmanaged-disk --admin-username <myUserName> --admin-password <myPassword> --storage-account <myVhdStorageAccount>
        
      2. VM'yi kapatma

        az vm stop --resource-group <myResourceGroup> --name <MyVM>
        
      3. VM'yi serbest bırakma

        az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
        
      4. Yönetilen diske dönüştürme

        az vm convert --resource-group <myResourceGroup> --name <MyVM>
        
      5. VM’yi yeniden başlatın

        az vm start --resource-group <myResourceGroup> --name <MyVM>
        
  2. Görüntüyü özelleştirmek için VM'nin genel IP adresine Uzak Masaüstü (veya SSH). RDP (3389) veya SSH (22) bağlantı noktalarının engelini kaldırmak için güvenlik duvarındaki bağlantı noktalarını açmanız gerekebilir.

    1. Windows - 128 GB'tan büyükse <MyDiskSizeGb> , işletim sistemi disk boyutunu tarafından <MyDiskSizeGb>belirttiğiniz disk boyutunu dolduracak şekilde genişletin.

      DiskPart aracını yönetici olarak açın ve şu DiskPart komutlarını çalıştırın:

      1. list volume (birimleri görmek için)
      2. select volume 2 (hangi birimin işletim sistemi sürücüsü olduğuna bağlıdır)
      3. extend size 72000 (sürücüyü 128 GB'tan 200 GB'a kadar 72 GB genişletmek için)
  3. VM'ye istediğiniz ek yazılımları yükleyin.

  4. İşlem hattı aracısı kullanıcısının izinlerini özelleştirmek için adlı AzDevOpsbir kullanıcı oluşturabilir ve bu kullanıcıya ihtiyacınız olan izinleri verilmektedir. Bu kullanıcı, henüz yoksa ölçek kümesi aracısı başlangıç betiği tarafından oluşturulur.

  5. Özelleştirmeleri bitirdiğinizde VM'yi yeniden başlatın

  6. VM'yi genelleştirin.

    • Windows - Yönetici konsolu penceresinden:
      C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /shutdown
      
    • Linux:
      sudo waagent -deprovision+user -force
      

    Önemli

    VM'nin genelleştirme ve kapatma işlemini tamamlanmasını bekleyin. VM durdurulana kadar devam etmeyin. 60 dakika izin verin.

  7. VM'yi serbest bırakma

    az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
    
  8. VM'yi Genelleştirilmiş olarak işaretleme

    az vm generalize --resource-group <myResourceGroup> --name <MyVM>
    
  9. Genelleştirilmiş görüntüyü temel alan bir VM Görüntüsü oluşturun. Mevcut bir ölçek kümesi görüntüsünü güncelleştirmek için bu adımları gerçekleştirirken çıktıdaki görüntü kimliği URL'sini not edin.

    az image create  --resource-group <myResourceGroup> --name <MyImage> --source <MyVM>
    
  10. Özel VM görüntüsünü temel alan ölçek kümesini oluşturma

    az vmss create --resource-group <myResourceGroup> --name <myScaleSet> --image <MyImage> --admin-username <myUsername> --admin-password <myPassword> --instance-count 2 --disable-overprovision --upgrade-policy-mode manual --load-balancer '""'
    
  11. Ölçek kümesinde oluşturulan her iki VM'nin de çevrimiçi olduğunu, farklı adlara sahip olduğunu ve Başarılı durumuna ulaştığını doğrulayın

Artık bu ölçek kümesini kullanarak bir aracı havuzu oluşturmaya hazırsınız.

Mevcut bir ölçek kümesini yeni bir özel görüntüyle güncelleştirme

Mevcut bir ölçek kümesindeki görüntüyü güncelleştirmek için, özel işletim sistemi görüntüsünü oluşturmak için adım boyunca az image create yukarıdaki Özel görüntü, yazılım veya disk boyutuyla ölçek kümesi oluşturma bölümündeki adımları izleyin. komutundan alınan ID özelliği URL'sini az image create not edin. Ardından aşağıdaki örnekte gösterildiği gibi ölçek kümesini yeni görüntüyle güncelleştirin. Ölçek kümesi görüntüsü güncelleştirildikten sonra, ölçek kümesindeki gelecekteki tüm VM'ler yeni görüntüyle oluşturulur.

az vmss update --resource-group <myResourceGroup> --name <myScaleSet> --set virtualMachineProfile.storageProfile.imageReference.id=<id url>

Desteklenen İşletim Sistemleri

Ölçek kümesi aracıları şu anda Ubuntu Linux, Windows Server/DataCenter 2016/2019 ve Windows 10 istemcisini desteklemektedir.

Bilinen sorunlar

  • Debian veya RedHat Linux dağıtımları desteklenmez. Sadece Ubuntu.
  • Windows 10 istemcisi, işlem hattı aracısını yerel kullanıcı olarak çalıştırmayı desteklemez ve bu nedenle aracı kullanıcı arabirimiyle etkileşim kuramaz. Aracı bunun yerine Yerel Hizmet olarak çalışır.

Sorun giderme

Azure DevOps Projesi ayarlarınıza gidin, İşlem hatları'nın altında Aracı havuzları'nı seçin ve aracı havuzunuzu seçin. Tanılama etiketli sekmeyi seçin.

Tanılama sekmesi, Azure Ölçek Kümenizdeki VM'leri oluşturmak, silmek veya yeniden oluşturmak için Azure DevOps tarafından yürütülen tüm eylemleri gösterir. Tanılama ayrıca bu eylemleri gerçekleştirmeye çalışırken karşılaşılan hataları günlüğe kaydeder. Ölçek kümenizin ölçeği genişletmek için yeterli kaynağa sahip olduğundan emin olmak için hataları gözden geçirin. Azure aboneliğiniz VM'lerde, CPU çekirdeklerinde, disklerde veya IP Adreslerinde kaynak sınırına ulaştıysa, bu hatalar burada gösterilir.

İyi Durumda Olmayan Aracılar

Aracılar veya sanal makineler başlatılamıyorsa, Azure DevOps'a bağlanmıyorsa veya beklenmedik şekilde çevrimdışı oluyorsa, Azure DevOps hataları Aracı Havuzunun Tanılama sekmesinde günlüğe kaydeder ve ilişkili sanal makineyi silmeye çalışır. Ağ yapılandırması, görüntü özelleştirme ve bekleyen yeniden başlatmalar bu sorunlara neden olabilir. Hata ayıklamak ve günlükleri toplamak için VM'ye bağlanmak araştırmaya yardımcı olabilir.

Azure DevOps'un iyi durumda olmayan bir aracı VM'yi araştırma için kaydetmesini ve iyi durumda olmayan durumu algıladığında otomatik olarak silmesini istemiyorsanız Azure DevOps Projesi ayarlarınıza gidin, İşlem hatları altında Aracı havuzları'nı seçin ve aracı havuzunuzu seçin. Ayarlar'ı seçin, İyi durumda olmayan bir aracıyı araştırma için kaydet seçeneğini belirleyin ve Kaydet'i seçin.

İyi durumda olmayan aracı ayarını kaydedin.

Artık ölçek kümesinde iyi durumda olmayan bir aracı algılandığında Azure DevOps bu aracıyı ve ilişkili sanal makineyi kaydeder. Kaydedilen aracı, Aracı havuzu kullanıcı arabiriminin Tanılama sekmesinde görünür. Azure DevOps Projesi ayarlarınıza gidin, İşlem Hatları'nın altında Aracı havuzları'nı seçin, aracı havuzunuzu seçin, Tanılama'yı seçin ve aracı adını not edin.

Kayıtlı aracılar kartı.

Azure Sanal Makine Ölçek Kümenizdeki ilişkili sanal makineyi Azure portal aracılığıyla Örnekler listesinde bulun.

Azure portalı Sanal Makine Ölçek Kümesi örnekleri.

Örneği seçin, Bağlan'ı seçin ve araştırmanızı gerçekleştirin.

Sanal makine örneğine bağlanın.

Araştırmanız bittiğinde kaydedilen aracıyı silmek için Azure DevOps Projesi ayarlarınıza gidin, İşlem hatları'nın altında Aracı havuzları'nı seçin ve aracı havuzunuzu seçin. Tanılama etiketli sekmeyi seçin. Aracıyı araştırma için kaydedilen Aracılar kartında bulun ve Sil'i seçin. Bu, aracıyı havuzdan kaldırır ve ilişkili sanal makineyi siler.

Kayıtlı aracılar kart silme düğmesi.

SSS

Bazı yaygın sorunlar ve çözümleri nelerdir?

Çeşitli zamanlarda istenenden daha fazla boşta aracı gözlemlersiniz

Bunun nedenini daha iyi anlamak için bkz. Azure Pipelines ölçek kümesini nasıl yönetir?. Ölçeklendirme işlemi boyunca Azure Pipelines'ın hedefi, istenen sayıda boşta kalmış bekleme durumunda aracıya ulaşmaktır. Havuzların ölçeği yavaş yavaş genişletilir ve daraltılır. Gün boyunca, havuzun ölçeği sabah istekler kuyruğa alındıkça genişletilir ve akşam yük azalırken daraltılır. Azure Pipelines belirttiğiniz kısıtlamalara aşamalı olarak yaklaştığından bu beklenen bir davranıştır.

Sanal Makine Ölçek Kümeleri ölçeği artırma işlemi beklenen beş dakikalık aralıkta gerçekleşmiyor

Ölçeklendirme işi beş dakikada bir çalıştırılır, ama tek bir işlem işleniyorsa ölçeğin beş dakika içinde artırılmadığını gözlemleyebilirsiniz; bu durum şu anda tasarım gereğidir.

Azure DevOps Linux VM Ölçek Kümesi sık sık işlem hattını başlatamıyor

Ölçek kümesi aracılarında sorunlarla karşılaşıldığında ilk bakılması gereken yer aracı havuzundaki Tanılamalar sekmesidir.

Ayrıca iyi durumda olmayan sanal makineyi hata ayıklama amacıyla kaydetmeyi göz önünde bulundurun. Daha fazla bilgi için bkz. İyi Durumda Olmayan Aracılar.

Kayıtlı aracılar, siz silmediğiniz sürece oradadır. Aracı 10 dakika içinde çevrimiçi olmazsa, iyi durumda değil olarak işaretlenir ve mümkünse kaydedilir. Kaydedilmiş durumda yalnızca bir VM tutulur. Aracı beklenmedik bir şekilde çevrimdışı olursa (VM yeniden başlatması veya görüntüde gerçekleşen bir şey nedeniyle), araştırma için kaydedilmez.

Yalnızca aracıların başlatılamayan VM'ler kaydedilir. Vm oluşturma sırasında başarısız durumdaysa kaydedilmez. Bu durumda, Tanılama sekmesindeki ileti "başlatılamadı" yerine "iyi durumda olmayan makine siliniyor" şeklindedir.

Aracı havuzu için her kullanımdan sonra sanal makineleri otomatik olarak yok etme seçeneğini işaretleyin, ancak VM'lerin gerektiği gibi yeniden görüntülenmediğini ve kuyruğa alındıkları sırada yeni işleri aldıklarını görürsünüz

Her derlemeden sonra VM'yi kapatma seçeneği yalnızca Windows Server'da ve desteklenen Linux görüntülerinde çalışır. Windows istemci görüntülerinde desteklenmez.

vm yeniden başlatılırsa Sanal Makine Ölçek Kümeleri aracıyı çevrimdışı olarak gösterir

VM yeniden başlatılırsa aracıların çevrimdışı olarak gösterilmesi beklenen davranıştır. Aracı hizmeti yalnızca sistemli bağlamda çalışır. Öte yandan makine herhangi bir nedenle yeniden başlatılırsa bunun iyi durumda olmayan bir VM olduğu kabul edilir ve silinir. Daha fazla bilgi için bkz. İyi Durumda Olmayan Aracılar.

Aracılar veya sanal makineler başlatılamadığında, Azure DevOps'a bağlanamayınca veya beklenmedik şekilde çevrimdışı duruma geçtiğinde, Azure DevOps hataları Aracı Havuzunun Tanılama sekmesinde günlüğe kaydeder ve ilişkili sanal makineyi silmeye çalışır. Ağ yapılandırması, görüntü özelleştirme ve bekleyen yeniden başlatmalar bu sorunlara neden olabilir. Sorunu önlemek için görüntüde yazılım güncelleştirmesini devre dışı bırakın. Ayrıca sorunun araştırılmasına yardımcı olmak için VM'ye bağlanıp hata ayıklaması yapabilir ve günlükleri toplayabilirsiniz.

Maliyet yönetiminde Sanal Makine Ölçek Kümeleri için _AzureDevOpsElasticPoolTimeStamp gibi birden çok etiket görebilirsiniz

Havuz oluşturulduğunda ölçek kümesini kullanımda olarak işaretlemek için ölçek kümesine bir etiket eklenir (iki havuzun aynı ölçek kümesini kullanmasını önlemek için) ve yapılandırma işi her çalıştırıldığında (iki saatte bir) güncelleştirilen zaman damgası için bir etiket daha eklenir.

Yeni bir ölçek kümesi aracı havuzu oluşturamaz ve aynı ada sahip bir havuzun zaten var olduğunu belirten bir hata iletisi alamazsınız

Etiketin silindikten sonra bile ölçek kümesinde mevcut olması gibi This virtual machine scale set is already in use by pool <pool name> bir hata iletisi alabilirsiniz. Bir aracı havuzu silindiğinde, etiketi ölçek kümesinden silmeye çalışırsınız, ancak bu en iyi çaba girişimidir ve üç yeniden denemeden sonra vazgeçersiniz. Ayrıca, herhangi bir aracı havuzu tarafından kullanılmayan bir Sanal Makine Ölçek Kümesinin yeni bir havuza atanmadığı en fazla iki saatlik aralık olabilir. Bu durumu düzeltmek için söz konusu sürenin geçmesi beklenir veya Azure portaldan ölçek kümesinin etiketi el ile silinir. Azure portalda ölçek kümesi görüntülenirken sol taraftaki Etiketler bağlantısını seçin ve _AzureDevOpsElasticPool etiketini silin.

Sanal Makine Ölçek Kümeleri bakım işi aracılarda çalışmıyor veya günlükleri almıyor

Bakım işi 24 saatte bir çalıştırılır. VM'lerin bu süreden önce dolması mümkündür. VM'de disk boyutunu artırmayı ve işlem hattına içeriği silecek bir betik eklemeyi göz önünde bulundurun.

Sanal Makine Ölçek Kümeleri için betiğinizde birincil yönetici olarak belirtirsenizAzDevOps, ölçek kümesi örneklerinde aracı yapılandırmalarıyla ilgili sorunları gözlemleyebilirsiniz

Sanal Makine Ölçek Kümesi için betiğinizde birincil yönetici olarak belirtirseniz AzDevOps , ölçek kümesi örneklerinde aracı yapılandırmalarıyla ilgili sorunlar gözlemleyebilirsiniz (kullanıcının parolası zaten varsa değiştirilir).

Aracı uzantısı betikleri kullanıcıyı AzDevOps oluşturmaya ve parolasını değiştirmeye çalıştığından bu sorun oluşur.

Not

Kullanıcıyı oluşturmak ve ek izinler vermek sorun değildir, ancak birincil yönetici olmamalıdır ve parola değiştirileceği için hiçbir şey parolaya bağımlı olmamalıdır. Sorundan kaçınmak için ölçek kümesini AzDevOpsoluştururken birincil yönetici olarak yerine farklı bir kullanıcı seçin.

Ağ güvenliği ve güvenlik duvarı yapılandırmaları nedeniyle ölçek kümesi örneklerinde aracı uzantısı yüklemesi başarısız oluyor

Uzantı derleme aracısı dosyalarını https://vstsagentpackage.azureedge.net/agent konumundan indirebilmeli ve derleme aracısı da Azure DevOps Services'e kaydolabilmelidir. Örnekte bu URL'nin ve Azure DevOps Services ile ilgili IP'lerle URL'lerin açık olduğundan emin olun. Güvenlik duvarında engellemenin kaldırılması gereken IP'ler ve URL'ler için bkz. İzin verilen IP adresleri ve etki alanı URL'leri.

Ölçek kümesi aracı yapılandırma betiğim neden Add-MpPreference çağrısı yapıyor ve aracıda Windows Defender'ı yapılandırıyor?

Performans ve güvenilirliği artırmak için yapılandırma betikleri, aracıdaki bu klasörlerdeki dosyalar için Windows Defender'ın zamanlanmış ve gerçek zamanlı taramasını devre dışı bırakır ve içeren C:\ add-MpPreference ExclusionPath öğesini çağırır.D:\ Varsayılan davranışı değiştirmek için adlı ELASTIC_POOLS_SKIP_DEFENDER_EXCLUSION truebir ortam değişkeni ayarlayın.

Havuz boyutumu artırmak istiyorum. Neleri göz önünde bulundurmalıyım?

Havuzunuzun boyutunu artırmadan önce, Sanal Makine Ölçek Kümeleri havuzunuz için yapılandırılan Azure Sanal Ağ tüm yeni aracılarınızı barındıracak kadar büyük bir Adres alanı aralığına sahip olduğundan emin olun. Aksi takdirde Kapasite artırılamadı hatasına benzer bir hata alabilirsiniz. Adres ön eki 12.123.45.224/28 olan azure-devops-agent-pool-fabrikam-fiber alt ağı 5 IP adresi için yeterli kapasiteye sahip değildir.