---
title: 'Çoklu Küme Yönetimi'
source: 'https://academia.sh/tr/kurslar/orkestrasyon/coklu-kume-yonetimi'
course: 'Konteyner Orkestrasyonu'
language: tr
updated: '2026-08-17T18:09:09+00:00'
license: 'CC BY-SA 4.0'
---

# Çoklu Küme Yönetimi

Bölge ve ortam ayrımı sayıya bağlanır: her ayrım ekseni için küme sayısı, sabit işletim saati, sürüm yükseltme penceresi ve patlama yarıçapı birlikte ölçülür. İstenen durum tek yerden çok kümeye dağıtıldığında yayılma penceresi, kısmi başarı ve sapan küme sayılır; iş yükünü kümelere dağıtan bir üst katman modellenip neyi bilmediği için hangi yanlış kararı verdiği gösterilir.

Bir önceki dersin bütün sayıları **tek bir kümeye** aitti. Küme tek bir arıza birimidir — tek
denetim düzlemi, tek durum deposu, tek yükseltme takvimi — ve bu konunun ikinci dersi düzlemin
tamamı düştüğünde kümenin çalışmayı sürdürüp **karar veremez** hâle geldiğini ölçmüştü.

**Çok kümeli işletim** iş yükünü birden çok küme arasında bölmektir; ekseni ortam, bölge ya da
kiracıdır. Devredilen karar bir üst kata çıkar: **bir iş yükünün hangi kümede koşacağına** insan
değil bir üst katman karar verir. Ölçüm yine **bölgesel ölçüm ağı** üzerindedir ve **kurgudur**;
gerçek küme koşturulmaz, sayılan şey `node` ile kurulmuş bir **modeldir**.

**OI55.** İş yükü on sekiz hücreye ayrılır: üç ortam, iki bölge, üç kiracı.
**OI56.** İşletim saatleri `kume-mimarisi` konusundan girdidir: küme başına aylık 67 saat, iş
yüküne ait 39 saat, otuz altı ayda küme başına 3 pencere.
**OI57.** İstenen durum tek depodadır; her küme 15 turluk kendi periyoduyla çeker. Çekme anı ve ağ
gecikmesi **önceden yazılıdır**.
**OI58.** Altı kümede birinin kabul denetimi yeni bildirimi reddeder; o küme sapan kalır.
**OI59.** Üst katman modeli 24 iş yükü ve 6 küme taşır; tohum `20260901` çıktıda görünür.
**OI60.** Sonuç üç sınıfa ayrılır: doğru karar, yanlış karar, karar verememe.

## Ayrım Ekseni, Yayılma ve Arıza Sınıfı

```js
// bolme.mjs — 18 is yuku hucresi farkli eksenlerde bolunur; sabit maliyet, yayilma, ariza sinifi.
const ORTAM = 3, BOLGE = 2, HUCRE = ORTAM * BOLGE * 3;
const KUME_SAAT = 67, YUK_SAAT = 39, YUKSELTME = 3;   // 33+34 kume basina, 39 is yukune ait
const AYRIM = [["tek kume", 1], ["bolge", BOLGE], ["ortam", ORTAM],
  ["ortam x bolge", ORTAM * BOLGE], ["ortam x bolge x kiraci", HUCRE]];
const p = (x, n) => String(x).padStart(n);

console.log(`${HUCRE} hucre = ${ORTAM} ortam x ${BOLGE} bolge x 3 kiraci`);
console.log("ayrim           kume  hucre  patlama  saat/ay  36 ayda pencere");
for (const [ad, n] of AYRIM) {
  const h = Math.ceil(HUCRE / n);
  console.log(ad.padEnd(24) + p(n, 4) + p(h, 7) + p(`%${((100 * h) / HUCRE).toFixed(1)}`, 9) +
    p(YUK_SAAT + n * KUME_SAAT, 12) + p(n * YUKSELTME, 17));
}

const TUR = 120, U = 15, YAYIN = 10, OKUMA = 26;   // 26: bos dogrulama turunun okumasi
const ofset = (i) => (i * 4) % U, ag = (i) => [0, 1, 2, 1, 2, 0][i % 6];   // onceden yazili
const RED = 3;                                    // bu kumenin kabul denetimi reddediyor
function yayilma(n) {
  const alma = [...Array(n).keys()].map((i) => {
    if (i % 6 === RED) return null;                          // sapan kume: hic uygulayamiyor
    let t = YAYIN;
    while ((t - ofset(i)) % U !== 0) t++;
    return t + ag(i);
  });
  const g = alma.filter((x) => x !== null);
  const kismi = [...Array(TUR - YAYIN).keys()]
    .filter((k) => { const y = g.filter((x) => x <= YAYIN + k).length; return y > 0 && y < n; }).length;
  const tur = n * Math.floor(TUR / U);
  return [Math.min(...g), Math.max(...g), kismi, n - g.length, tur, tur * OKUMA];
}
console.log("\nistenen durum tek depoda; degisiklik 10. turda, periyot 15 tur");
console.log("kume  ilk  son  pencere  kismi tur  sapan  uzlasma turu  okuma");
for (const [, n] of AYRIM) {
  const [i, s, k, sp, t, o] = yayilma(n);
  console.log(p(n, 4) + p(i, 5) + p(s, 5) + p(s - i, 9) + p(k, 19) + p(sp, 7) + p(t, 14) + p(o, 16));
}

const ARIZA = [["denetim duzlemi", 1], ["dugum kaybi", 1], ["surum yukseltme", 1],
  ["kabul kurali degisikligi", 1], ["hatali bildirim", 0], ["paylasilan veri deposu", 0]];
const yal = ARIZA.filter((a) => a[1]);
console.log(`\nariza sinifi ${ARIZA.length}: bolunmeyle yalitilan ${yal.length} (etkilenen hucre ${HUCRE}` +
  ` -> ${HUCRE / 2}); yalitilmayan ${ARIZA.length - yal.length} — ` +
  ARIZA.filter((a) => !a[1]).map((a) => a[0]).join(", ") + ` — iki kumede de ${HUCRE}/${HUCRE}`);
```

