Tek cihazlar veya uygun ölçekte IoT Edge otomatik dağıtımlarını anlama

Şunlar için geçerlidir: IoT Edge 1.5 onay işareti IoT Edge 1.5 IoT Edge 1.4 onay işareti IoT Edge 1.4

Önemli

IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

Otomatik dağıtımlar ve katmanlı dağıtım, çok sayıda IoT Edge cihazındaki modülleri yönetmenize ve yapılandırmanıza yardımcı olur.

Azure IoT Edge, modülleri IoT Edge cihazlarında çalışacak şekilde yapılandırmak için iki yol sağlar. İlk yöntem, modülleri cihaz başına dağıtmaktır. Bir dağıtım bildirimi oluşturur ve bunu belirli bir cihaza ada göre uygularsınız. İkinci yöntem, modülleri bir dizi tanımlı koşulu karşılayan kayıtlı cihazlara otomatik olarak dağıtmaktır. Bir dağıtım bildirimi oluşturur ve ardından cihaz ikizindeki etiketlere göre hangi cihazlara uygulanacağını tanımlarsınız.

Cihaz başına ve otomatik dağıtımları birleştiremezsiniz. IoT Edge cihazlarını otomatik dağıtımlarla (katmanlı dağıtımlarla veya katmanlı dağıtımlar olmadan) hedeflemeye başladıktan sonra cihaz başına dağıtımlar artık desteklenmez.

Bu makale, topluca IoT Edge otomatik dağıtımları olarak adlandırılan cihaz filolarını yapılandırmaya ve izlemeye odaklanır.

Temel dağıtım adımları aşağıdaki gibidir:

  1. Operatör, bir modül kümesini ve hedef cihazları açıklayan bir dağıtım bildirimi tanımlar.
  2. Sonuç olarak, IoT Hub hizmeti tüm hedeflenen cihazlarla iletişim kurarak bunları bildirilen modüllerle yapılandırıyor.
  3. IoT Hub hizmeti, IoT Edge cihazlarından durumu alır ve operatörün kullanımına sağlar. Örneğin, bir operatör bir Edge cihazının ne zaman başarıyla yapılandırılmamış olduğunu veya çalışma zamanı sırasında bir modülün başarısız olup olmadığını görebilir.
  4. Yeni hedeflenen IoT Edge cihazları çevrimiçi olduğunda ve IoT Hub'a bağlandığında, dağıtım için yapılandırılır.

Bu makalede, bir dağıtımı yapılandırma ve izlemeyle ilgili her bileşen açıklanmaktadır. Dağıtım oluşturma ve güncelleştirme konusunda izlenecek yol için bkz . Büyük ölçekte IoT Edge modüllerini dağıtma ve izleme.

Dağıtım

IoT Edge otomatik dağıtımı, hedeflenen bir IoT Edge cihaz kümesinde örnek olarak çalışacak IoT Edge modülü görüntüleri atar. Otomatik dağıtım, bir IoT Edge dağıtım bildirimini ilgili başlatma parametrelerine sahip modüllerin listesini içerecek şekilde yapılandırır. Dağıtım tek bir cihaza (Cihaz Kimliğine göre) veya bir cihaz grubuna (etiketlere göre) atanabilir. IoT Edge cihazı bir dağıtım bildirimi aldıktan sonra kapsayıcı görüntülerini ilgili kapsayıcı depolarından indirip yükler ve uygun şekilde yapılandırır. Bir dağıtım oluşturulduktan sonra operatör, hedeflenen cihazların doğru yapılandırılıp yapılandırılmadığını görmek için dağıtım durumunu izleyebilir.

Yalnızca IoT Edge cihazları bir dağıtımla yapılandırılabilir. Dağıtımı alabilmesi için önce cihazda aşağıdaki önkoşulların bulunması gerekir:

  • Temel işletim sistemi
  • Moby veya Docker gibi bir kapsayıcı yönetim sistemi
  • IoT Edge çalışma zamanını sağlama

Dağıtım bildirimi

