Yönetilen MQTT Bulutu

MQTT Canlı Ortam Kontrol Listesi: Yayına Almadan Önce 30 Kontrol

IoT ekipleri için yayın öncesi MQTT canlı ortam kontrol listesi: güvenlik, client kimliği, yeniden bağlanma davranışı, topic tasarımı, QoS ve oturumlar, izleme ve operasyonlar; canlı ortama hazır client koduyla.

Güvenli bir bulut broker ve bağlı cihazların yanında işaretlenmiş maddelerden oluşan bir pano gösteren MQTT canlı ortam kontrol listesi illüstrasyonu
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

Bu MQTT canlı ortam kontrol listesi, masanızda çalışan bir demo ile yıllarca çalışan bir filo arasındaki farkı yaratan kontrolleri bir araya getiriyor. TLS, kimlik bilgileri, client ID'ler, yeniden bağlanma davranışı, topic tasarımı, oturumlar, izleme ve uyarıları kapsamak için yayına almadan önce listeyi baştan sona uygulayın. Her madde kısa ve test edilebilirdir; sondaki kod ise bir ConnectMQ broker'ı için uyarlayabileceğiniz, canlı ortama hazır bir client gösterir.

Bu Kontrol Listesi Nasıl Kullanılır?

Her maddeyi evet veya hayır sorusu olarak ele alın ve kanıt ekleyin: bir yapılandırma dosyası, bir test sonucu, bir ekran görüntüsü. Bilerek atladığınız maddeleri gerekçesiyle birlikte yazın. Listeyi geliştirme sırasında bir kez, yayından önce tekrar ve her büyük firmware veya arka uç değişikliğinden sonra yeniden çalıştırın.

Hâlâ prototip aşamasındaysanız ücretsiz herkese açık MQTT broker öğrenmek için uygundur; ancak bu listedeki hiçbir madde ona karşı işaretlenmemelidir. Canlı ortam, kendi kimlik bilgilerinizle özel bir broker demektir.

Bölüm 1: Broker ve Güvenlik

  1. Özel broker hazır. Canlı ortam trafiği herkese açık bir test broker'ında değil, özel bir broker'da çalışır.
  2. Yalnızca TLS. Cihazlar 8883 portunu (TLS üzerinden MQTT), tarayıcılar 8084 portunu (/mqtt yolunda Secure WebSocket) kullanır. Düz 1883 ve 8083 canlı ortam firmware'inde kullanılmaz.
  3. Sertifika doğrulaması açık. Client'lar broker sertifikasını güvenilir bir CA'ya karşı doğrular. Testten kalan insecure bayrakları yoktur.
  4. CA paketi stratejisi belirlendi. Cihazların, mevcut kök sertifikaların süresi dolmadan güncel olanları alabileceği bir yol vardır.
  5. Benzersiz kimlik bilgileri. Her cihazın veya ağ geçidinin kendi kimlik bilgileri vardır; böylece biri diğerlerini etkilemeden iptal edilebilir.
  6. Kaynak kontrolünde gizli bilgi yok. Kimlik bilgileri Git'te veya uygulama paketlerinde değil, güvenli depolamada veya provizyon sistemlerinde tutulur.
  7. İptal test edildi. Staging ortamında bir kimlik bilgisini gerçekten iptal ettiniz ve cihazın reddedildiğini doğruladınız.

Bu maddelerin gerekçesi için MQTT güvenliği en iyi uygulamaları yazısına bakın.

