Azure IoT Edge çalışma zamanını ve mimarisini anlama
Şunlar için geçerlidir: IoT Edge 1.3 IoT Edge 1.4 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ın uçta çalışacak kodu almasını ve sonuçları iletmesini sağlar.
IoT Edge çalışma zamanı, IoT Edge cihazlarda aşağıdaki işlevlerden sorumludur:
Cihaza iş yüklerini yükleyin ve güncelleştirin.
Cihazda Azure IoT Edge güvenlik standartlarını koruyun.
IoT Edge modüllerinin her zaman çalıştığından emin olun.
Uzaktan izleme için modülün sistem durumunu buluta bildirin.
Aşağı akış cihazları ile IoT Edge cihazlar arasındaki iletişimi yönetin.
IoT Edge bir cihazdaki modüller arasındaki iletişimi yönetin.
bir IoT Edge cihazı ile bulut arasındaki iletişimi yönetin.
- IoT Edge cihazlar arasındaki iletişimi yönetin.
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 izlerken, IoT Edge hub iletişimden sorumludur.
hem IoT Edge aracısı hem de IoT Edge hub'ı, IoT Edge bir cihazda çalışan diğer modüller gibi modüllerdir. Bunlar bazen çalışma zamanı modülleri olarak adlandırılır.
IoT Edge aracısı
IoT Edge aracısı, Azure IoT Edge çalışma zamanını oluşturan iki modülden biridir. Modüllerin örneğini oluşturma, çalıştırmaya devam etmelerini sağlama ve modüllerin durumunu IoT Hub'a geri raporlamaktan sorumludur. Bu yapılandırma verileri, IoT Edge aracısı modül ikizinin özelliği olarak yazılır.
IoT Edge güvenlik daemon'ı cihaz başlangıcında IoT Edge aracısını başlatır. Aracı, modül ikizini 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ül hakkında belirli bilgiler içerir ve modülün yaşam döngüsünü denetlemek için IoT Edge aracısı tarafından kullanılır. modülleri denetlemek için IoT Edge aracısı tarafından kullanılan tüm özellikler hakkında daha fazla bilgi için IoT Edge aracısının özellikleri ve IoT Edge hub modülü ikizleri hakkında bilgi edinin.
IoT Edge aracısı IoT Hub çalışma zamanı yanıtı gönderir. Olası yanıtların listesi aşağıdadır:
- 200 - Tamam
- 400 - Dağıtım yapılandırması hatalı biçimlendirilmiş veya geçersiz.
- 417 - Cihazda dağıtım yapılandırması ayarlanmadı.
- 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. modülleri dağıtmayı ve IoT Edge yolları oluşturmayı öğrenin.
Güvenlik
IoT Edge aracısı, bir IoT Edge cihazının güvenliğinde kritik bir rol oynar. Örneğin, başlatmadan önce 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öneticisi hakkında bilgi edinin.
IoT Edge hub'ı
IoT Edge hub'ı, Azure IoT Edge çalışma zamanını oluşturan diğer modüldür. IoT Hub aynı protokol uç noktalarını kullanıma sunarak IoT Hub için yerel bir proxy işlevi görür. Bu tutarlılık, istemcilerin IoT Edge çalışma zamanına IoT Hub olduğu gibi bağlanabileceği anlamına gelir.
IoT Edge hub'ı yerel olarak çalışan IoT Hub tam sürümü değildir. IoT Edge hub, IoT Hub için bazı görevleri sessizce temsilci olarak verir. Örneğin, IoT Edge hub'ı bir cihazın bağlanmasını sağlamak için ilk bağlantısında IoT Hub'dan 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, yetkilendirme bilgilerini buluttan yeniden indirmek zorunda kalmadan yetkilendirilecektir.
Bulut iletişimi
IoT Edge çözümünüzün kullandığı bant genişliğini azaltmak için IoT Edge hub'ı, buluta kaç gerçek bağlantı yapıldığını iyileştirir. IoT Edge hub'ı modüllerden 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ı için saydamdır. İstemciler, hepsi aynı bağlantı üzerinden gönderilse bile kendi bulut bağlantılarına sahip olduklarını düşünür. IoT Edge hub'ı, aşağı akış cihazları tarafından kullanılan protokollerden bağımsız olarak bulutla yukarı akış iletişim kurmak için AMQP veya MQTT protokollerini kullanabilir. Ancak, IoT Edge hub'ı şu anda yukarı akış protokolü ve onun çoğullama özellikleri olarak AMQP kullanarak mantıksal bağlantıları tek bir fiziksel bağlantıda birleştirmeyi destekler. AMQP varsayılan yukarı akış protokolüdür.
IoT Edge hub'ı IoT Hub bağlı olup olmadığını belirleyebilir. Bağlantı kesilirse, IoT Edge hub iletileri veya ikiz 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 ikizinin bir özelliği tarafından belirlenir. Önbelleğin boyutu sınırlanmadığından cihazın depolama kapasitesi olduğu sürece büyüyecektir. Daha fazla bilgi için bkz . Çevrimdışı özellikler.
Modül iletişimi
IoT Edge hub'ı modülden modüle iletişimi kolaylaştırır. IoT Edge hub'ı ileti aracısı olarak kullanmak modülleri birbirinden bağımsız tutar. Modüllerin yalnızca iletileri kabul ettikleri girişleri ve iletileri yazdıkları çıkışları belirtmesi gerekir. Bir çözüm geliştiricisi bu girişleri ve çıkışları birleştirerek modüllerin verileri bu çözüme özgü sırayla işlemesini sağlayabilir.
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 gönderildiği çıkışı belirtir. Aşağıdaki sahte kod output1 üzerinde bir ileti gönderir:
ModuleClient client = await ModuleClient.CreateFromEnvironmentAsync(transportSettings); await client.OpenAsync(); await client.SendEventAsync("output1", message);
İleti almak için belirli bir girişte gelen iletileri işleyen bir geri çağırma kaydedin. Aşağıdaki sahte kod , input1'de alınan tüm iletileri işlemek için kullanılacak messageProcessor işlevini kaydeder:
await client.SetInputMessageHandlerAsync("input1", messageProcessor, userContext);
Çözüm geliştiricisi, IoT Edge hub'larının modüller arasında iletileri nasıl geçireceğini belirleyen kuralları belirtmekten sorumludur. Yönlendirme kuralları bulutta tanımlanır ve modül ikizindeki IoT Edge hub'ına indirilir. Azure IoT Edge'da modüller arasındaki yolları tanımlamak için IoT Hub yolları için de aynı söz dizimi kullanılır. Daha fazla bilgi için bkz. modülleri dağıtmayı ve IoT Edge'de yollar kurmayı öğrenin.
Yerel iletişim
IoT Edge hub'ı yerel iletişimi kolaylaştırır. Cihazları ve modülleri birbirinden bağımsız tutmak için iletilere aracılık ederek cihazdan modüle ve modülden modüle iletişimleri etkinleştirir. IoT Edge hub'ı, IoT Hub tarafından desteklenen ileti yönlendirme özelliklerini destekler.
Yönlendirmeyi kullanma
Aracılık mekanizması, iletilerin cihazlar veya modüller arasında nasıl geçirileceğini belirtmek için IoT Hub ile aynı yönlendirme özelliklerini kullanır. İlk cihazlar veya modüller, iletileri kabul ettikleri girişleri ve iletileri yazdıkları çıkışları belirtir. Daha sonra çözüm geliştiricisi, olası filtrelere sahip bir kaynak (örneğin, çıkışlar) ile bir hedef (örneğin girişler) arasında iletileri yönlendirebilir.
Yönlendirme, AMQP protokolü kullanılarak Azure IoT Cihaz SDK'ları ile oluşturulmuş cihazlar veya modüller tarafından kullanılabilir. Tüm mesajlaşma IoT Hub temel öğeler (örneğin telemetri), doğrudan yöntemler, C2D, ikizler desteklenir ancak kullanıcı tanımlı konular üzerinden iletişim desteklenmez.
Yollar hakkında daha fazla bilgi için bkz. IoT Edge'de modülleri dağıtmayı ve yolları kurmayı öğrenin.
Aracılık mekanizması özellikleri kullanılabilir:
|Özellikler||Yönlendirme|
|D2C telemetrisi||✔|
|Yerel telemetri||✔|
|DirectMethods||✔|
|Ikiz||✔|
|Cihazlar için C2D||✔|
|Sıralama||✔|
|Filtreleme||✔|
|Kullanıcı tanımlı konular|
|Cihazdan Cihaza|
|Yerel yayın|
IoT Edge hub'ına 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 hub'ına bağlandığında aşağıdakiler gerçekleşir:
- Aktarım Katmanı Güvenliği (TLS) kullanılıyorsa (önerilir), istemci ile IoT Edge hub'ı arasında şifreli bir iletişim kurmak için bir TLS kanalı oluşturulur.
- Kimlik doğrulama bilgileri, kendisini tanımlamak için istemciden IoT Edge hub'ına gönderilir.
- IoT Edge hub'ı, yetkilendirme ilkesine göre bağlantıyı yetkiler 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ğlanan bağlantıları kabul eder; örneğin, üçüncü bir tarafın şifresini çözemezseniz şifrelenmiş bağlantılar.
İstemci 8883 (MQTTS) veya 5671 (AMQPS) bağlantı noktasından IoT Edge hub'ına bağlanırsa, bir TLS kanalı oluşturulmalıdır. 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'ının kök sertifikası istemciye güvenilir bir sertifika olarak yüklenmelidir. Kök sertifikaya güvenilmiyorsa, istemci kitaplığı IoT Edge hub'ı tarafından sertifika doğrulama hatasıyla reddedilir.
Aracının bu kök sertifikasını cihaz istemcilerine yüklemek için izlenecek 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 hub'ı ile aynı kök sertifikayı kullanabilir.
Kimlik Doğrulaması
IoT Edge Hub yalnızca IoT Hub kimliğine sahip cihazlardan veya modüllerden gelen bağlantıları kabul eder; örneğin, IoT Hub kaydedilmiş ve kimliklerini kanıtlamak için IoT hub tarafından desteklenen üç istemci kimlik doğrulama yönteminden birine sahiptir: Simetrik anahtarlar kimlik doğrulaması, X.509 otomatik olarak imzalanan kimlik doğrulaması, X.509 CA imzalı kimlik doğrulaması. Bu IoT Hub kimlikleri IoT Edge hub'ı tarafından yerel olarak doğrulanabilir, böylece bağlantılar çevrimdışıyken de yapılabilir.
IoT Edge modülleri şu anda yalnızca simetrik anahtar kimlik doğrulamayı destekler.
Yetkilendirme
bir istemcinin IoT Hub'de tanımlanan güvenilen istemci kümesine ait olduğunu doğrulayarak. Güvenilen istemciler kümesi, IoT Hub'da üst/alt veya cihaz/modül ilişkileri ayarlanarak belirtilir. IoT Edge'de bir modül oluşturulduğunda, bu modülle IoT Edge cihazı arasında otomatik olarak bir güven ilişkisi oluşturulur. Bu, yönlendirme aracı mekanizması tarafından desteklenen tek yetkilendirme modelidir.
Uzaktan yapılandırma
IoT Edge hub'ı tamamen bulut tarafından denetlenmektedir. Modül ikizi aracılığıyla IoT Hub yapılandırmasını alır. İkiz, iletilerin bir dağıtım içinde nasıl geçirildiğini bildiren routes adlı istenen bir özellik içerir. Yollar hakkında daha fazla bilgi için bkz. Yolları bildirme.
Ayrıca, IoT Edge hub'ına ortam değişkenleri ayarlayarak çeşitli yapılandırmalar yapılabilir.
Çalışma zamanı kalitesi telemetrisi
IoT Edge, ürün kalitesini artırmak için konak çalışma zamanından ve sistem modüllerinden anonim telemetri toplar. Bu bilgilere çalışma zamanı kalitesi telemetrisi adı verilir. Toplanan telemetri düzenli aralıklarla IoT Edge aracısından IoT Hub cihazdan buluta iletiler olarak gönderilir. Bu iletiler müşterinin normal telemetrisinde görünmez ve ileti kotası kullanmaz.
IoT Edge aracısı ve hub, cihaz performansını anlamak için toplayabileceğiniz ölçümler oluşturur. Bu ölçümlerin bir alt kümesi, çalışma zamanı kalitesi telemetrisinin bir parçası olarak IoT Edge Aracısı tarafından toplanır. Çalışma zamanı kalitesi telemetrisi için toplanan ölçümler etiketiyle etiketlenir
ms_telemetry. 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ı kalitesi telemetrisinin anonim niteliğini sağlamak için karşıya yüklemeden önce kaldırılır.
IoT Edge aracısı telemetri verilerini saatte bir toplar ve her 24 saatte bir IoT Hub bir ileti gönderir.
Cihazlarınızdan çalışma zamanı telemetrisi göndermeyi geri çevirmek istiyorsanız bunu yapmanın iki yolu vardır:
SendRuntimeQualityTelemetryedgeAgent için ortam değişkenini olarak
falseayarlayın veya
- Dağıtım sırasında Azure portal seçeneğinin işaretini kaldırın.