Cluster (Küme)

Bilgisayar Kümesi Nedir ?

Basit bir ifadeyle, bir bilgisayar kümesi, tek bir sistem olarak birlikte çalışan bir dizi bilgisayardır. İşlem gücünü artırmak veya dayanıklılığı artırmak için kümeleri kullanabiliriz. Düzgün çalışması için bir kümenin aşağıdakileri yapacak yönetim düğümlerine ihtiyacı vardır:

  • yük paylaşımını koordine etme
  • düğüm arızasını tespit etme ve değiştirilmesini planlama

Düğümler, çalışıp çalışmadıklarını kontrol etmek için birbirlerinin hizmetlerine ping atmaya devam eder — kalp atışı adı verilen bir teknik. Bunun yanı sıra, onları birbirine bağlayan veri ağına güçlü bir şekilde güvenirler.

Basit bir cluster bilgisayar düzeni

Raspberry Pi’ler ile yapılan Cluster Bilgisayar

Bilgisayar Kümesi Uygulamaları

  1. Çeşitli karmaşık hesaplama problemleri çözülebilir.
  2. Aerodinamik, astrofizik uygulamalarında ve veri madenciliğinde kullanılabilir.
  3. Hava tahmini.
  4. Görüntü Oluşturma.
  5. Çeşitli e-ticaret uygulamaları.
  6. Deprem Simülasyonu.
  7. Petrol rezervuarı simülasyonu

Bilgisayar Kümesi Türleri

Yüksek Kullanılabilirlik ve Yük Devretme Kümeleri

Bu küme modelleri, sistemin örtük artıklığını kullanarak kesintisiz bir teknikle hizmetlerin ve kaynakların kullanılabilirliğini oluşturur. Kümenin temel terimi, bir düğüm reddedilirse, uygulamaların ve hizmetlerin farklı düğümlere sunulabilmesidir. Bu küme yöntemleri, kritik görevler, postalar, belgeler ve uygulama sunucuları için öğe görevi görür.

Yük Dengeleme Kümeleri

Bu küme, gelen tüm trafiği / kaynak isteklerini eşit programları ve makineleri çalıştıran düğümlerden ayırır. Bu küme modelinde, bazı düğümler siparişleri izlemekten sorumludur ve bir düğüm reddederse, bu nedenle istekler mevcut tüm düğümler arasında dağıtılır. Böyle bir çözüm genellikle web sunucusu çiftliklerinde kullanılır.

Yüksek Kullanılabilirlik ve Yük Dengeleme Kümeleri

Bu küme modeli, her iki küme özelliğini de ilişkilendirerek hizmetlerin ve kaynakların kullanılabilirliğini ve ölçeklenebilirliğini artırır. Bu tür bir küme genellikle e-posta, web, haberler ve FTP sunucuları için kullanılır.

Dağıtılmış ve Paralel işlem Kümeleri

Bu küme modeli, büyük hesaplama görevleri olan uygulamalar için kullanılabilirliği ve uygulamayı artırır. Büyük bir hesaplama görevi daha küçük görevlere bölündü ve istasyonlara dağıtıldı. Bu tür kümeler genellikle yüksek işlem gücüne ihtiyaç duyan sayısal hesaplama veya finansal analiz için kullanılır.

Bilgisayar Kümesinin Avantajları

1. Yüksek Performans : Sistemler, ana bilgisayar ağlarından daha iyi ve gelişmiş performans sunar.

2. Yönetimi kolay : Küme Hesaplaması yönetilebilir ve uygulanması kolaydır.

3. Ölçeklenebilir : Kaynaklar kümelere göre eklenebilir.

4. Genişletilebilirlik : Ağa ek bilgisayarlar eklenerek bilgisayar kümeleri kolayca genişletilebilir. Küme hesaplama, birkaç ek kaynağı veya ağı mevcut bilgisayar sistemine birleştirebilir.