Bölüm 2: Client Kimliği ve Oturumlar

  1. Benzersiz, sabit client ID'ler. Her client ID bir seri numarasından veya provizyon kaydından türetilir ve yeniden başlatmalar arasında asla değişmez.
  2. Yinelenen client ID yok. İki süreç asla aynı ID'yi paylaşmaz; yinelenen ID'ler sonsuz bir döngüde birbirini düşürür.
  3. Client başına clean start veya kalıcı oturum seçildi. Mesaj kaçırmaması gereken aboneler kalıcı oturum, kısa ömürlü araçlar temiz oturum kullanır.
  4. Oturum süresi dolumu bilinçli olarak ayarlandı. MQTT 5'te oturum süresi dolum aralığı, bir cihazın ne kadar süre çevrimdışı kalabileceğiyle örtüşür.
  5. Last Will yapılandırıldı. Cihazlar, arka ucun beklenmedik bağlantı kopmalarından haberdar olması için bir durum topic'inde Last Will ayarlar.

Bölüm 3: Bağlantı ve Yeniden Bağlanma

  1. Otomatik yeniden bağlanma. Client'lar ağ kaybından veya broker yeniden başlatmalarından sonra kendiliğinden yeniden bağlanır.
  2. Jitter'lı üstel backoff. Yeniden deneme gecikmeleri büyür ve rastgeleleştirilir; böylece bir filo aynı anda yeniden bağlanmaz.
  3. Yeniden bağlanmada yeniden abone olma. Kalıcı oturum kullanılmıyorsa abonelikler connect callback'inde geri yüklenir.
  4. Keepalive ayarlandı. Tipik değerler 30 ile 120 saniye arasıdır; kararlı ağlarda daha kısa, veri tasarrufu için hücresel ağlarda daha uzun.
  5. Çevrimdışı tamponlama. Cihazlar bağlantı yokken okumaları, belleği korumak için bir üst sınırla yerel olarak tamponlar.
  6. Arıza test edildi. Ağ kablosunu çektiniz, broker bağlantısını yeniden başlattınız ve cihazların gücünü kesip açtınız; toparlanma çalıştı.

Bölüm 4: Topic'ler, Payload'lar ve QoS

  1. Topic ağacı belgelendi. Yazılı bir kural seviyeleri, adlandırmayı ve örnekleri kapsar. Arka ucunuzun yönlendirme yapması gereken seviyelerden, örneğin saha, hat ve cihazdan başlayın.
  2. Yayın kodunda joker karakter yok. + ve # yalnızca aboneler tarafından kullanılır.
  3. Payload formatı sürümlendi. JSON veya ikili payload'lar, şemayı daha sonra değiştirebilmeniz için bir sürüm alanı içerir.
  4. Payload boyutu limitler dahilinde. Mesajlar, planınızın maksimum mesaj boyutuna pay bırakarak sığar.
  5. QoS mesaj türüne göre seçildi. Kaybın kabul edilebilir olduğu yüksek frekanslı telemetri için QoS 0, olaylar ve komutlar için QoS 1. Bkz. MQTT QoS seviyeleri açıklaması.
  6. Retained message'lar bilinçli kullanılıyor. Her telemetri okumasını değil, durumu ve yapılandırmayı retain edin.

Bölüm 5: Kapasite ve Limitler

  1. Bağlantı sayısı plana uyuyor. Arka uçlar, araçlar ve staging dahil en yüksek eşzamanlı bağlantı sayısı, pay bırakılarak plan limitleri içinde kalır.
  2. Mesaj hızı tahmin edildi. Saniye başına beklenen mesaj sayınızı biliyor ve bunun birkaç katında test ettiniz.
  3. Client'larda kota yönetimi. 0x97 (Quota exceeded) gibi MQTT 5 reason code'ları loglanır ve sıkı yeniden deneme döngüleri yerine geri çekilmeye yol açar.

Bölüm 6: İzleme, Uyarılar ve Operasyonlar

  1. İzleme aktif. Bağlı client'lar, mesaj akışı ve uçtan uca bir sonda izlenir. Bkz. MQTT broker izleme.
  2. Uyarılar yönlendirildi. Uyarılar bir kişiye ulaşır; broker'a erişilemiyor, toplu bağlantı kopmaları ve kota hataları için bir nöbet sorumlusu ve bir runbook vardır.
  3. Staging ortamı. Firmware ve arka uç değişikliklerini filoya ulaşmadan önce test etmek için ayrı bir broker vardır.

