Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Bu ayar, Aracı kaynağını değiştirmenizi gerektirir. Yalnızca Azure CLI veya Azure portalı kullanılarak ilk dağıtımda yapılandırılır. Aracı yapılandırma değişiklikleri gerekiyorsa yeni bir dağıtım gerekir. Daha fazla bilgi edinmek için bkz . Varsayılan Aracıyı özelleştirme.
Disk destekli ileti arabelleği özelliği, dağıtılmış MQTT aracısı içindeki ileti kuyruklarının verimli yönetimi için kullanılır. Avantajlara şunlar dahildir:
- Verimli kuyruk yönetimi: MQTT aracısında her abone bir ileti kuyruğuyla ilişkilendirilir. Abonenin ileti işleme hızı kuyruğun boyutunu doğrudan etkiler. Abone iletileri yavaş işlerse veya bağlantıyı keserse ancak bir MQTT kalıcı oturumu isterse, kuyruk kullanılabilir bellekten daha büyük olabilir.
- Kalıcı oturumlar için veri koruma: Disk destekli ileti arabelleği özelliği, bir kuyruk kullanılabilir belleği aştığında diske sorunsuz bir şekilde arabelleğe alındığından emin olur. Bu özellik, veri kaybını önler ve MQTT kalıcı oturumlarını destekler ve abonelerin yeniden bağlandıkları sırada ileti kuyruklarını olduğu gibi sürdürebilmelerini sağlar. Disk kısa ömürlü depolama olarak kullanılır ve bellekten taşma görevi görür. Diske yazılan veriler dayanıklı değildir ve pod çıktığında kaybolur. Her arka uç zincirinde en az bir pod işlevsel kalırsa, bir bütün olarak aracı hiçbir veri kaybetmez.
- Bağlantı sorunlarını işleme: Bulut bağlayıcıları, ağ bağlantısı kesildiği için Azure Event Grid MQTT aracısı gibi dış sistemlerle iletişim kuramadıklarında bağlantı sorunlarıyla karşılaşabilen kalıcı oturumlara sahip aboneler olarak kabul edilir. Bu tür senaryolarda iletiler (PUBLISHes) birikir. MQTT aracısı, bağlantı geri yüklenene kadar bu iletileri akıllı bir şekilde belleğe veya diske arabelleğe alır ve bu da ileti bütünlüğünü sağlar.
Varsayılan olarak, disk destekli ileti arabelleği özelliği devre dışıdır. Bu durumda, okuyucu havuzu veya karalama havuzu abone kuyruğu sınırı tarafından tanımlanan sınıra ulaştığında iletiler bellekte kalır ve istemcilere geri baskı uygulanır.
Disk destekli ileti arabelleğinin yapılandırılması, özellikle ileti işleme hızının ve bağlantısının kritik olduğu senaryolarda güçlü ve güvenilir bir ileti kuyruğa alma sisteminin korunması için gereklidir.
Not
MQTT aracısı, ek şifreleme olmadan istemcilerden alınan verileri diske tam olarak yazar. Diskin güvenliğini sağlamak, aracının depolayan verileri korumak için gereklidir.
Yapılandırma seçenekleri
Disk destekli ileti arabelleği yapılandırmak için Aracı kaynağındaki bölümü düzenleyin diskBackedMessageBuffer . Şu anda bu yapılandırma yalnızca komutunu kullanarak Azure IoT İşlemlerini --broker-config-file dağıttığınızda bayrağı kullanılarak az iot ops create desteklenir.
Başlamak için DiskBackedMessageBuffer API başvurusunu izleyerek bir Aracı yapılandırma dosyası hazırlayın.
Örneğin, en basit yapılandırma yalnızca en büyük boyutu belirtmeyi içerir. Bu durumda, bir emptyDir birim bağlanır.
maxSize Değeri birimin boyut sınırı emptyDir olarak kullanılır. Ancak birim sınırlamaları emptyDir nedeniyle bu seçenek en az tercih edilen seçenektir.
{
"diskBackedMessageBuffer": {
"maxSize": "<SIZE>"
}
}
Daha iyi bir disk destekli ileti arabelleği yapılandırması elde etmek için kısa ömürlü birim veya kalıcı birim talebi belirterek ileti arabelleğinize ayrılmış bir depolama birimi bağlayın. Örneğin:
{
"diskBackedMessageBuffer": {
"maxSize": "<SIZE>",
"ephemeralVolumeClaimSpec": {
"storageClassName": "<NAME>",
"accessModes": [
"<MODE>"
]
}
}
}
{
"persistentVolumeClaimSpec": {
"maxSize": "<SIZE>",
"ephemeralVolumeClaimSpec": {
"storageClassName": "<NAME>",
"accessModes": [
"<MODE>"
]
}
}
}
Aşağıdaki ayarları yaparak aracı iletisi arabelleği seçeneklerini uyarlayın:
- Birimi yapılandırma: İleti arabelleğiniz için ayrılmış bir depolama birimi bağlamak üzere bir birim talep şablonu belirtin.
-
Bir depolama sınıfı seçin: özelliğini kullanarak istenen depolama sınıfını
storageClassNametanımlayın. - Erişim modlarını tanımlama: Biriminiz için ihtiyacınız olan erişim modlarını belirleyin. Daha fazla bilgi için bkz . Kalıcı birim erişim modları.
Farklı ses düzeyi modlarını anlamak için aşağıdaki bölümleri kullanın:
- Kısa ömürlü birim tercih edilen seçenektir.
- Kalıcı birim bir sonraki tercih edilen seçenektir.
- emptyDir birimi en az tercih edilen seçenektir.
Hem kalıcı hem de kısa ömürlü birimler genellikle aynı depolama sınıfları tarafından sağlanır. Her iki seçenek de kullanılabiliyorsa kısa ömürlü seçeneğini belirleyin. Kısa ömürlü birimler için Kubernetes 1.23 veya üzeri gerekir.
İpucu
Kısa Ömürlü Birim Talebi (EVC) veya Kalıcı Birim Talebi (PVC) şablonu belirttiğinizde, seçtiğiniz bir depolama sınıfını kullanabilirsiniz ve bu da bazı dağıtım senaryolarında esnekliği artırır. Örneğin, BIR PVC şablonu kullanılarak sağlanan kalıcı birimler, küme durumunu incelemek için yararlı olan gibi kubectl get pvkomutlarda görünür.
Kubernetes düğümlerinizde ileti arabelleği için yeterli yerel disk alanı yoksa, Azure Blob Depolama gibi ağ depolama alanı sağlayan bir depolama sınıfı kullanın. İleti arabelleği hızlı erişimden yararlandığından ve dayanıklılık gerektirmediğinden daha küçük maxSize bir değere sahip yerel disk kullanmak daha iyidir.
Disk destekli ileti arabelleği ile IoT İşlemlerini dağıtma
Disk destekli ileti arabelleği kullanmak için bayrağıyla komutunu kullanarak IoT İşlemleri'ni az iot ops create dağıtın --broker-config-file . Aşağıdaki komuta bakın. (Diğer parametreler kısa süre için atlanır.)
az iot ops create ... --broker-config-file <FILE>.json
Bu ayar dağıtımdan sonra değiştirilemez. Disk destekli ileti arabelleği yapılandırmasını değiştirmek için IoT İşlemleri örneğini yeniden dağıtın.
Kısa ömürlü birim
Kısa ömürlü birim , ileti arabelleğiniz için tercih edilen seçenektir.
Kısa ömürlü birim için Depolama sağlayıcılarıyla ilgili dikkat edilmesi gerekenler bölümündeki önerileri izleyin.
özelliğinin ephemeralVolumeClaimSpec değeri, arka uç zincirlerinin belirtimlerinde ephemeral.volumeClaimTemplate.spec birimin özelliği olarak StatefulSet kullanılır.
Örneğin, 1 gigabayt kapasiteli kısa ömürlü bir birim kullanmak için Aracı kaynağınızda aşağıdaki parametreleri belirtin:
{
"diskBackedMessageBuffer": {
"maxSize": "1G",
"ephemeralVolumeClaimSpec": {
"storageClassName": "foo",
"accessModes": [
"ReadWriteOnce"
]
}
}
}
Kalıcı birim
Kalıcı birim, kısa ömürlü birimden sonra ileti arabelleğiniz için bir sonraki tercih edilen seçenektir.
Kalıcı birim için Depolama sağlayıcılarıyla ilgili dikkat edilmesi gerekenler bölümündeki önerileri izleyin.
özelliğinin persistentVolumeClaimSpec değeri, arka uç zincirlerinin volumeClaimTemplates.spec belirtimlerinin özelliği olarak StatefulSet kullanılır.
Örneğin, 1 gigabayt kapasiteli kalıcı bir birim kullanmak için Aracı kaynağınızda aşağıdaki parametreleri belirtin:
{
"diskBackedMessageBuffer": {
"maxSize": "1G",
"persistentVolumeClaimSpec": {
"storageClassName": "foo",
"accessModes": [
"ReadWriteOnce"
]
}
}
}
emptyDir birimi
EmptyDir birimi, kalıcı birimden sonra en az tercih edilen seçenektir.
Birimi emptyDir yalnızca dosya sistemi kotaları olan bir küme kullandığınızda kullanın. Daha fazla bilgi için dosya sistemi proje kotası sekmesine bakın. Özellik etkinleştirilmemişse, küme herhangi bir sınırı zorlamayan düzenli taramalar yapar ve konak düğümün disk alanını doldurmasına ve tüm konak düğümünü iyi durumda değil olarak işaretlemesine izin verir.
Örneğin, 1 gigabayt kapasiteli bir emptyDir birim kullanmak için Aracı kaynağınızda aşağıdaki parametreleri belirtin:
{
"diskBackedMessageBuffer": {
"maxSize": "1G"
}
}
Depolama sağlayıcıları için dikkat edilmesi gerekenler
Örneğin gibi rancher.io/local-pathsağlayıcılar kullanırken seçtiğiniz depolama sağlayıcısının davranışını göz önünde bulundurun. Sağlayıcı sınırları desteklemiyorsa birimi doldurmak düğümün disk alanını tüketir. Bu davranış Kubernetes'in düğümü ve ilişkili tüm podları iyi durumda değil olarak işaretlemesine neden olabilir. Depolama sağlayıcınızın bu tür senaryolarda nasıl davrandığını anlamak çok önemlidir.
Devre dışı
Disk destekli ileti arabelleği kullanmak istemiyorsanız Aracı kaynağınıza özelliğini eklemeyin diskBackedMessageBufferSettings . Bu davranış aynı zamanda varsayılandır.
Kalıcılık
Disk destekli ileti arabelleği özelliğinin kalıcılık ile eş anlamlı olmadığını anlamak önemlidir. Bu bağlamda kalıcılık, pod yeniden başlatmaları arasında devam eden verileri ifade eder. Bu özellik, verilerin diske kaydedilmesi için geçici depolama alanı sağlar ve bu da pod yeniden başlatmaları sırasında bellek taşmalarını ve veri kaybını önler.