Düzenle

Aracılığıyla paylaş


Düşük bant genişliğine sahip bağlantı için verimli Docker görüntüsü dağıtımı

Azure Container Registry
Azure Functions
Azure IoT Edge
Azure IoT Hub
Azure Pipelines

Bu makalede, kapsayıcılı nesnelerin İnterneti (IoT) uç modüllerini aralıklı veya düşük bant genişliğine sahip İnternet bağlantıları arasında dağıtmaya yönelik bir çözüm açıklanmaktadır.

Uç işleme, mobil senaryolarda olduğu gibi düşük gecikme süreli bağlantı ve bant genişliği tasarrufu sağlamaya yönelik önemli bir nesnelerin İnterneti (IoT) desenidir. IoT sistemleri genellikle yazılım kapsayıcı görüntülerini dağıtarak uç cihazlar sağlar. Aralıklı olarak düşük bant genişliğine bağlı İnternet bağlantıları üzerinden kapsayıcı dağıtımlarının kesintiye uğraması, mobil senaryolarda hatalara neden olabilir. Sınırlı, aralıklı veya düşük bant genişliğine sahip IoT senaryolarının güvenilir ve dayanıklı dağıtım özelliklerine ihtiyacı vardır.

Bu örnekte büyük bir lojistik şirketi dünya çapındaki ürün sevkiyat takibini geliştirmek istiyordu. Şirket, aralıklı, düşük bant genişliğine sahip internet bağlantısı olan alanlar da dahil olmak üzere birçok bölgeye çeşitli kara, hava ve deniz taşımacılığı yöntemleri ile mallar gönderdi. Malların türüne bağlı olarak, ürün sevkiyatlarında farklı özelliklere sahip çeşitli IoT sigortası, güvenlik veya izleme cihazları yüklüdür. Cihazlar arasında GPS izleyicileri, sıcaklık algılayıcıları ve veri yakalama araçları bulunur.

Şirket, yakın zamanda geliştirilen Azure IoT Edge platformu üzerinden cihazları güncelleştirme konusunda sorun yaşıyordu. Başlıca ağrı noktaları:

  • Cihazlara güncelleştirilmiş yazılım dağıtılırken yüksek bant genişliği tüketimi.
  • Cihazlar arasında standartlaştırılmış otomatik dağıtım yoktur.
  • Teknoloji seçiminde sınırlı esneklik.

Bu sorunları gidermek için geliştirme ekibi aşağıdakilere yönelik bir çözüm oluşturmuştur:

  • Her cihaza dağıtımın boyutunu en aza indirerek bant genişliğini azaltır.
  • IoT Edge platformundan heterojen uzak IoT cihazlarına standartlaştırılmış bir Docker kapsayıcı dağıtımı uygular.
  • Güvenilir dağıtım izlemeyi etkinleştirir.
  • Çeşitli Azure DevOps ve bulut hizmetlerinden yararlanır ve müşterinin tercih ettiği eski araçları kullanır.

Çözüm, sınırlı bağlantı ortamlarında cihaz sağlama işleminin güvenilirliğini ve dayanıklılığını önemli ölçüde artırdı. Bu makalede çözüm ayrıntıları ve çözüm seçenekleri değerlendirme işlemi açıklanmaktadır.

Müşteri gereksinimleri

Müşterinin şu gereksinimleri vardı:

  • Çözümün aralıklı olarak düşük bant genişliğine bağlı bulut bağlantısını desteklemesi gerekir.
  • Dağıtılan uygulamaların yerel olarak çalışmaya devam etmesi gerekir.
  • Yerel personelin çevrimdışı veya bulut gidiş dönüş gecikmesi olmadan işlevselliği kullanması gerekir.
  • Bağlantı kurulduğunda çözümün bulut bağlantısını verimli bir şekilde kullanması gerekir.
  • Çözüm, ürünler arasında tutarlı olarak tanımlanan iş kurallarına göre veri göndermeye öncelik vermelidir.