Özet Tablo

Alan Yayından önce olmazsa olmaz Yaygın tuzak
Güvenlik TLS, benzersiz kimlik bilgileri, iptal Firmware ile gönderilen test kimlik bilgileri
Kimlik Sabit ve benzersiz client ID'ler Her açılışta rastgele ID'ler
Bağlantı Jitter'lı backoff, çevrimdışı tampon Kesintilerden sonra yeniden bağlanma fırtınaları
Topic'ler Belgelenmiş ağaç, sürümlenmiş payload'lar Topic adlarında kişisel veri
Kapasite Bağlantılarda ve boyutta pay Arka uç ve araç bağlantılarını unutmak
Operasyonlar Sonda, uyarılar, runbook, staging Kimsenin almadığı uyarılar

Canlı Ortama Hazır Bir Client Şablonu

paho-mqtt 2.x kullanan bu Python client'ı, yukarıdaki maddelerin çoğunu uygular: sertifika doğrulamalı TLS, sabit bir client ID, bir Last Will, MQTT 5 oturum süresi dolumu, bağlantıda yeniden abone olma, backoff ve reason code loglama. Yer tutucuları ConnectMQ portalındaki kimlik bilgileriyle değiştirin.

import json
import ssl
import time
import paho.mqtt.client as mqtt
from paho.mqtt.packettypes import PacketTypes
from paho.mqtt.properties import Properties

HOST = "YOUR_BROKER_HOST"
CLIENT_ID = "YOUR_CLIENT_ID"          # sabit, cihaz başına benzersiz
BASE = f"plant1/line1/{CLIENT_ID}"
STATUS = f"{BASE}/status"

def on_connect(client, userdata, flags, reason_code, properties):
    if reason_code.is_failure:
        print("Connect failed:", reason_code)
        return
    print("Connected, session present:", flags.session_present)
    client.publish(STATUS, "online", qos=1, retain=True)
    client.subscribe(f"{BASE}/cmd", qos=1)

def on_disconnect(client, userdata, flags, reason_code, properties):
    print("Disconnected:", reason_code)   # örn. Quota exceeded

def on_message(client, userdata, msg):
    print("Command:", msg.topic, msg.payload.decode())

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=CLIENT_ID,
                     protocol=mqtt.MQTTv5)
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.tls_set(cert_reqs=ssl.CERT_REQUIRED)
client.will_set(STATUS, "offline", qos=1, retain=True)
client.reconnect_delay_set(min_delay=1, max_delay=120)
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.on_message = on_message

connect_props = Properties(PacketTypes.CONNECT)
connect_props.SessionExpiryInterval = 3600   # çevrimdışıyken oturumu 1 saat koru

client.connect(HOST, 8883, keepalive=60, clean_start=False, properties=connect_props)
client.loop_start()

while True:
    reading = {"v": 1, "temp": 21.7, "ts": int(time.time())}
    if client.is_connected():
        client.publish(f"{BASE}/telemetry", json.dumps(reading), qos=0)
    time.sleep(10)

Bir filo genelinde ilk yeniden bağlanmaya jitter eklemek için, açılışta ilk connect çağrısından önce rastgele bir saniye sayısı kadar bekleyin.

Kontrol Listesini ConnectMQ'da Uygulamak