```
18 hucre = 3 ortam x 2 bolge x 3 kiraci
ayrim           kume  hucre  patlama  saat/ay  36 ayda pencere
tek kume                   1     18   %100.0         106                3
bolge                      2      9    %50.0         173                6
ortam                      3      6    %33.3         240                9
ortam x bolge              6      3    %16.7         441               18
ortam x bolge x kiraci    18      1     %5.6        1245               54

istenen durum tek depoda; degisiklik 10. turda, periyot 15 tur
kume  ilk  son  pencere  kismi tur  sapan  uzlasma turu  okuma
   1   15   15        0                  0      0             8             208
   2   15   20        5                  5      0            16             416
   3   15   25       10                 10      0            24             624
   6   15   25       10                105      1            48            1248
  18   12   25       13                108      3           144            3744

ariza sinifi 6: bolunmeyle yalitilan 4 (etkilenen hucre 18 -> 9); yalitilmayan 2 — hatali bildirim, paylasilan veri deposu — iki kumede de 18/18
```

Birinci tablonun iki sütunu ters yöne gider. Patlama yarıçapı — bir kümenin kaybında etkilenen
hücre oranı — yüzde yüzden yüzde 5,6'ya iner; aylık sabit saat 106'dan 1.245'e, yükseltme penceresi
üçten elli dörde çıkar. Bölgeye bölmek yarıçapı yüzde elliye ve yükü 173 saate, ortama bölmek yüzde
33,3'e ve 240 saate taşır: fark yalnız eksendir — bölge ekseni arıza, ortam ekseni değişiklik
yalıtımı satın alır.

İkinci tabloda yayılma penceresi tek kümede sıfır, altı kümede on turdur ve o on tur boyunca küme
kümesi kısmen yeni, kısmen eskidir. Asıl sayı kısmi başarı sütunundadır: altı kümede on değil
**yüz beştir**, çünkü bir kümenin kabul denetimi bildirimi reddeder. **Sapan tek küme, geçici bir
pencereyi kalıcı bölünmeye çevirir.** Uzlaşma yükü de çarpılır: 208 kalem okuma 3.744'e çıkar.

Son satır çok kümenin **kazandırmadığı** yeri verir: altı arıza sınıfının dördü yalıtılır, ikisi
yalıtılmaz. Paylaşılan veri deposu ile tek depodan çıkıp iki kümeye birden yayılan hatalı bildirim,
on sekiz hücrenin on sekizini durdurmayı sürdürür. **Bölmek arıza birimini böler, veri katmanını
bölmez.**

## Kararı Bir Üst Katmana Devretmek