Ayrıca aşağıdaki ayrıntılı gereksinimler de vardı:

  • Görüntü dosyaları düşük bant genişliği, aralıklı bağlantı uydu bağlantısı üzerinden aktarılır.
  • Aktarılan veri miktarı en aza indirilmelidir.
  • Dosyalar cihazlara aktarılırken müşterinin tercih edilen üçüncü taraf uygulaması kullanılır.
  • Cihaz iş yükleri, IoT Edge'de Docker görüntülerini kullanır.
  • Görüntü boyutları onlarca MB ile birkaç GB arasında değişir.
  • IoT Edge modülleri .NET Core 2.2'de yazılmıştır.

Olası kullanım örnekleri

Bu çözüm, yazılım kapsayıcılarının düşük bant genişliği ve aralıklı bağlantılar üzerinden çözümler sunduğu IoT senaryoları için uygundur. Örnekler şunları içerir:

  • Uzaktan petrol, gaz ve madencilik izleme
  • Havadan otomotiv güncelleştirmeleri
  • Her yerde güçlü bir bağlantı garanti değildir

Mimari

Yüksek bant genişliğine sahip senaryolarda Azure IoT Edge, görüntüleri doğrudan docker hub'ı veya Azure Container Registry gibi özel bir hub olmak üzere İnternet'ten erişilebilen bir Docker kayıt defterinden çeker. Bu işlev, komutu çalıştırmakla aynıdır docker pull <image_name> .

Uydu internet bağlantısı gibi aralıklı ağ erişimine sahip docker çekme yöntemi güvenilir değildir. Docker görüntüyü çekerken İnternet bağlantısı düşerse ilerleme durumu önbelleğe alınmaz. İnternet bağlantısı devam ettiğinde Docker'ın görüntüyü baştan çekmeye başlaması gerekir.

Çözüm, bant genişliğini azaltmak ve aralıklı bağlantıyı telafi etmek için Docker görüntü dosyalarına ikili düzeltme eki uygulama olan alternatif bir dağıtım mekanizması kullanır.

Azure DevOps ve Azure üst düzey çözüm mimarisini gösteren diyagram.

Veri akışı

  1. Geliştiriciler bir kaynak kodu deposundaki uç modül kaynak koduyla etkileşim kurar.
  2. Container Registry her modülün Docker görüntülerini depolar.
  3. Bildirim deposu, tüm iş akışları için dağıtım bildirimlerini içerir.
  4. Her modülün, modülleri otomatik olarak oluşturmak ve kaydetmek için genel bir Docker derlemesi kullanan bir Azure Pipelines derleme işlem hattı vardır.
  5. Görüntüden cihaza işlem hattı, Bildirim dosyası tarafından tanımlandığı gibi Docker görüntülerini hedeflenen cihazlara dağıtır.
  6. Bildirimden cihaza işlem hattı, dağıtım bildirimini güncelleştirilen cihaz için uygun Azure IoT Hub'ına iletir.
  7. Üçüncü taraf hızlı dosya aktarımı çözümü, dosyaları bir Azure Depolama hesabından cihaza aktarır.
  8. Görüntü Yeniden Yapılandırma IoT Edge modülü, alınan düzeltme eklerini cihazlara uygular.
  9. IoT Hub, Görüntü Yeniden Yapılandırma modülünden durum iletileri alır ve cihaz için dağıtım bildirimini ayarlar. İşlem hattı akışının geri kalanı bu dağıtım bildirimini kullanır.
  10. Azure İşlevleri IoT Hub ileti akışını izler, SQL veritabanını güncelleştirir ve kullanıcıya başarılı veya başarısız olduğunu bildirir.
  11. Azure SQL Veritabanı dağıtım sırasında ve sonrasında hedef cihazlarda ve Azure tabanlı hizmetlerde oluşumları izler.

Bileşenler

  • Azure IoT Edge , cihazlarda kapsayıcılı iş yükleri çalıştırarak düşük gecikme süreli bağlantı sağlar ve bant genişliğinden tasarruf sağlar.
  • Azure IoT Hub , IoT uygulamaları ve denetledikleri cihazlar arasında merkezi bir ileti hub'ı işlevi gören yönetilen, bulutta barındırılan bir hizmettir.
  • Azure Container Registry , özel Docker kapsayıcı görüntülerini ve ilgili yapıtları depolamak ve yönetmek için kullanılan bulut tabanlı bir özel kayıt defteri hizmetidir.
  • Azure Pipelines , kodu otomatik olarak test etmek ve derlemek ve herhangi bir hedefe göndermek için sürekli tümleştirme (CI) ile sürekli teslimi (CD) birleştirir.
  • Azure İşlevleri, altyapı sağlamak veya yönetmek zorunda kalmadan olayla tetiklenen kodu çalıştırmayı sağlayan sunucusuz bir işlem platformudur.
  • Azure Depolama , tüm iş verileri, nesneleri ve dosyaları için yüksek oranda ölçeklenebilir, güvenli, performanslı ve uygun maliyetli depolama sağlar.
  • Azure SQL Veritabanı, bulut için oluşturulmuş, tam olarak yönetilen, çok modelli bir ilişkisel veritabanı hizmetidir.
  • Docker kapsayıcılı uygulamalar geliştirmeye, göndermeye ve çalıştırmaya yönelik açık bir platformdur.