Dağıtım bildirimi, hedeflenen IoT Edge cihazlarında yapılandırılacak modülleri açıklayan bir JSON belgesidir. Gerekli sistem modülleri (özellikle IoT Edge aracısı ve IoT Edge hub'ı) dahil olmak üzere tüm modüllerin yapılandırma meta verilerini içerir.

Her modülün yapılandırma meta verileri şunları içerir:

  • Sürüm
  • Tür
  • Durum (örneğin, Çalışıyor veya Durduruldu)
  • Yeniden başlatma ilkesi
  • Görüntü ve kapsayıcı kayıt defteri
  • Veri girişi ve çıkışı için yollar

Modül görüntüsü özel bir kapsayıcı kayıt defterinde depolanıyorsa, IoT Edge aracısı kayıt defteri kimlik bilgilerini tutar.

Hedef koşul

Hedef cihaz koşulu, dağıtımın ömrü boyunca sürekli olarak değerlendirilir. Gereksinimleri karşılayan tüm yeni cihazlar dahil edilir ve artık gereksinimleri karşılamayan tüm mevcut cihazlar kaldırılır. Hizmet herhangi bir hedef koşul değişikliği algılarsa dağıtım yeniden etkinleştirilir.

Örneğin, hedef koşulu tags.environment = 'prod'olan bir dağıtımınız vardır. Dağıtımı başlattığınızda 10 üretim cihazı vardır. Modüller bu 10 cihaza başarıyla yüklenir. IoT Edge aracı durumu toplam 10 cihaz, 10 başarılı yanıt, 0 hata yanıtı ve 0 bekleyen yanıt gösterir. Şimdi ile tags.environment = 'prod'beş cihaz daha ekleyebilirsiniz. Hizmet değişikliği algılar ve IoT Edge aracı durumu artık beş yeni cihaza dağıtılırken toplam 15 cihaz, 10 başarılı yanıt, 0 hata yanıtı ve 5 bekleyen yanıt gösterir.

Bir dağıtımın hedef koşulu yoksa, hiçbir cihaza uygulanmaz.

Hedef cihazları seçmek için cihaz ikizi etiketlerinde, cihaz ikizi bildirilen özelliklerinde veya deviceId'sinde herhangi bir Boole koşulu kullanın. Etiketlerle bir koşul kullanmak istiyorsanız, cihaz ikizi içinde özelliklerle aynı düzeyde bir "tags":{} bölüm eklemeniz gerekir. Cihaz ikizindeki etiketler hakkında daha fazla bilgi için bkz . IoT Hub'da cihaz ikizlerini anlama ve kullanma. Sorgu işlemleri hakkında daha fazla bilgi için bkz . IoT Hub sorgu dili işleçleri ve IS_DEFINED işlevi.

Hedef koşulların örnekleri:

  • deviceId ='linuxprod1'
  • tags.environment ='prod'
  • tags.environment = 'prod' AND tags.location = 'westus'
  • tags.environment = 'prod' OR tags.location = 'westus'
  • tags.operator = 'John' AND tags.environment = 'prod' AND NOT deviceId = 'linuxprod1'
  • properties.reported.devicemodel = '4000x'
  • IS_DEFINED(tags.remote)
  • NOT IS_DEFINED(tags.location.building)
  • tags.environment != null
  • [yok]

Bir hedef koşul oluştururken şu kısıtlamaları göz önünde bulundurun:

  • Cihaz ikizinde yalnızca etiketleri, bildirilen özellikleri veya deviceId'yi kullanarak bir hedef koşul oluşturabilirsiniz.
  • Hedef koşulun hiçbir bölümünde çift tırnak işaretine izin verilmez. Tek tırnak kullanın.
  • Tek tırnak işaretleri, hedef koşulun değerlerini temsil eder. Bu nedenle, cihaz adının bir parçasıysa tek tırnak işaretinden başka bir tek tırnak işaretiyle kaçmanız gerekir. Örneğin, adlı operator'sDevicebir cihazı hedeflemek için yazın deviceId='operator''sDevice'.
  • Hedef koşul değerlerinde sayılara, harflere ve aşağıdaki karakterlere izin verilir: "()<>@,;:\\"/?={} \t\n\r.
  • Hedef koşul anahtarlarında aşağıdaki karakterlere izin verilmez:/;.

Öncelik

Öncelik, bir dağıtımın diğer dağıtımlara göre hedeflenen bir cihaza uygulanıp uygulanmayacağını tanımlar. Dağıtım önceliği, 0 ile 2.147.483.647 arasında pozitif bir tamsayıdır. Daha büyük sayılar daha yüksek bir önceliği belirtir. Bir IoT Edge cihazı birden fazla dağıtım tarafından hedefleniyorsa, en yüksek önceliğe sahip dağıtım uygulanır. Düşük önceliğe sahip dağıtımlar uygulanmaz ve birleştirilmez. Bir cihaz eşit önceliğe sahip iki veya daha fazla dağıtımla hedefleniyorsa, en son oluşturulan dağıtım (oluşturma zaman damgası tarafından belirlenir) uygulanır.

Etiketler

Etiketler, dağıtımları filtrelemek ve gruplandırmak için kullanabileceğiniz dize anahtarı/değer çiftleridir. Bir dağıtımın birden çok etiketi olabilir. Etiketler isteğe bağlıdır ve IoT Edge cihazlarının yapılandırmasını etkilemez.

Ölçümler

Varsayılan olarak, tüm dağıtımlar dört ölçüme göre rapor eder:

  • Hedeflenen , Dağıtım hedefleme koşuluyla eşleşen IoT Edge cihazlarını gösterir.
  • Uygulanan, daha yüksek öncelikli başka bir dağıtım tarafından hedeflenmemiş hedeflenen IoT Edge cihazlarını gösterir.
  • Başarılı Raporlama, modüllerini başarıyla dağıtıldığını bildiren IoT Edge cihazlarını gösterir.
  • Raporlama Hatası , bir veya daha fazla modülü başarısız olarak dağıtıldığını bildiren IoT Edge cihazlarını gösterir. Hatayı daha fazla araştırmak için bu cihazlara uzaktan bağlanın ve günlük dosyalarını görüntüleyin.

Ayrıca, dağıtımı izlemeye ve yönetmeye yardımcı olmak için kendi özel ölçümlerinizi tanımlayabilirsiniz.

Ölçümler, bir dağıtım yapılandırmasının uygulanması sonucunda cihazların geri bildirebileceği çeşitli durumların özet sayısını sağlar. Ölçümler lastDesiredStatus veya lastConnectTime gibi edgeHub modül ikizi bildirilen özelliklerini sorgulayabilir.

Örneğin:

SELECT deviceId FROM devices
  WHERE properties.reported.lastDesiredStatus.code = 200

Kendi ölçümlerinizi eklemek isteğe bağlıdır ve IoT Edge cihazlarının gerçek yapılandırmasını etkilemez.

Katmanlı dağıtım

Katmanlı dağıtımlar, oluşturulması gereken benzersiz dağıtım sayısını azaltmak için bir araya getirilebilen otomatik dağıtımlardır. Katmanlı dağıtımlar, aynı modüllerin birçok otomatik dağıtımda farklı birleşimlerde yeniden kullanıldığı senaryolarda kullanışlıdır.

Katmanlı dağıtımlar, tüm otomatik dağıtımlarla aynı temel bileşenlere sahiptir. Cihaz ikizlerindeki etiketlere göre cihazları hedefler ve etiketler, ölçümler ve durum raporlama ile ilgili aynı işlevleri sağlar. Katmanlı dağıtımların da bunlara atanmış öncelikleri vardır. Öncelik, bir cihaza hangi dağıtımın uygulandığını belirlemek için önceliği kullanmak yerine, bir cihazda birden çok dağıtımın nasıl dereceleneceğini belirler. Örneğin, iki katmanlı dağıtımın bir modülü veya aynı ada sahip bir yolu varsa, düşük önceliğin üzerine yazılırken yüksek önceliğe sahip katmanlı dağıtım uygulanır.

edgeAgent ve edgeHub olarak bilinen sistem çalışma zamanı modülleri katmanlı dağıtımın parçası olarak yapılandırılmaz. Katmanlı dağıtım tarafından hedeflenen herhangi bir IoT Edge cihazının önce standart bir otomatik dağıtım uygulanması gerekir. Otomatik dağıtım, katmanlı dağıtımların eklenebilecek temeli sağlar.

IoT Edge cihazı tek bir standart otomatik dağıtım uygulayabilir, ancak birden çok katmanlı otomatik dağıtım uygulayabilir. Bir cihazı hedefleyen katmanlı dağıtımların, bu cihaz için otomatik dağıtımdan daha yüksek önceliğe sahip olması gerekir.

Örneğin, binaları yöneten bir şirketin aşağıdaki senaryolarını göz önünde bulundurun. Şirket, güvenlik kameralarından, hareket algılayıcılarından ve asansörlerden veri toplamak için IoT Edge modülleri geliştirdi. Ancak, tüm binaları üç modülü de kullanamaz. Standart otomatik dağıtımlarla, şirketin binalarının ihtiyaç duyduğu tüm modül bileşimleri için tek tek dağıtımlar oluşturması gerekir.

Standart otomatik dağıtımların her modül birleşimini barındırması gerektiğini gösteren ekran görüntüsü.

Ancak, şirket katmanlı otomatik dağıtımlara geçtikten sonra, yönetecek daha az dağıtımla binaları için aynı modül bileşimlerini oluşturabilir. Her modülün kendi katmanlı dağıtımı vardır ve cihaz etiketleri her bir yapıya hangi modüllerin ekleneceğini belirler.

Katmanlı otomatik dağıtımların aynı modüllerin farklı şekillerde birleştirildiği senaryoları nasıl basitleştirdiğini gösteren ekran görüntüsü.

Modül ikizi yapılandırması

Katmanlı dağıtımlarla çalışırken, bir cihazı hedefleyen aynı modüle sahip iki dağıtıma kasıtlı olarak veya başka bir şekilde sahip olabilirsiniz. Bu gibi durumlarda, daha yüksek öncelikli dağıtımın modül ikizinin üzerine yazılması mı yoksa buna eklenmesi mi gerektiğine karar vekleyebilirsiniz. Örneğin, aynı modülü 100 farklı cihaza uygulayan bir dağıtımınız olabilir. Ancak, bu cihazlardan 10'unun güvenli tesislerde olması ve ara sunucularla iletişim kurmak için ek yapılandırmaya ihtiyacı vardır. Bu 10 cihazın, temel dağıtımdaki mevcut modül ikizi bilgilerinin üzerine yazmadan güvenli bir şekilde iletişim kurmasını sağlayan modül ikizi özellikleri eklemek için katmanlı dağıtım kullanabilirsiniz.

Dağıtım bildiriminde modül ikizi istenen özelliklerini ekleyebilirsiniz. Standart bir dağıtımda, modül ikizinin properties.desired bölümüne özellikler ekleyebilirsiniz. Ancak katmanlı dağıtımda istenen özelliklerin yeni bir alt kümesini bildirebilirsiniz.

Örneğin, standart bir dağıtımda, 5 saniyelik aralıklarla veri göndermesini belirten aşağıdaki istenen özelliklere sahip simülasyon sıcaklık sensörü modülünü ekleyebilirsiniz:

"SimulatedTemperatureSensor": {
  "properties.desired": {
    "SendData": true,
    "SendInterval": 5
  }
}

Aynı cihazların bazılarını veya tümünü hedefleyen katmanlı bir dağıtımda, simülasyon algılayıcısına 1000 ileti göndermesini ve ardından durmasını söyleyen bir özellik ekleyebilirsiniz. Varolan özelliklerin üzerine yazmak istemediğiniz için, yeni özelliği içeren adlı layeredPropertiesistenen özellikler içinde yeni bir bölüm oluşturursunuz:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties": {
    "StopAfterCount": 1000
  }
}