```js
// ust-katman.mjs — is yukunun hangi kumeye dusecegine karar veren ust katman ve bilmedigi kalemler.
const HEPSI = ["olcum", "saha", "rapor"];
const KUME = [                            // ad, ortam, bolge, kapasite, kabul ettigi kiracilar
  ["gel-b1", "gelistirme", "b1", 34, HEPSI], ["gel-b2", "gelistirme", "b2", 34, HEPSI],
  ["haz-b1", "hazirlik", "b1", 36, HEPSI], ["haz-b2", "hazirlik", "b2", 36, HEPSI],
  ["ure-b1", "uretim", "b1", 50, ["olcum", "saha"]], ["ure-b2", "uretim", "b2", 26, ["rapor"]]];

const r = ((t) => () => (t = (t * 48271) % 2147483647) / 2147483647)(20260901);   // tohum gorunur
const ORTAM = ["gelistirme", "hazirlik", "uretim"];
const YUK = Array.from({ length: 24 }, (_, i) => ({ ortam: ORTAM[i % 3],
  bolge: r() < 0.5 ? "b1" : "b2", kiraci: HEPSI[Math.floor(r() * 3)], birim: 4 + Math.floor(r() * 9) }));

function kos({ yas = 0, bolgeVar = true, kiraciVar = true }) {
  const dolu = Object.fromEntries(KUME.map(([a]) => [a, 0]));
  let defter = { ...dolu };
  const s = { dogru: 0, red: 0, uzak: 0, ihlal: 0, yok: 0 };
  YUK.forEach((y, i) => {
    if (i % (yas + 1) === 0) defter = { ...dolu };            // defter yas kadar gec tazeleniyor
    let aday = KUME.filter(([, o]) => o === y.ortam);
    if (kiraciVar) aday = aday.filter(([, , , , k]) => k.includes(y.kiraci));
    if (bolgeVar) aday = [...aday].sort((a, b) => (b[2] === y.bolge) - (a[2] === y.bolge));
    const sec = aday.find(([a, , , k]) => defter[a] + y.birim <= k);
    if (!sec) { s.yok++; return; }                             // karar verilemedi
    const [ad, , bolge, kap, kiracilar] = sec;
    if (dolu[ad] + y.birim > kap) { s.red++; return; }         // gercek kapasite yetmedi
    dolu[ad] += y.birim;
    if (!kiracilar.includes(y.kiraci)) s.ihlal++;
    else if (bolge !== y.bolge) s.uzak++;
    else s.dogru++;
  });
  return s;
}

const SENARYO = [["tam bilgi", {}], ["kapasite 8 yerlestirme eski", { yas: 8 }],
  ["veri bolgesi bildirilmemis", { bolgeVar: false }], ["kiraci kisiti bildirilmemis", { kiraciVar: false }],
  ["ucu birden eksik", { yas: 8, bolgeVar: false, kiraciVar: false }]];
const p = (x, n) => String(x).padStart(n);
console.log(`${YUK.length} is yuku, ${KUME.length} kume (3 ortam x 2 bolge); tohum 20260901`);
console.log("senaryo                      dogru  yanlis  verilemedi  dolu  uzak  ihlal");
for (const [ad, se] of SENARYO) {
  const o = kos(se);
  console.log(ad.padEnd(28) + p(o.dogru, 5) + p(o.red + o.uzak + o.ihlal, 8) + p(o.yok, 12) +
    p(o.red, 6) + p(o.uzak, 6) + p(o.ihlal, 7));
}
console.log(`kalem: ${YUK.length} is yuku x 3 + ${KUME.length} kume x 2 = ${YUK.length * 3 + KUME.length * 2}` +
  `; yalnizca kume kapasitesi olcumdur`);
```

```
24 is yuku, 6 kume (3 ortam x 2 bolge); tohum 20260901
senaryo                      dogru  yanlis  verilemedi  dolu  uzak  ihlal
tam bilgi                      18       3           3     0     3      0
kapasite 8 yerlestirme eski    18       6           0     3     3      0
veri bolgesi bildirilmemis     13      10           1     0    10      0
kiraci kisiti bildirilmemis    18       4           2     0     0      4
ucu birden eksik               13      11           0     0     8      3
kalem: 24 is yuku x 3 + 6 kume x 2 = 84; yalnizca kume kapasitesi olcumdur
```