Alternatifler

Geliştirme ekibi, tam Docker görüntü deltası aktarım çözümüne karar vermeden önce çeşitli seçenekleri değerlendirdi. Aşağıdaki bölümlerde değerlendirme alternatifleri ve sonuçları açıklanmaktadır.

Ekip her seçenek için aşağıdaki değerlendirme ölçütlerini dikkate aldı:

  • Çözümün gereksinimleri karşılayıp karşılamadığı.
  • Cihazlarda düşük, orta veya yüksek miktarda mantığın uygulanması gerekip gerekmediği.
  • Azure'da düşük, orta veya yüksek miktarda mantığın uygulanması gerekip gerekmediği.
  • Kapsayıcı görüntüsünü aktarmak için bant genişliği verimliliği veya aktarılan verilerin görüntünün toplam boyutuna oranı.

Bant genişliği verimliliği, şu senaryoları içerir:

  • Cihazda görüntü yok.
  • Cihazda aynı tabana sahip bir görüntü var.
  • Cihazda önceki bir uygulama sürümünün görüntüsü vardı.
  • Cihazda önceki bir temel görüntü üzerinde oluşturulmuş bir uygulama görüntüsü vardı.

Ekip, bant genişliği verimliliğini değerlendirmek için aşağıdaki senaryoları kullandı:

Senaryo Açıklama
Cihazda zaten temel katman bulunan görüntüyü aktarma Cihazda zaten başka bir görüntü temel görüntüyü paylaştığında yeni bir görüntü aktarın. Bu senaryo, aynı işletim sistemi ve çerçevede başka bir uygulama zaten mevcut olduğunda ilk kez yeni bir uygulama dağıtmayı temsil eder.
Uygulama katmanını güncelleştirme Yalnızca mevcut bir uygulamanın görüntüsünün kodunu değiştirin. Bu senaryo, kullanıcı yeni bir özellik işlediğinde tipik bir değişikliği temsil eder.
Temel görüntüyü güncelleştirme Uygulamanın yerleşik olduğu temel görüntünün sürümünü değiştirin.

Docker katmanlarını aktarma seçeneği

Docker kapsayıcı görüntüsü, salt okunur dosya sistemi farklılıklarına sahip bir UnionFS bağlamasıdır ve kapsayıcı çalışırken yapılan değişiklikler için başka bir yazılabilir katmandır. Dosya sistemleri temelde klasörler ve dosyalar olan katmanlar olarak adlandırılır. Kapsayıcının kök dosya sisteminin tabanını oluşturmak için katmanlar yığını. Katmanlar salt okunur olduğundan, katman ortaksa çeşitli görüntüler aynı katmanı paylaşabilir.

Docker katmanlarını aktar seçeneği görüntüler arasındaki katmanları yeniden kullanır ve yalnızca yeni katmanları cihaza aktarır. Bu seçenek, genellikle işletim sistemi olmak üzere aynı temel katmanı paylaşan görüntülerde veya mevcut görüntülerin sürümlerini güncelleştirmek için en kullanışlı olacaktır.

Bu yöntemin dezavantajları şunlardır:

  • Düzenleyici, hangi cihazlarda hangi katmanların bulunduğuna ilişkin bilgileri tutmalıdır.
  • Temel katman değişiklikleri, sonraki tüm katmanların karmalarının değişmesine neden olur.
  • Karşılaştırma için tutarlı katman karmaları gerekir.
  • Docker kaydetme ve Docker yükünde bağımlılıklar olabilir.

Docker istemci seçeneğini değiştirme