Her iki dağıtımın da uygulandığı bir cihaz, simülasyon sıcaklık sensörü için modül ikizinde aşağıdaki özellikleri yansıtır:

"properties": {
  "desired": {
    "SendData": true,
    "SendInterval": 5,
    "layeredProperties": {
      "StopAfterCount": 1000
    }
  }
}

Katmanlı bir dağıtımda modül ikizinin alanını ayarlarsanız properties.desired , properties.desired düşük öncelikli dağıtımlarda bu modül için istenen özelliklerin üzerine yazar.

Aşamalı dağıtım

Aşamalı dağıtım, bir operatörün değişiklikleri geniş bir IoT Edge cihaz kümesine dağıttığı genel bir işlemdir. Amaç, geniş ölçekli hataya neden olan değişiklikler yapma riskini azaltmak için kademeli olarak değişiklikler yapmaktır. Otomatik dağıtımlar, IoT Edge cihazlarından oluşan bir filo genelinde aşamalı dağıtımları yönetmeye yardımcı olur.

Aşamalı dağıtım aşağıdaki aşamalarda ve adımlarda yürütülür:

  1. IoT Edge cihazlarını sağlayarak ve gibi tag.environment='test'bir cihaz ikizi etiketi ayarlayarak bir test ortamı oluşturun. Test ortamı, dağıtımın sonunda hedefleeceği üretim ortamını yansıtmalıdır.
  2. İstenen modülleri ve yapılandırmaları içeren bir dağıtım oluşturun. Hedefleme koşulu test IoT Edge cihaz ortamını hedeflemelidir.
  3. Test ortamında yeni modül yapılandırmasını doğrulayın.
  4. Hedefleme koşuluna yeni bir etiket ekleyerek dağıtımı üretim IoT Edge cihazlarının bir alt kümesini içerecek şekilde güncelleştirin. Ayrıca, dağıtımın önceliğinin o anda bu cihazları hedefleyen diğer dağıtımlardan daha yüksek olduğundan emin olun.
  5. Dağıtım durumunu görüntüleyerek hedeflenen IoT Edge cihazlarında dağıtımın başarılı olduğunu doğrulayın.
  6. Kalan tüm üretim IoT Edge cihazlarını hedeflemek için dağıtımı güncelleştirin.