Tam bilgi satırı kusursuz değildir: yirmi dört iş yükünün on sekizi doğru yerleşir, üçü uzak
bölgeye düşer, üçü için karar verilemez — ilki kapasiteden, ikincisi kiracı kısıtından gelir.

Kapasite defterinin yaşlanması tanıdık kaymayı üretir. Defter sekiz yerleştirme eskidiğinde yanlış
karar üçten altıya çıkar ve **karar verememe üçten sıfıra iner**: eskiyen defter havuzu olduğundan
boş gösterir, üst katman "yer yok" demeyi bırakıp dolu kümeyi seçer.

İki bildirim kalemi ayrı ayrı ölçülür. Veri bölgesi bildirilmediğinde doğru karar on üçe iner ve
uzak yerleştirme ona çıkar; hiçbiri reddedilmez, iş yükleri çalışır ve yalnız gecikme sınırını aşar
— **sessiz sınıf**. Kiracı kısıtı bildirilmediğinde dört iş yükü kabul etmeyen kümeye gider ve bu
yanlış gürültülüdür, çünkü kümenin kabul denetimi onu yakalar. Üçü birden eksikken karar verememe
sıfırlanır: **hiçbir şey bilmeyen bir üst katman hiç tereddüt etmez.** Seksen dört kalemin yalnız
altısı ölçümdür.

## Özet

- 18 hücre 1'den 18 kümeye bölündükçe patlama yarıçapı %100'den %5,6'ya iner; aylık işletim
  106'dan 1.245 saate, yükseltme penceresi 3'ten 54'e çıkar.
- Yayılma penceresi tek kümede 0, altı kümede 10 turdur; reddeden tek bir sapan küme kısmi başarıyı
  105 tura çıkarır. Uzlaşma yükü küme sayısıyla çarpılır: 208 kalem okuma 3.744'e çıkar.
- 6 arıza sınıfının 4'ü bölmeyle yalıtılır; paylaşılan veri deposu ve tek depodan yayılan hatalı
  bildirim iki kümede de 18 hücrenin 18'ini etkiler.
- Üst katman tam bilgiyle 24 iş yükünün 18'ini doğru yerleştirir; kapasite 8 yerleştirme eskidiğinde
  yanlış karar 3'ten 6'ya, karar verememe 3'ten 0'a gider ve veri bölgesi yazılmadığında 10 iş yükü
  sessizce uzak bölgeye düşer.

## Kurs Kapanışı

