Azure IoT Edge çalışma zamanını ve mimarisini anlayın

Uygulama hedefi:  Evet simgesi IoT Edge 1,1 diğer sürümler: IoT Edge 1,2

Uygulama hedefi:  Evet simgesi IoT Edge 1,2 diğer sürümler: IoT Edge 1,1

IoT Edge çalışma zamanı, bir cihazı bir IoT Edge cihazına dönüştüren program koleksiyonudur. Toplu olarak, IoT Edge çalışma zamanı bileşenleri, IoT Edge cihazların kenarda çalışacak kodu almasını ve sonuçları iletmelerini sağlar.

IoT Edge çalışma zamanı, IoT Edge cihazlarda aşağıdaki işlevlerden sorumludur:

  • Cihaza iş yüklerini yükleyip güncelleştirin.

  • Cihazda Azure IoT Edge güvenlik standartlarının bakımını yapın.

  • IoT Edge modüllerinin her zaman çalıştığından emin olun.

  • Uzaktan izleme için modül durumunu buluta bildirin.

  • Aşağı akış cihazları ve IoT Edge cihazları arasındaki iletişimi yönetin.

  • IoT Edge cihazındaki modüller arasındaki iletişimi yönetin.

  • IoT Edge bir cihaz ve bulut arasındaki iletişimi yönetin.

  • IoT Edge cihazlar arasındaki iletişimi yönetin.

Çalışma zamanı, Öngörüler ve modül sistem durumunu IoT Hub ile iletişim kurar

IoT Edge çalışma zamanının sorumlulukları iki kategoriye ayrılır: iletişim ve modül yönetimi. Bu iki rol IoT Edge çalışma zamanının parçası olan iki bileşen tarafından gerçekleştirilir. IoT Edge Aracısı modülleri dağıtır ve izler, ancak IoT Edge merkezi iletişimden sorumludur.

IoT Edge Aracısı ve IoT Edge hub 'ı, tıpkı bir IoT Edge cihazında çalışan diğer modüller gibi modüllerdir. Bazen çalışma zamanı modülleri olarak anırlar.

IoT Edge Aracısı

IoT Edge Aracısı, Azure IoT Edge çalışma zamanını oluşturan iki modülden biridir. Modüllerin çalıştırılmasından ve modüllerin durumunun IoT Hub 'e geri bildirilmesinden emin olmanın bir sorumlusu vardır. Bu yapılandırma verileri, ikizi IoT Edge Agent modülünün bir özelliği olarak yazılmıştır.

IoT Edge güvenlik arka plan programı , cihaz başlangıcında IoT Edge aracısını başlatır. Aracı, ikizi modülünü IoT Hub alır ve dağıtım bildirimini inceler. Dağıtım bildirimi, başlatılması gereken modülleri bildiren bir JSON dosyasıdır.

Dağıtım bildirimindeki her öğe, bir modülle ilgili belirli bilgileri içerir ve IoT Edge Aracısı tarafından modülün yaşam döngüsünü denetlemek için kullanılır. IoT Edge Aracısı tarafından modülleri denetlemek için kullanılan tüm özellikler hakkında daha fazla bilgi için, IoT Edge aracısının özellikleri ve IoT Edge merkezi modül TWINS' i okuyun.

IoT Edge Aracısı IoT Hub çalışma zamanı yanıtı gönderir. Olası yanıtların bir listesi aşağıda verilmiştir:

  • 200-TAMAM
  • 400-dağıtım yapılandırması hatalı biçimlendirilmiş veya geçersiz.
  • 417-cihazda bir dağıtım yapılandırma kümesi yok.
  • 412-dağıtım yapılandırmasındaki şema sürümü geçersiz.
  • 406-IoT Edge cihaz çevrimdışı veya durum raporları göndermiyor.
  • 500-IoT Edge çalışma zamanında bir hata oluştu.

Dağıtım bildirimleri oluşturma hakkında daha fazla bilgi için bkz. IoT Edge modül dağıtmayı ve yolları oluşturmayı öğrenin.

Güvenlik