Geri alma

Hatalar veya yanlış yapılandırmalar alırsanız dağıtımlar geri alınabilir. Bir dağıtım, IoT Edge cihazı için mutlak modül yapılandırmasını tanımladığından, hedef tüm modülleri kaldırmak olsa bile daha düşük bir önceliğe sahip olan ek bir dağıtımın da aynı cihaza hedeflenmiş olması gerekir.

Bir dağıtımın silinmesi, modülleri hedeflenen cihazlardan kaldırmaz. Boş bir dağıtım olsa bile cihazlar için yeni bir yapılandırma tanımlayan başka bir dağıtım olmalıdır.

Ancak, bir dağıtımın silinmesi, katmanlı bir dağıtımsa hedeflenen cihazdan modülleri kaldırabilir. Katmanlı dağıtım, temel alınan dağıtımı güncelleştirir ve modül ekleme olasılığı vardır. Katmanlı dağıtımın kaldırılması, temel alınan dağıtıma yönelik güncelleştirmesini kaldırır ve modülleri kaldırma olasılığına sahiptir.

Örneğin, bir cihazın temel dağıtımı A ve üzerine katmanlı O ve M dağıtımları uygulanır (böylece A, O ve M dağıtımları cihaza dağıtılır). Katmanlı dağıtım M silinirse cihaza A ve O uygulanır ve M dağıtımına özgü modüller kaldırılır.

Geri alma işlemlerini aşağıdaki sırayla gerçekleştirin:

  1. İkinci bir dağıtımın da aynı cihaz kümesine hedeflendiğini onaylayın. Geri alma işleminin amacı tüm modülleri kaldırmaksa, ikinci dağıtım herhangi bir modül içermemelidir.
  2. Cihazların artık hedefleme koşuluna uymaması için geri almak istediğiniz dağıtımın hedef koşul ifadesini değiştirin veya kaldırın.
  3. Dağıtım durumunu görüntüleyerek geri alma işleminin başarılı olduğunu doğrulayın.
    • Geri alınan dağıtım artık geri alınan cihazların durumunu göstermemelidir.
    • İkinci dağıtım artık geri alınan cihazlar için dağıtım durumunu içermelidir.

Sonraki adımlar