Bu seçenek Docker istemcisini değiştirmeye veya sarmalayarak kesinti sonrasında katman indirmeye devam etmesini sağlar. Varsayılan olarak, İnternet bağlantısı kesintiden yaklaşık 30 dakika sonra geri yüklenirse Docker çekme işlemi indirme işlemini sürdürür. Aksi takdirde istemci çıkar ve tüm indirme ilerleme durumunu kaybeder.

Bu yöntem uygulanabilir, ancak aşağıdakiler dahil olmak üzere komplikasyonlar vardı:

  • Bant genişliği verimliliğini en üst düzeye çıkarmak için cihazdaki tüm görüntülerin görüntüleri çeken Docker daemon'a kaydedilmesi gerekir.
  • Açık kaynak Docker projesinin bu işlevselliği destekleyecek şekilde değiştirilmesi gerekir ve bu da açık kaynak bakımcıları tarafından reddedilme riski sunar.
  • Müşterinin tercih edilen hızlı dosya aktarımı çözümü yerine HTTP üzerinden veri aktarımı, özel yeniden deneme mantığı geliştirmeyi gerektirir.
  • Temel görüntü değiştiğinde tüm katmanlar yeniden aktarılmalıdır.

Uç cihazda derleme seçeneği

Bu yaklaşım, görüntü derleme ortamını cihazlara taşır. Cihaza aşağıdaki veriler gönderilir:

  • Derlenen uygulamanın kaynak kodu
  • Kodun bağımlı olduğu tüm NuGet paketlerinin bir kopyası
  • .NET Core derleme ortamı ve çalışma zamanı için Docker temel görüntüleri
  • Son görüntü hakkındaki meta veriler

Ardından cihazdaki bir derleme aracısı görüntüyü derleyip Docker Manager cihazına kaydeder.

Bu çözüm aşağıdaki nedenden dolayı reddedildi:

  • Yine de büyük Docker görüntülerini cihazlara taşımanın bir yolu olması gerekir. .NET uygulamaları oluşturmaya ilişkin görüntüler, uygulama görüntülerinin kendilerinden daha büyüktür.
  • Bu yöntem yalnızca ekibin kaynak koduna sahip olduğu uygulamalar için çalışır, bu nedenle üçüncü taraf görüntüleri kullanamaz.
  • Bu seçenek, NuGet paketlerinin paketlenmesi ve cihazlara hareketlerinin izlenmesini gerektirir.
  • Cihazda bir görüntü derlenemediyse, ekibin derleme ortamında ve oluşturulan görüntüde uzaktan hata ayıklaması gerekir. Uzaktan hata ayıklama, sınırlı olabilecek İnternet bağlantısının yüksek kullanımını gerektirir.

Tam görüntü delta aktarımı seçeneği

Seçilen yaklaşım docker görüntüsünü tek bir ikili dosya olarak ele alır. Docker save komutu görüntüyü .tar dosyası olarak dışarı aktarır. Çözüm, mevcut ve yeni Docker görüntülerini dışarı aktarır ve uygulandığında mevcut görüntüyü yenisine dönüştüren ikili deltayı hesaplar.

Çözüm, cihazlardaki mevcut Docker görüntülerini izler ve mevcut görüntüleri yeni görüntülere dönüştürmek için ikili delta düzeltme ekleri oluşturur. Sistem yalnızca delta düzeltme eklerini düşük bant genişliğine bağlı İnternet bağlantısına aktarır. Bu çözüm, ikili düzeltme eklerini oluşturmak için bazı özel mantık gerektiriyor, ancak cihazlara en az miktarda veri gönderiyor.

Değerlendirme sonuçları

Aşağıdaki tabloda yukarıdaki çözümlerin her birinin değerlendirme ölçütlerine göre nasıl ölçülmüş olduğu gösterilmektedir.

Reqs'leri karşılar Cihaz mantığı Azure mantığı Taşıma İlk resim Cihazı temel alma Uygulama katmanını güncelleştirme Temel katmanı güncelleştirme
Docker katmanlarını aktarma Yes Düşük Orta FileCatalyst %100 10.5% 22.4% %100
Docker istemcisini değiştirme Yes Orta Düşük HTTP %100 10.5% 22.4% %100
Uç cihazda derleme Hayır Yüksek Orta FileCatalyst Yok Yok Yok Yok
Tam görüntü delta aktarımı Yes Düşük Yüksek FileCatalyst %100 3.2% 0.01% 16.1%