IoT Edge Aracısı bir IoT Edge cihazının güvenliğine kritik bir rol oynar. Örneğin, başlamadan önce bir modülün görüntüsünü doğrulama gibi eylemler gerçekleştirir.

Azure IoT Edge güvenlik çerçevesi hakkında daha fazla bilgi için IoT Edge Güvenlik Yöneticisihakkında makalesini okuyun.

IoT Edge hub 'ı

IoT Edge hub, Azure IoT Edge çalışma zamanını oluşturan diğer modüldür. Aynı protokol uç noktalarını IoT Hub olarak kullanıma sunarak IoT Hub için yerel bir ara sunucu işlevi görür. Bu tutarlılık, istemcilerin IoT Edge çalışma zamanına yalnızca IoT Hub gibi bağlanabildikleri anlamına gelir.

IoT Edge hub 'ı yerel olarak çalışan IoT Hub tam bir sürümü değildir. IoT Edge hub, IoT Hub için bazı görevleri sessizce devreder. Örneğin, IoT Edge hub, bir cihazın bağlanmasını sağlamak üzere ilk bağlantısı üzerindeki IoT Hub yetkilendirme bilgilerini otomatik olarak indirir. İlk bağlantı kurulduktan sonra, yetkilendirme bilgileri IoT Edge hub tarafından yerel olarak önbelleğe alınır. Bu cihazdan gelecek bağlantıların, buluttan yeniden yetkilendirme bilgileri indirmesi gerekmeden yetkilendirilir.

Bulut iletişimi

IoT Edge çözümünüzün kullandığı bant genişliğini azaltmak için, IoT Edge hub 'ı buluta kaç tane gerçek bağlantı yapıldığını en iyi duruma getirir. IoT Edge hub, modüller veya aşağı akış cihazlarından mantıksal bağlantılar alır ve bunları buluta tek bir fiziksel bağlantı için birleştirir. Bu işlemin ayrıntıları çözümün geri kalanına saydamdır. İstemciler, hepsi aynı bağlantı üzerinden gönderilse de, buluta kendilerine ait bağlantıları olduğunu düşündüler. IoT Edge hub 'ı, aşağı akış cihazları tarafından kullanılan protokollerden bağımsız olarak, buluta yukarı akış ile iletişim kurmak için AMQP veya MQTT protokolünü kullanabilir. Ancak, IoT Edge merkezi şu anda yalnızca AMQP 'yi yukarı akış protokolü ve çoğullama özellikleri olarak kullanarak tek bir fiziksel bağlantı halinde birleştirmeyi destekler. AMQP varsayılan yukarı akış protokolüdür.

IoT Edge hub, fiziksel cihazlar ve IoT Hub arasında bir ağ geçididir

IoT Edge hub, IoT Hub bağlanıp bağlanmadığını belirleyebilir. Bağlantı kaybolursa IoT Edge hub iletileri veya ikizi güncelleştirmelerini yerel olarak kaydeder. Bir bağlantı yeniden kurulduktan sonra tüm verileri eşitler. Bu geçici önbellek için kullanılan konum, IoT Edge hub 'ının modül ikizi bir özelliği tarafından belirlenir. Önbelleğin boyutu artmaz ve cihazın depolama kapasitesi olduğu sürece büyüyecektir. Daha fazla bilgi için bkz. çevrimdışı yetenekler.

Modül iletişimi

IoT Edge hub, modülü modül iletişimine kolaylaştırır. İleti Aracısı olarak IoT Edge hub 'ı kullanmak, modülleri birbirinden bağımsız olarak tutar. Modüller yalnızca iletileri kabul ettikleri girişleri ve ileti yazdıkları çıkışları belirtmeleri gerekir. Bir çözüm geliştiricisi, bu girdileri ve çıkışları birlikte birleştirerek modüllerin bu çözüme özgü sırada verileri işlemesini sağlar.

IoT Edge hub, modüle modül iletişimini kolaylaştırır

IoT Edge hub 'ına veri göndermek için, bir modül SendEventAsync yöntemini çağırır. İlk bağımsız değişken iletinin hangi çıktıda gönderileceğini belirtir. Aşağıdaki sözde kod output1 üzerine bir ileti gönderir:

ModuleClient client = await ModuleClient.CreateFromEnvironmentAsync(transportSettings);
await client.OpenAsync();
await client.SendEventAsync("output1", message);

Bir ileti almak için, belirli bir girişte gelen iletileri işleyen bir geri çağırma işlemini kaydettirin. Aşağıdaki sözde kod, input1 üzerinde alınan tüm iletileri işlemek Için kullanılacak MessageProcessor işlevini kaydeder:

await client.SetInputMessageHandlerAsync("input1", messageProcessor, userContext);

Moduleclient sınıfı ve iletişim yöntemleri hakkında daha fazla bilgi için bkz. tercih ettiğiniz SDK dili için API başvurusu: C#, C, Python, Javaveya Node.js.

Çözüm geliştiricisi, IoT Edge hub 'ının iletileri modüller arasında nasıl geçireceğini belirleyen kuralları belirtmekten sorumludur. Yönlendirme kuralları bulutta tanımlanmıştır ve modülünde IoT Edge hub 'ına dağıtılır ikizi. IoT Hub yollar için aynı söz dizimi, Azure IoT Edge modüller arasındaki yolları tanımlamak için kullanılır. Daha fazla bilgi için bkz. IoT Edge modül dağıtmayı ve yollar oluşturmayı öğrenin.

Modüller arasındaki rotalar IoT Edge hub 'ına gider

Yerel iletişim

IoT Edge hub, yerel iletişimi kolaylaştırır. Cihazları ve modülleri birbirinden bağımsız tutmak üzere iletiler sunarak cihazdan modüle, modüle modüle, cihazdan cihaza iletişimler sağlar.

Not

MQTT Aracısı özelliği, IoT Edge sürüm 1,2 ile genel önizlemede. Açıkça etkin olmalıdır.

IoT Edge hub 'ı iki aracılı mekanizmayı destekler:

  1. IoT Hub ve tarafından desteklenen ileti yönlendirme özellikleri
  2. MQTT standart v 3.1.1 karşılayan genel amaçlı MQTT Aracısı

Yönlendirmeyi kullanma

İlk aracı mekanizması, iletilerin cihazlar veya modüller arasında nasıl geçtiğini belirtmek için IoT Hub ile aynı yönlendirme özelliklerinden yararlanır. İlk cihazlar veya modüller iletileri kabul ettikleri girişleri ve ileti yazdıkları çıkışları belirtir. Daha sonra bir çözüm geliştiricisi, iletileri bir kaynak, örneğin çıktılar ve bir hedef (örn. girişler) gibi olası filtrelerle yönlendirebilir.

Modüller arasındaki rotalar IoT Edge hub 'ına gider

Yönlendirme, AMQP veya MQTT protokolü aracılığıyla Azure IoT cihaz SDK 'Ları ile oluşturulan cihazlar veya modüller tarafından kullanılabilir. Tüm mesajlaşma IoT Hub temel elemanlar, örn. telemetri, doğrudan Yöntemler, C2D, TWINS desteklenir, ancak kullanıcı tanımlı konularda iletişim desteklenmez.

Rotalar hakkında daha fazla bilgi için bkz. IoT Edge modül dağıtmayı ve yolları oluşturmayı öğrenin

MQTT aracısını kullanma

İkinci aracı mekanizması standart bir MQTT aracıyı temel alan mekanizmadır. MQTT, kaynak kısıtlı cihazlarda en iyi performansı garantilayan basit bir ileti aktarım protokolüdür ve popüler bir yayımlama ve abone olma standardıdır. Cihazlar veya modüller, diğer cihazlar veya modüller tarafından yayımlanan iletileri almak için konu başlıklarına abone olur. IoT Edge, MQTT sürüm 3.1.1belirtimlerine uygun kendi MQTT aracısını uygulamaya almaktadır.

MQTT aracısı yönlendirmeye kıyasla iki ek iletişim deseni sağlar: yerel yayın ve noktadan noktaya iletişim. Yerel yayın, bir cihaz veya modülün birden fazla cihazı veya modülü yerel olarak uyarması gereken zaman kullanışlıdır. Noktadan noktaya iletişim, iki IoT Edge IoT cihazlarının buluta gidiş dönüş olmadan yerel olarak iletişim kurmasına olanak tanır.