ConnectMQ'da birkaç madde sizin için halledilir veya doğrulanması kolaylaştırılır. Her broker, client ID'lerin bağlandığı otomatik oluşturulan kimlik bilgileri alır; bu da 5. ve 8. maddeleri zorunlu kılar. 8883'teki TLS ve 8084'teki Secure WebSocket, standart CA paketlerinin güvendiği Let's Encrypt sertifikalarını kullanır. Flood koruması ve tekrarlanan başarısız oturum açma denemelerinden sonra IP engelleme, normalde kendiniz kuracağınız bir katman ekler.

  1. madde için plan limitlerini kontrol edin: ücretsiz Serverless planı 25 bağlantıya, QoS 1'e ve 256 KB mesajlara kadar destekler; Serverless (Paid) 1.000 bağlantıya, QoS 2'ye, 1 MB mesajlara ve paylaşımlı aboneliklere kadar destekler; Dedicated ve BYOC ise size izole kapasite sunar. 28. ve 29. maddeler için portalın panosunu, canlı topic gezginini ve uyarı kaydıyla birlikte eşik tabanlı uyarı kurallarını kullanın ve kritik ağ geçitleri için $SYS/broker/connection/{clientId}/state topic'ine abone olun. Ücretsiz bir Serverless broker, 30. madde için de iyi bir staging ortamı olur.

ConnectMQ ile Başlayın

Kredi kartı gerekmeden ücretsiz Serverless planıyla başlayarak canlı ortama hazır broker'ınızı app.connectmq.com adresinde oluşturun. Pilotun ötesine geçmeye hazır olduğunuzda MQTT prototipten canlı ortama geçiş rehberimizi okuyun, seçenekleri bulut MQTT broker rehberinde karşılaştırın veya barındırılan bir MQTT broker'ın sizin için neleri üstlendiğini görün.

Sık Sorulan Sorular

MQTT canlı ortama geçmeden önce en sık atlanan madde hangisidir?

Gerçek arızalar altında yeniden bağlanma davranışı. Pek çok ekip yalnızca sorunsuz senaryoyu test eder, ardından ilk kesintiden sonra yeniden bağlanma fırtınalarını veya yinelenen client ID'leri keşfeder.

Canlı ortamdaki cihazlar QoS 2 kullanmalı mı?

Nadiren. Alıcı tarafta idempotent işleme ile QoS 1, çoğu durumu daha az ek yükle karşılar; QoS 2'yi yinelenmelerin gerçekten zararlı olduğu mesajlar için saklayın.

Herkese açık test broker'ını canlı ortamda kullanabilir miyim?

Hayır. Herkese açık broker'lar herkes tarafından okunabilir ve sıkı limitlere sahiptir. Kendi kimlik bilgileriniz ve TLS ile özel bir broker kullanın.

Kontrol listesini ne sıklıkla yeniden çalıştırmalıyım?

Her lansmandan önce ve önemli firmware, arka uç veya plan değişikliklerinden sonra. Denetimlerin ve devir teslimlerin kolay olması için kanıtları saklayın.

İlgili yazılar

BYOC MQTT Broker: Kendi Bulutunuzu Getirin Modeli Açıklandı

BYOC MQTT broker sizin bulut hesabınızda çalışır ama bir sağlayıcı tarafından işletilir. Modelin nasıl işlediğini, sorumluluk paylaşımını ve hesabınızı buna nasıl hazırlayacağınızı öğrenin.

7 dk okuma

Google Cloud IoT Core Alternatifi: Kapanış Sonrası Seçenekler ve Geçiş

Google, Cloud IoT Core'u Ağustos 2023'te kullanımdan kaldırdı. Bu rehber gerçekçi alternatifleri karşılaştırıyor, IoT Core kavramlarını standart MQTT'ye eşliyor ve verileriniz Google Cloud'a akmaya devam ederken cihazlarınızı yönetilen bir broker'a nasıl taşıyacağınızı gösteriyor.

7 dk okuma

Saniyede MQTT Mesaj Sayısı: Verim Nasıl Tahmin Edilir ve Ölçülür

MQTT verim planlaması birkaç formüle ve tek bir dürüst ölçüme dayanır. Saniyedeki gelen ve giden mesaj sayısını nasıl tahmin edeceğinizi, tepe değerleri nasıl hesaba katacağınızı ve sonucu bir broker planına nasıl eşleyeceğinizi öğrenin.

6 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.