5. Kullanılabilirlik : Bir düğüm başarısız olduğunda diğer düğümler etkin olacak ve başarısız düğüm için bir proxy işlevi görecektir. Bu, daha fazla kullanılabilirlik sağlar.

6. Esneklik : Üstün spesifikasyona yükseltilebilir veya ek düğümler eklenebilir.

Bilgisayar Kümesinin Dezavantajları

1. Yüksek maliyet : Yüksek donanımı ve tasarımı nedeniyle çok uygun maliyetli değildir.

2. Arıza bulma sorunu : Hangi bileşenin bir hatası olduğunu bulmak zordur.

3. Daha fazla alana ihtiyaç var : Yönetmek ve izlemek için daha fazla sunucuya ihtiyaç duyuldukça altyapı artabilir.

Raspberry Pi ile Cluster Yapımı

Docker

Docker en basit tanımıyla Linux ve Windows gibi sanal makineleri çalıştırabileceğiniz bir sanallaştırma platformudur. Docker ile yazılımlarınız için test etme, dağıtma ve derleme işlemleri yapabilirsiniz.

“Docker, geliştirme ekiplerinin her yerde uygulamalar oluşturup yönetmesine ve güvenli hale getirmesine olanak tanıyan yeni bir teknolojidir.”

Peki Docker’ın VMWare gibi diğer sanal makine sistemlerinden farkı nedir ? VMWare gibi sistemlerde kurulan her sanal sistemin kendi işletim sistemi vardır ve bu sistemlerin her biri disk alanı, ram-işlemci kullanımı gibi alanlarda oldukça maliyetli olur. Docker teknolojisinde ise tek bir işletim sistemi var, kaynak tüketimi oldukça az ve containerlar hızlıca başlatılıp, durdurulabiliyor.

Yukarda Container kelimesini kullandık şimdide gelelim bu kelimenin tanımına. Container Teknolojisi bir uygulama dağıtım teknolojisi yani uygulamalarınız için izole ortamlar sağlar. Bir işletim sisteminin ihtiyaç duyduğu kaynağı paylaşmak yerine sizin uygulamarınızın ihtiyaç duyduğu kadar kaynak paylaşır bu sayede bir sistemde yüzlerce container uygulaması çalıştırabilrsiniz.

“Bir konteyner, diğer işlemlerden izole edilen özel bir işlem türüdür. Konteynerlara başka hiçbir işlemin erişemediği kaynaklar atanır ve bunlara açıkça atanmamış kaynaklara erişemezler.” 

Docker işte tam bu noktada “yazılımları kitaplıklar, sistem araçları, kod ve çalışma zamanı dahil olmak üzere yazılımların çalışması için gerekli her şeyi içeren container adlı standartlaştırılmış birimler halinde paketler”

Bazı Docker Komutları:

docker imagesLokal registry’de mevcut bulunan Image’ları listeler
docker psHalihazırda çalışmakta olan Container’ları listeler
docker ps -aDocker Daemon üzerindeki bütün Container’ları listeler
docker ps -aqDocker Daemon üzerindeki bütün Container’ların ID’lerini listeler
docker pull <repository_name>/<image_name>:<image_tag>Belirtilen Image’ı lokal registry’ye indirir. Örnek: docker pull gsengun/jmeter3.0:1.7
docker top <container_id>İlgili Container’da top komutunu çalıştırarak çıktısını gösterir
docker run -it <image_id veya image_name> CMDVerilen Image’dan terminal’i attach ederek bir Container oluşturur
docker pause <container_id>İlgili Container’ı duraklatır
docker unpause <container_id>İlgili Container pause ile duraklatılmış ise çalışmasına devam ettirilir
docker stop <container_id>İlgili Container’ı durdurur
docker start <container_id>İlgili Container’ı durdurulmuşsa tekrar başlatır

Aşağıdaki kaynaklardan Docker Teknolojisini nasıl kuracağınızı ve kullanacağınızı öğrenebilirsiniz:

Kubernetes