IoT Edge hub'ı ile yerel olarak yayımlama ve abone olma

MQTT aracısı, MQTT protokolü veya genel amaçlı MQTT istemcileri aracılığıyla iletişim kuran Azure IoT Cihaz SDK'ları ile yerleşik cihazlar veya modüller tarafından kullanılabilir. C2D hariç tüm mesajlaşma IoT Hub (telemetri, doğrudan yöntemler gibi) ikizler de desteklene. IoT Hub tarafından kullanılan özel IoT Hub temel öğeler de desteklene ve kullanıcı tanımlı konular da bu şekildedir. Bu konu, özel IoT Hub bir konu veya kullanıcı tanımlı bir konu olabilir.

Yönlendirme mekanizmasının aksine, iletilerin sıralaması yalnızca en iyi çabadır ve garanti edilemez ve iletilerin filtresini filtreleme aracı tarafından desteklanmaz. Ancak bu özelliklerin olmaması, MQTT aracılarının yönlendirmeden daha hızlı olmasına olanak sağlar.

MQTT aracısı hakkında daha fazla bilgi için bkz. IoT Edge

Aracılık mekanizmaları arasındaki karşılaştırma

Her aracı mekanizmasında kullanılabilen özellikler şunlardır:

Özellikler Yönlendirme MQTT aracısı
D2C telemetrisi
Yerel telemetri
DirectMethods
Ikiz
Cihazlar için C2D
Sıralama
Filtreleme
Kullanıcı tanımlı konular
Cihazdan Cihaza
Yerel yayın
Performans

IoT Edge hub'a bağlanma

IoT Edge hub'ı, MQTT protokolü veya AMQP protokolü üzerinden cihaz veya modül istemcilerinden gelen bağlantıları kabul eder.

Not

IoT Edge hub'ı MQTT veya AMQP kullanarak bağlanan istemcileri destekler. HTTP kullanan istemcileri desteklemez.

İstemci IoT Edge bağlandığında aşağıdakiler gerçekleşir:

  1. Aktarım Katmanı Güvenliği (TLS) kullanılıyorsa (önerilir), istemci ile istemci merkez arasında şifrelenmiş bir iletişim kurmak için bir TLS kanalı IoT Edge kurulur.
  2. Kimlik doğrulama bilgileri kendisini tanımlamak için istemciden IoT Edge hub'lara gönderilir.
  3. IoT Edge hub, bağlantıyı yetkilendirme ilkesine göre yetkilendir veya reddeder.

Güvenli bağlantılar (TLS)

Varsayılan olarak, IoT Edge hub'ı yalnızca Aktarım Katmanı Güvenliği (TLS) ile güvenliği sağlanacak bağlantıları kabul eder. Örneğin, üçüncü taraf şifrelerini çözemedikleri şifrelenmiş bağlantılar.

İstemci 8883 (MQTTS) veya 5671 (AMQPS) bağlantı noktası üzerinden IoT Edge hub'a bağlanırsa TLS kanalının inşası gerekir. TLS el sıkışması sırasında, IoT Edge hub'ı istemcinin doğrulaması gereken sertifika zincirini gönderir. Sertifika zincirini doğrulamak için, IoT Edge hub'larının kök sertifikası istemciye güvenilir bir sertifika olarak yüklenmeli. Kök sertifikaya güvenilmiyorsa, istemci kitaplığı sertifika doğrulama hatasıyla IoT Edge hub'ı tarafından reddedilir.

Aracının bu kök sertifikasını cihaz istemcilerine yüklemek için izlenebilecek adımlar saydam ağ geçidinde ve aşağı akış cihazı hazırlama belgelerinde açıklanmıştır. Modüller, IoT Edge daemon API'sini kullanarak IoT Edge sertifikayı kullanabilir.

Kimlik Doğrulaması