Dikkat edilmesi gereken noktalar

Bu önemli noktalar, iş yükü kalitesini geliştiren bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.

Performans verimliliği

Bu çözüm, IoT cihazlarında yapılan güncelleştirmeler tarafından kullanılan bant genişliğini önemli ölçüde azalttı. Aşağıdaki tablolarda aktarım verimliliğindeki farkların dökümü gösterilmektedir.

Kaynak olarak Image Reconstructor:

Görüntü adı Görüntü boyutu Düzeltme eki boyutu Veri azaltma
Veri görselleştirme 228 MB 79,6 MB 65.1%
Sanal WCD 188 MB 1,5 MB 99.2%
Proxy 258 MB 29,9 MB 88.4%

Kaynak olarak önceki sürüm:

Görüntü adı Görüntü boyutu Düzeltme eki boyutu Veri azaltma
Veri görselleştirme 228 MB 0,01 MB %99,9
Sanal WCD 188 MB 0,5 MB 99.7%
Proxy 258 MB 0,04 MB %99,9

Operasyonel mükemmellik

Aşağıdaki bölümlerde çözümün ayrıntılı bir kılavuzu sağlanır.

Kaynak kod deposu

Geliştiriciler bir kaynak kodu deposundaki uç modül kaynak koduyla etkileşim kurar. Depo, aşağıdaki gibi her modülün kodunu içeren klasörlerden oluşur:


\- repository root
    - modulea
    - modulea.csproj
    - module.json
    - Program.cs
    - Dockerfile

\- moduleb
    - moduleb.csproj
    - module.json
    - Program.cs
    - Dockerfile

Önerilen kaynak kodu deposu sayısı:

  • Tüm iş akışlarında tüm modüller için bir depo.
  • Her iş akışı için bir kaynak kodu deposu.

Container Registry örnekleri

Container Registry her modülün Docker görüntülerini depolar. Container Registry için iki olası yapılandırma vardır:

  • Tüm görüntüleri depolayan tek bir Container Registry örneği.
  • Biri geliştirme, test ve hata ayıklama görüntülerini depolamak için olmak üzere iki Container Registry örneği ve yalnızca üretime hazır olarak işaretlenmiş görüntüleri içeren başka bir örnek.

Bildirim deposu

Bildirim deposu, tüm iş akışları için dağıtım bildirimlerini içerir. Şablonlar, çalışma akışlarına göre klasörlerde bulunur. Bu örnekte, iki iş akışı paylaşılan altyapı ve kapsayıcılı uygulamadır.


\- repository root
     - Workstream1
         - deployment.template.json
     - Workstream2
         - deployment.template.json

Docker görüntü derleme işlem hattı

Her modülün bir Azure Pipelines derleme işlem hattı vardır. İşlem hattı, modülleri oluşturmak ve kaydetmek için genel bir Docker derlemesi kullanır. İşlem hattı aşağıdakiler için sorumludur:

  • Kaynak kodun güvenlik taraması.
  • Docker görüntüsünü oluşturmak için temel görüntünün güvenlik taraması.
  • Modül için birim testleri çalıştırma.
  • Kaynağı docker görüntüsüne derleme. Görüntü etiketi öğesini BUILD_BUILDIDiçerir, böylece görüntü her zaman bunu yapan kaynak koda geri bağlanabilir.
  • Görüntüyü bir Container Registry örneğine gönderme.
  • Delta dosyası oluşturuluyor.
  • Görüntü için imza dosyası oluşturma ve dosyayı bir Azure depolama hesabına kaydetme.

Tüm işlem hattı örnekleri tek bir YAML işlem hattı tanımını temel alır. İşlem hattı, ortam değişkenlerini kullanarak modüller üzerinde işlem yapabilir. Filtreler her işlem hattını yalnızca değişiklikler belirli bir klasörde işlendiğinde tetikler. Bu filtre, yalnızca bir modül güncelleştirildiğinde tüm modüllerin oluşturulmasını önler.

Görüntüden cihaza işlem hattı