Sıkça “buluta yönelik işletim sistemi” olarak tanımlanan Kubernetes, konteynere alınmış uygulama ve hizmet kümelerini yönetmek amacıyla tasarlanmış, açık kaynaklı bir platformdur. Google mühendisleri Joe Beda, Brendan Burns ve Craig McLuckie tarafından 2014 yılında geliştirilip kısa süre sonra açık kaynaklı hale getirilen Kubernetes, canlı bir bulut yerel ekosistemine dönüştü.

Kubernetes 101 – Temel terimler

Küme

Kubernetes tarafından yönetilen, konteynere alınmış uygulamaları çalıştırmak için kullanılan ve her birine düğüm denen bir dizi makine.

Düğüm

Sanal veya fiziksel bir makinedir. Bir küme, ana düğümden ve belirli sayıda işçi düğümden oluşur.

Bulut Konteyneri

Yazılımı ve bağımlılıklarını içeren bir imajdır.

Hizmet Öbeği

Kubernetes kümenizde çalışan tek konteyner veya konteyner grubudur.

Konuşlandırma

Hizmet öbekleri tarafından temsil edilen, çoğaltılmış uygulamaları yöneten bir nesnedir. Hizmet öbekleri, bir kümenin düğümlerine konuşlandırılır.

Replika kümesi

Belirli sayıda hizmet öbeği replikasının bir seferde çalışmasını sağlar.

Hizmet

Bir dizi hizmet öbeği tarafından temsil edilen uygulamalara nasıl erişileceğini açıklar. Hizmetler genellikle bağlantı noktalarını ve yük dengeleyicileri tanımlar, bir kümeye iç ve dış erişimi kontrol etmek için kullanılabilir.

Kubernetes Konteynerleri nedir?

Geliştiriciler; farklı bulutlar, test ortamları, dizüstü bilgisayarlar, cihazlar, işletim sistemleri ve platformlar içeren çok çeşitli bir dizi bilişim ortamı için giderek daha fazla yazılım konuşlandırıyor. Yazılımın güvenilir biçimde çalışması konusu kritik öneme sahip. Konteynerler burada devreye giriyor: Bir uygulamayı çalışma zamanı ortamının tamamıyla birlikte paketliyorlar. Bu anlamda konteynerler bir sanallaştırma biçimidir. Çünkü uygulamanın doğru kitaplıklar, bağımlılıklar ve işletim sistemlerini içererek çalışabileceği bir “baloncuk” sağlarlar. Ancak konteynerler sadece uygulamanın gerek duyduğu kaynakları içerdiği için sanal makinelerden daha küçüktür.

Kubernetes ve Docker

Linux konteynerleri 2008’den beri mevcut olsa da, ancak 2013’te Docker konteynerlerinin ortaya çıkmasıyla ün kazandılar. Benzer şekilde, çalışmak için ihtiyaç duydukları her şeyi içeren konteynerlere alınmış uygulamaları konuşlandırmaya duyulan ilginin patlama yapması, en nihayetinde yeni bir sorun doğurdu: binlerce konteyneri yönetmek. Kubernetes, konteyner yaşam döngüsünü otomatik olarak düzenler, konteynerlerin barındırma altyapısında dağıtılmasını sağlar. Kubernetes, talebe bağlı olarak kaynakları yukarı ve aşağı yönde ölçeklendirir. Konteynerleri kullanıma açar, takvimlerini programlar, bunları siler ve sağlıklarını izler.

Kubernet Mimarisi ve Nasıl Çalışır?

Konteynerler, bir uygulamayı taşınabilir ve dağıtması kolay bir biçimde kapsüller. Kubernetes mimarisi, kapsayıcılı uygulamaları çalıştırmak için tasarlanmıştır. Bir Kubernetes kümesi, en az bir kontrol düzleminden ve en az bir çalışan düğümden (genellikle bir fiziksel veya sanal sunucu) oluşur. Kontrol düzleminin iki ana sorumluluğu vardır. API sunucusu aracılığıyla Kubernetes API’sini kullanıma sunar ve kümeyi oluşturan düğümleri yönetir. Kontrol düzlemi, küme yönetimi hakkında kararlar verir ve küme olaylarını algılar ve bunlara yanıt verir.