IoT Edge Hub yalnızca IoT Hub'a kaydedilmiş ve kimliklerini kanıtlamak için IoT hub tarafından desteklenen üç istemci kimlik doğrulama yönteminden biri olan IoT Hub kimliğine sahip cihazlardan veya modüllerden gelen bağlantıları kabul eder:Simetrik anahtarlar kimlik doğrulaması , X.509otomatik olarak imzalanan kimlik doğrulaması , X.509 CAimzalı kimlik doğrulaması. Bu IoT Hub, bağlantının çevrimdışıyken yine de gerçek IoT Edge hub'ı tarafından yerel olarak doğrulanabilir.

Notlar:

  • IoT Edge modüller şu anda yalnızca simetrik anahtar kimlik doğrulamasını destekler.
  • Yalnızca yerel kullanıcı adı ve parolaları olan MQTT istemcileri, IoT Edge hub MQTT aracısı tarafından kabul edilmemektedir, bu istemcilerin IoT Hub kullanmaları gerekir.

Yetkilendirme

Kimlik doğrulaması yapıldıktan sonra, IoT Edge hub'ı istemci bağlantılarını yetkilendirmek için iki yol kullanır:

  • bir istemcinin, istemcide tanımlanan güvenilir istemci kümesine ait olduğunu IoT Hub. Güvenilen istemci kümesi, üst/alt öğe veya cihaz/modül ilişkileri ayar tarafından IoT Hub. Bu modülde bir modül IoT Edge, bu modülle modülün kendi cihaz arasında otomatik olarak bir IoT Edge oluşturulur. Yönlendirme aracı mekanizması tarafından desteklenen tek yetkilendirme modeli bu.

  • Yetkilendirme ilkesi ayarerek. Bu yetkilendirme ilkesi, IoT Edge hub' daki kaynaklara erişen tüm yetkili istemci kimliklerini liste IoT Edge belgedir. Bu, IoT Edge hub MQTT aracısı tarafından kullanılan birincil yetkilendirme modelidir, ancak üst/alt ve cihaz/modül ilişkileri de MQTT aracısı tarafından IoT Hub anlaşılabilir.

Uzaktan yapılandırma

IoT Edge merkezi tamamen bulut tarafından denetlendi. Modül ikizi aracılığıyla IoT Hub yapılandırmasından alır. Şunları içerir:

  • Rota yapılandırması
  • Yetkilendirme ilkeleri
  • MQTT köprüsü yapılandırması

Ayrıca, IoT Edge hub'sinde ortam değişkenleri ayar IoT Edge yapılabilir.

Çalışma zamanı kalitesi telemetrisi

IoT Edge kalitesini artırmak için konak çalışma zamanından ve sistem modüllerinden anonim telemetri toplar. Bu bilgilere çalışma zamanı kalitesi telemetrisi denir. Toplanan telemetri düzenli aralıklarla cihaz-bulut iletileri olarak gönder IoT Hub aracıdan IoT Edge gönderilir. Bu iletiler müşterinin normal telemetrisinde görünmez ve herhangi bir ileti kotası tüketmez.

IoT Edge aracı ve hub, cihaz performansını anlamak için toplayabilirsiniz ölçümleri üretir. Bu ölçümlerin bir alt kümesi, çalışma zamanı IoT Edge telemetri verileri kapsamında IoT Edge Aracısı tarafından toplanır. Çalışma zamanı kalite telemetrisi için toplanan ölçümler etiketiyle ms_telemetry etiketlenmiş. Kullanılabilir tüm ölçümler hakkında bilgi için bkz. Yerleşik ölçümlere erişme.

Cihaz ve modül adları gibi kişisel veya kurumsal olarak tanımlanabilir bilgiler, çalışma zamanı kalite telemetrilerinin anonim yapısı için karşıya yüklenmeden önce kaldırılır.

IoT Edge aracı her saat telemetri toplar ve her 24 saatte bir IoT Hub ileti gönderir.

Cihazlarınıza çalışma zamanı telemetrisi göndermeyi geri almak isterseniz, bunu yapmak için iki yol vardır:

  • SendRuntimeQualityTelemetry false edgeAgent için ortam değişkenlerini olarak ayarlayın veya
  • Dağıtım sırasında uygulamanın Azure portal işaretini kaldırın.

Sonraki adımlar