Görüntüden cihaza işlem hattı, docker görüntülerini bir bildirim dosyası tarafından tanımlandığı şekilde hedeflenen cihazlara dağıtır. İşlem hattının tetiklenmesi dağıtımı el ile başlatır.

İşlem hattı tanımı, bu dağıtımların bir kapsayıcıda çalıştırılmasını belirtir. İşlem hatları, kapsayıcıları temel alan görüntüler için değişken girişini destekler. Tek bir değişken tüm işlem hatları için dağıtımları denetleyebilir.

Görüntü, hangi düzeltme eklerinin derleneceğini belirleyen, düzeltme eklerini oluşturan ve bunları dosya aktarım aracının Azure tarafına dağıtan kodu içerir.

Görüntü dağıtım aracı aşağıdaki bilgilere ihtiyaç duyar:

  • Hangi görüntülerin dağıtılacağı, depodaki bildirim tarafından sağlanır.
  • İşlem hattını tetikleyen kullanıcı tarafından sağlanan, dağıtılacak cihazlar.
  • Azure SQL veritabanı tarafından sağlanan hedeflenen cihazlarda bulunan görüntüler.

İşlem hattı çıkışları şunlardır:

  • Cihazlara dağıtılması için dosya aktarım aracının Azure tarafına gönderilen yama paketleri.
  • Her cihaza hangi görüntülerin aktarıldığını işaretleyen SQL veritabanı girişleri.
  • Yeni dağıtım kümeleri için SQL veritabanı girdileri. Bu girdiler, dağıtımı sipariş eden kullanıcının adını ve e-posta adresini içerir.

Bu işlem hattı aşağıdaki adımları uygular:

  1. Dağıtım bildirimine göre gerekli görüntüleri belirler.
  2. Cihazlarda zaten hangi görüntülerin olduğunu görmek için SQL'i sorgular. Tüm görüntüler zaten varsa işlem hattı başarıyla sonlandırılır.
  3. Hangi yama paketlerinin oluşturulacağını belirler. Algoritma, hangi başlangıç görüntüsünün en küçük yama paketini oluşturdığını belirler.
    • Girişler: Dağıtılacak yeni görüntüyü içeren .tar dosyası ve cihazlardaki mevcut görüntüler için imza dosyaları.
    • Çıkış: Oluşturulacak en küçük düzeltme ekini belirlemek için mevcut görüntülerin sırası.
  4. Her cihaz için gerekli düzeltme eki paketlerini oluşturur. Benzer düzeltme eklerini bir kez oluşturur ve bunları ihtiyacı olan tüm cihazlara kopyalar.
  5. Düzeltme eklerini dağıtım için dosya aktarım aracı depolama hesabına dağıtır.
  6. Hedeflenen cihazların her birinde yeni görüntüleri olarak in transit işaretlemek için SQL'i güncelleştirir.
  7. Sql'e, görüntüyü dağıtan kişinin adı ve kişi e-postasıyla birlikte dağıtım kümesi bilgilerini ekler.

Özgün dosyanın, sonuçta elde edilen veri iş akışı olarak değiştirilmiş dosyaya çevrildiğini gösteren diyagram.

Bildirimden cihaza işlem hattı

Bildirimden cihaza işlem hattı, dağıtım bildirimini güncelleştirilen cihaz için uygun IoT Hub bağlantısına iletir. Kullanıcı işlem hattını el ile tetikler ve IoT Hub örneğinin hedefleyebilmek için bir ortam değişkeni belirtir.

İşlem hattı:

  • Dağıtımın hangi görüntülere ihtiyacı olduğunu belirler.
  • Gerekli görüntülerin tümünün hedeflenen cihazlarda olduğundan emin olmak için SQL'i sorgular. Aksi takdirde işlem hattı bir failed durumla sonlanır.
  • Yeni dağıtım bildirimini uygun IoT Hub'ına iletir.

Hızlı dosya aktarımı çözümü

Müşteri, Azure ile IoT cihazları arasında bağlantı sağlamak için FileCatalyst adlı üçüncü taraf hızlı dosya aktarım çözümünü kullanmaya devam etmek istedi. Bu çözüm, nihai tutarlı bir dosya aktarım aracıdır; başka bir deyişle aktarım uzun sürebilir, ancak sonunda dosya bilgilerini kaybetmeden tamamlanır.