| Ders | Devredilen karar | Gereken bilgi ve maliyeti | Yanlış kararın kaynağı |
|---|---|---|---|
| Orkestrasyon İhtiyacı | yerleştirme | 6 kalem, 4'ü ölçüm | yazısız kısıt, 4 yanlış yer |
| Denetim Düzlemi Bileşenleri | isteğin karara dönmesi | 50 okuma, 7 yazma | kayıtsız ölüm, sanılan 3 |
| Düğüm Bileşenleri | düğüm canlı mı | 10 saniyede 19 kalem | eşik, 26 yanlış ölü |
| Uzlaşma Döngüsü | farkın kapatılması | gecikmeli rapor, 0,13 iş/tur | kayıtsız niyet, 32 gereksiz kopya |
| Yerel ve Yönetilen Küme | düzlemin işletimi | 21 kalem, 106 saat | erişim kaybı, 5 ayar yok |
| Kapsül | paketleme sınırı | 3 kalem, biri tahmin | kopya oranı yok, 4 fazla örnek |
| Kopya Kümeleri ve Sürüm Nesneleri | kopya sayısı, geçiş hızı | 1 sayı, 2 ayar | kapsül içi kapalı, 6 boşa |
| Servis Nesneleri | isteğin gideceği kapsül | 3 kalem, 1 tur çözümleme | liste yaşı, 216 bayat istek |
| Dış Erişim | dış isteğin iç servisi | 4 bildirim, 14–36 yüzey | kapsama yazısız, 6 yanlış |
| Yapılandırma ve Sır Nesneleri | ayarın kapsüle ulaşması | 3 bildirim, 3 tur yayılım | okuma anı, 36 bayat |
| Depolama ve Birimler | talep–arz eşlemesi | 76 kalem, 72 bildirim/tur | envanter yaşı, 134 yanlış |
| Durum Bilgili Uygulamalar | hangi kopya hangi veri | kopya başına 3, 15 kalem | ad kalıcı değil, 7 öksüz birim |
| İşler ve Zamanlanmış İşler | bitti mi, yeniden mi | gece başına 4, 120 kalem | süre bilinmez, 5 atlanan gece |
| Ad Alanları ve Kotalar | isteğin kabulü | istek başına 3, 180 kalem | kullanım görünmez, 22 baskı |
| Kaynak İstekleri ve Sınırları | yerleştirme | 42 kalem, 36'sı bildirim | kullanım yok, 5.503 çakışma |
| Zamanlama Kısıtları | uygun düğüm kümesi | 39 kalem, ölçüm yok | yanlış etiket, yerleşen 15 → 16 |
| İşaretler ve Toleranslar | düğüm kimi kabul eder | 27 kalem, doğrulayan yok | fazla tolerans, 3 yabancı kapsül |
| Tahliye ve Öncelikler | baskıda kim çıkar | 17 öncelik, kritiklik 0 | değer ölçülmez, şişiren korunur |
| Yatay Ölçekleme | kopya sayısı | 120 ölçüt, 3 tur eski | kendi kararı görünmez, 510 kopya-tur |
| Dikey ve Küme Ölçekleme | boyut, düğüm sayısı | turda 60 örnek | neden ölçütte yok, 12 fazla olay |
| Dağıtım Kalıpları | ilerle ya da dur | 4 kalem, sürüm etiketi | seyrek ölçüt, 851 istek |
| Sağlık Denetimleri | yeniden başlat, trafiğe aç | 3 denetim, 3 eşik | açılış ayrılmaz, 113 öldürme |
| Rol Tabanlı Erişim Denetimi | isteği kim yapabilir | 1344 hücrenin 43'ü | iz eskir, 28 yükseltme yolu |
| Ağ Politikaları | bağlantı meşru mu | 18 kural ya da 6 | izde yok, 119 gereksiz açık |
| Güvenlik Bağlamı | tanım kabul edilsin mi | tek kalem, tanımın kendisi | beyana bakar, 13 sessiz açık |
| Paketleme ve Şablonlama | nesne kümesini kim yazar | 7 değer, 3 dal | ortaklık yazısız, 3/5 ayrık |
| Özel Kaynak Tanımları | bildirim geçerli mi | 10 alan, 120 alan yükü | şema dar, 4 sessizce yanlış |
| Denetleyici Kalıbı | olaya ne yapılacak | 5 madde, 240 okuma | bakım görünmez, 12 yeniden başlatma |
| Küme Gözlemlenebilirliği | hangi soru yanıtlanır | 10.131 seri, 26,1 GB | toplanmamış ayrıntı, 12'den 5'i |
| Çoklu Küme Yönetimi | iş yükü hangi kümede | 84 kalem, 1.245 saat | eski kapasite, 6 yanlış |

Otuz satır tek bir kuralın örneğidir: **bir kararı devretmek, o kararın dayandığı bilgiyi sürekli ve
zamanında üretmeyi gerektirir; sistemin bilmediği her kalem bir yanlış karar sınıfı üretir.** Son
sütunda dört kaynak tekrar eder. **Eskiyen bilgi** on satırdadır: karar anındaki sayı gerçeğin
gerisindedir ve gecikme büyüdükçe karar verememe yanlış karara dönüşür. **Kapsam dışında kalan
durum** sekiz satırdadır: sistem baktığı yerde doğru davranır, bakmadığı yerde salınır ya da
sessizce sapar. **Bildirilmemiş kalem** yedi, **doğrulanmayan beyan** beş satırdadır — ve yanlış
yazılmış bir beyan çoğu zaman bir iyileşme gibi görünür. Sistem yanlış kararı bilgisiz olduğu için
değil, **bilebileceği bir kalem bulunmadığı için** verir. Bu kursun ölçü birimi olan **devrin
bedeli** budur: kazanç adım sayısında görünür, bedel bilgi kaleminde birikir.

Geriye tek soru kalır ve **M22/K04 Sürekli Tümleştirme ve Teslimat** onu üstlenir. Küme istenen
durumu uyguluyor: bildirimi okuyor, farkı kapatıyor, kabul denetiminden geçiriyor, yetkiyi sınıyor.
Ama o istenen durumu **kim, neye bakarak ve hangi denetimden geçirerek** değiştiriyor? Otuz
satırdaki bildirim kalemlerinin hepsini bir insan yazıyor; kümenin bütün titizliği, kendisine
verilen bildirimin doğruluğunu hiçbir yerde sınamıyor.
