Elasticsearch Cluster Kurulumu ve Shard Yönetiminde Derinlemesine Bakış
Büyük hacimli verilerin işlenmesi, indekslenmesi ve hızlı aranabilir hale getirilmesi, modern uygulama mimarilerinin temel gereksinimlerinden biridir. Elasticsearch, dağıtık yapısıyla bu ihtiyacı karşılayan güçlü bir arama ve analiz motorudur. Bir Elasticsearch kümesinin doğru yapılandırılması ve shard yönetiminin etkin bir şekilde yapılması, sistem performansı, veri bütünlüğü ve yüksek erişilebilirlik açısından kritik öneme sahiptir.
Temel Elasticsearch Küme Mimarisi ve Düğüm Tipleri
Bir Elasticsearch kümesi, birbirleriyle haberleşen bir veya daha fazla düğümden (node) oluşur. Her düğüm belirli bir rolü üstlenir ve bu roller, kümenin genel işlevselliğini tanımlar:
- Master Düğüm: Küme meta verilerini (indeks oluşturma/silme, düğüm takibi) yönetir. Stabilite için genellikle 3 adet master-eligible düğüm önerilir.
- Data Düğüm: İndekslenmiş verileri ve shardları barındırır. Sorgu ve indeksleme işlemlerini gerçekleştirir.
- Ingest Düğüm: Dökümanları indekslemeden önce dönüştürme ve zenginleştirme pipeline'larını çalıştırır.
- Coordinating Düğüm: Direkt olarak veriyi barındırmaz, ancak gelen istekleri ilgili data düğümlerine yönlendirir ve sonuçları birleştirir. Tüm düğümler varsayılan olarak bir koordinasyon katmanıdır.
Üretim ortamlarında, iş yüküne ve küme boyutuna göre bu rolleri ayrı düğümlere atamak performansı artırır ve kaynak izolasyonu sağlar. Örneğin, ayrı master düğümler, veri düğümlerinin ağır indeksleme veya sorgu yükü altında master görevlerini aksatmasını engeller.
# elasticsearch.yml üzerinde örnek düğüm rolü yapılandırmasıdata.node: truenode.master: truenode.ingest: falseYukarıdaki yapılandırma, düğümün hem veri tutacağını hem de master adayı olacağını belirtir. Daha büyük kümelerde node.master: true ve node.data: false şeklinde sadece master görevi olan düğümler tanımlamak yaygın bir stratejidir.
Küme Kurulum Adımları ve İlk Konfigürasyon
Çok düğümlü bir Elasticsearch kümesi kurarken, düğümler arası iletişimi ve veri bütünlüğünü sağlamak esastır. Temel adımlar:
- Yazılım Kurulumu: Her düğüme Elasticsearch ve uygun JDK sürümü yüklenir.
- Ağ Konfigürasyonu:
elasticsearch.ymldosyasındanetwork.host,transport.host,http.hostayarları ile düğümlerin hangi IP adreslerinden erişilebilir olacağı belirlenir. - Küme Adı: Tüm düğümlerde
cluster.nameaynı olmalıdır. Bu, düğümlerin aynı kümeye katıldığını gösterir. - Discovery Ayarları:
discovery.seed_hostsile master adayı düğümlerin listesi belirtilir.cluster.initial_master_nodesise küme ilk defa kurulurken master olarak seçilecek düğümleri tanımlar.
# elasticsearch.yml örnek yapılandırmasıcluster.name: my-production-cluster# Node IP adresini veya host adını tanımlar.network.host: 0.0.0.0# Master adayı düğümlerin IP adresleri veya host adları.discovery.seed_hosts: [