Çözüm, bağlantının Azure tarafında bir Azure Depolama hesabı ve görüntü alan her cihaz için müşterinin mevcut dosya aktarımı ana bilgisayar VM'sini kullandı. Düzeltme eki, IoT Hub çalıştıran bir Linux VM'ye aktarımı paketlemektedir.

Görüntü Yeniden Yapılandırma modülü

Görüntü Yeniden Yapılandırma IoT Edge modülü, alınan düzeltme eklerini cihazlara uygular. Her cihaz, Docker açık kaynak kayıt defterini kullanarak kendi yerel kapsayıcı kayıt defterini barındırır. Görüntü Yeniden Yapılandırma işlemi, dosya aktarım VM'si ile aynı olan konak VM'de çalışır.

Modül:

  1. Yama paketini kapsayıcıya bağlı bir klasöre alır.
  2. Yapılandırma dosyasını okumak için düzeltme eki içeriğini çıkarın.
  3. Yerel kapsayıcı kayıt defterinden karmaya göre temel görüntüyü çeker.
  4. Temel görüntüyü .tar dosyası olarak kaydeder.
  5. Düzeltme ekini temel görüntüye uygular.
  6. Yeni görüntüyü içeren .tar dosyasını Docker'a yükler.
  7. Yeni görüntüyü, kolay ad ve etiket içeren bir yapılandırma dosyasıyla yerel kapsayıcı kayıt defterine gönderir.
  8. IoT Hub'a bir başarı iletisi gönderir.

İşlem herhangi bir noktada başarısız olursa modül IoT Hub'a bir hata iletisi gönderir, böylece dağıtımı tetikleyen kullanıcıya bildirim gönderilebilir.

IoT Hub

Dağıtım işlemlerinin birkaçı IoT Hub kullanır. IoT Hub, Görüntü Yeniden Yapılandırma modülünden durum iletileri almanın yanı sıra cihaz için dağıtım bildirimini ayarlar. İşlem hattı akışının geri kalanı bu bildirimi kullanır.

Görüntü Yeniden Yapılandırma iş akışına İşlem Merkezi ve IoT cihaz düzeltme ekini gösteren diyagram.

Azure İşlevleri

Azure İşlevleri IoT Hub'dan gelen ileti akışını izler ve bulutta işlem uygular.

Başarı iletisi için:

  • işlevi, cihazdaki görüntü için SQL girişinin durumunu ile in transitsucceededolarak güncelleştirir.
  • Bu görüntü bir dağıtım kümesine son ulaşan görüntüyse:
    • İşlev, kullanıcıya dağıtımın başarılı olduğunu bildirir.
    • İşlev, yeni görüntüleri kullanmaya başlamak için bildirimden cihaza işlem hattını güncelleştirir.

Hata iletisi için:

  • işlevi, cihazdaki görüntü için SQL girişinin durumunu ile in transitfailedolarak güncelleştirir.
  • İşlev, kullanıcıya görüntü aktarımının başarısız olduğunu bildirir.

operations Center ve IoT cihaz görüntüsü yeniden yapılandırma ileti iş akışı

SQL Veritabanı

SQL veritabanı, dağıtım sırasında ve sonrasında hedef cihazlardaki ve Azure tabanlı dağıtım hizmetlerindeki oluşumları izler. hem Azure İşlevleri hem de Azure Pipelines, veritabanıyla etkileşime girmek için oluşturulmuş özel bir NuGet paketi kullanır.

SQL Veritabanı aşağıdaki verileri depolar:

  • Her cihazda hangi görüntülerin bulunduğu.
  • Her cihaza hangi görüntülerin yolda olduğu.
  • Dağıtılan görüntüler bir kümeye aittir.
  • Dağıtımları sıralayan kullanıcı.

Bu örneğin amacı, sistemin gelecekteki veri panoları için gerekli verileri oluşturduğundan emin olmaktı. IoT Hub'ı sorgulamak, bildirimden cihaza işlem hattı hakkında aşağıdaki verileri sağlayabilir:

  • Dağıtımın durumu.
  • Belirli bir cihazdaki görüntüler.
  • Görüntüye sahip cihazlar.
  • Başarılı ve başarısız aktarımlardaki zaman serisi verileri.
  • Kullanıcıya dayalı dağıtım sorguları.

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazar:

Sonraki adımlar