Kubernetes’te çalışan bir uygulama için en küçük yürütme birimi, bir veya daha fazla kapsayıcıdan oluşan Kubernetes Pod’dur. Kubernetes Kapsülleri, çalışan düğümlerde çalışır.

Kubernet’lerin Avantajları

  • Taşınabilirlik: Konteynerler, sanal ortamlardan donanıma kadar çeşitli ortamlarda taşınabilir. Kubernetes, tüm büyük genel bulutlarda desteklenir, sonuç olarak, birçok farklı ortamda K8’lerde kapsayıcılı uygulamalar çalıştırabilirsiniz.
  • Entegrasyon ve genişletilebilirlik:  Kubernetes, günlük kaydı, izleme ve uyarı hizmetleri dahil olmak üzere zaten güvendiğiniz çözümlerle çalışacak şekilde genişletilebilir. Kubernetes topluluğu, zengin ve hızlı büyüyen bir ekosistem oluşturarak Kubernetes’i tamamlayan çeşitli açık kaynak çözümleri üzerinde çalışıyor.
  • Maliyet etkinliği: Kubernetes’in doğal kaynak optimizasyonu, otomatik ölçeklendirme ve iş yüklerini en fazla değeri sağladıkları yerde çalıştırma esnekliği, BT harcamalarınızın sizin kontrolünüzde olduğu anlamına gelir.
  • Ölçeklenebilirlik: Bulut yerel uygulamaları yatay olarak ölçeklenir. Kubernetes, “otomatik ölçeklendirme” kullanır, ek kapsayıcı bulut sunucularını döndürür ve talebe göre otomatik olarak ölçeklendirme yapar.
  • API tabanlı: Kubernetes’in temel yapısı, REST API’sidir. Kubernetes ortamındaki her şey programlama yoluyla kontrol edilebilir.
  • Basitleştirilmiş CI/CD:  CI/CD, uygulama oluşturmayı, test etmeyi ve üretim ortamlarına dağıtmayı otomatikleştiren bir DevOps uygulamasıdır. Kuruluşlar, yüke dinamik olarak uyum sağlayan ölçeklenebilir CI/CD ardışık düzenleri oluşturmak için Kubernetes ve CI/CD’yi entegre ediyor.

Kubernetes kullanımıyla ilgili zorluklar nelerdir?

Kubernetes son derece farklı şekillerde düzenlenerek her tür uygulamayı destekleyebilse de onu anlamak ve kullanmak zor olabilir. Kimi CNCF üyelerinin de belirttiği gibi Kubernetes, her iş yükü için her zaman doğru çözüm değildir. Kubernetes ekosistemi bu nedenle kuruluşların belirli iş yükü sorunlarını çözmek için yarattıkları, birbiriyle ilişkili bir dizi bulut yerel araç içerir.

Kubernetes, kaynak kodu değil konteynerleri konuşlandırır ve uygulamaları derlemez. Günlük kaydı, orta katman yazılım, izleme, konfigürasyon, CI/CD ve diğer birçok üretim faaliyeti için ek araçlara ihtiyaç duyarsınız. Bununla birlikte, Kubernetes genişletilebilir ve jet uçaklarından makine öğrenimine kadar çok çeşitli kullanım senaryolarına uyum gösterebildiği kanıtlanmıştır. Doğrusu; Oracle, Google, Amazon Web Services ve diğer bulut tedarikçileri, Kubernetes’in genişletilebilirliğini kullanarak, karmaşıklığı azaltan ve geliştirici üretkenliğini artıran, yönetilen Kubernetes çözümünü oluşturdu.

Kaynaklar:

Yorum bırakın

Trend

WordPress.com’da Blog Oluşturun.