Takip et

Elasticsearch’ü CentOS 7 Üzerine Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber

Elasticsearch’ü CentOS 7 Üzerine Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber Giriş Günümüzün veri odaklı dünyasında, büyük hacim

Elasticsearch’ü CentOS 7 Üzerine Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber

Giriş

Günümüzün veri odaklı dünyasında, büyük hacimli verileri hızlı ve verimli bir şekilde aramak, analiz etmek ve görselleştirmek işletmeler için kritik bir öneme sahiptir. Elasticsearch, bu ihtiyacı karşılamak üzere tasarlanmış, dağıtık, RESTful ve JSON tabanlı güçlü bir arama ve analiz motorudur. Apache Lucene üzerine inşa edilmiş olan Elasticsearch, tam metin arama, log analizi, güvenlik analizi, iş metrikleri ve daha birçok kullanım senaryosu için ideal bir çözümdür. Genellikle Logstash ve Kibana ile birlikte “ELK Stack” (Elastic Stack) olarak bilinen bir ekosistemin merkezi bileşenidir.

Bu kapsamlı rehberde, CentOS 7 işletim sistemi üzerinde Elasticsearch’ün nasıl kurulacağını ve temel düzeyde nasıl yapılandırılacağını adım adım inceleyeceğiz. CentOS 7, sunucu ortamlarında yaygın olarak kullanılan stabil ve güvenilir bir Linux dağıtımı olması nedeniyle bu rehber için tercih edilmiştir. Amacımız, kurulumdan temel yapılandırmaya, servis yönetiminden güvenlik duvarı ayarlarına kadar tüm süreçleri detaylı bir şekilde açıklayarak, okuyucuların kendi Elasticsearch ortamlarını başarıyla kurmalarını sağlamaktır.

Ön Gereksinimler

Elasticsearch kurulumuna başlamadan önce, sisteminizin belirli gereksinimleri karşıladığından emin olmalıyız. Bu ön gereksinimler, kurulumun sorunsuz ilerlemesi ve Elasticsearch’ün optimum performansla çalışması için hayati öneme sahiptir.

Sistem Gereksinimleri

* İşletim Sistemi: CentOS 7 yüklü bir sunucu.
* RAM: Minimum 4 GB RAM önerilir. Üretim ortamları için 8 GB veya daha fazlası şiddetle tavsiye edilir. Elasticsearch, Java tabanlı olduğu için heap belleği için önemli miktarda RAM kullanır.
* CPU: Minimum 2 çekirdekli bir işlemci. Veri hacmine ve sorgu karmaşıklığına bağlı olarak daha fazla çekirdek gerekebilir.
* Disk Alanı: En az 20 GB boş disk alanı önerilir. Veri hacminiz arttıkça bu alanın da artması gerekecektir. Yüksek performans için SSD diskler tercih edilmelidir.
* Sudo Yetkileri: Kurulum ve yapılandırma işlemleri için sudo yetkilerine sahip bir kullanıcı hesabına ihtiyacınız olacaktır.
* İnternet Bağlantısı: Paket indirme ve güncelleme işlemleri için aktif bir internet bağlantısı gereklidir.

Java Geliştirme Kiti (JDK)

Elasticsearch, Java sanal makinesi (JVM) üzerinde çalışır. Bu nedenle, sisteminizde uyumlu bir Java Geliştirme Kiti (JDK) kurulu olması zorunludur. Elasticsearch’ün güncel sürümleri OpenJDK 8 veya OpenJDK 11’i desteklemektedir. Bu rehberde OpenJDK 8 kurulumunu göstereceğiz, ancak OpenJDK 11 de benzer adımlarla kurulabilir.

Sistem Güncellemeleri

Kuruluma başlamadan önce, sisteminizin güncel olduğundan emin olmak iyi bir pratiktir. Bu, olası bağımlılık sorunlarını ve güvenlik açıklarını önlemeye yardımcı olur.

sudo yum update -y
sudo yum upgrade -y

Bu komutlar, sisteminizdeki tüm yüklü paketleri güncelleyecektir.

Java Kurulumu

Elasticsearch’ün çalışması için gerekli olan Java Geliştirme Kiti’ni (JDK) kurarak devam edelim. CentOS 7’de OpenJDK’yi kurmak oldukça basittir.

OpenJDK 8 Kurulumu

Aşağıdaki komutu kullanarak OpenJDK 8’i kurabiliriz:

sudo yum install java-1.8.0-openjdk-devel -y

java-1.8.0-openjdk-devel paketi, hem Java Runtime Environment (JRE) hem de Java Development Kit (JDK) bileşenlerini içerir. Elasticsearch’ün geliştirme bileşenlerine ihtiyacı olmasa da, devel paketi genellikle tam bir Java ortamı sağlar.

Java Sürümünü Doğrulama

Kurulum tamamlandıktan sonra, Java’nın doğru bir şekilde kurulup kurulmadığını ve sürümünü kontrol edebiliriz:

java -version

Çıktı aşağıdaki gibi bir şey olmalıdır:

openjdk version "1.8.0_XXX"
OpenJDK Runtime Environment (build 1.8.0_XXX-bXX)
OpenJDK 64-Bit Server VM (build 25.XXX-bXX, mixed mode)

Bu çıktı, Java 8’in başarıyla kurulduğunu gösterir.

Elasticsearch Deposu Ekleme

Elasticsearch’ü yum paket yöneticisi aracılığıyla kurabilmek için, Elastic’in resmi deposunu sistemimize eklememiz gerekmektedir. Bu, hem kurulumu kolaylaştıracak hem de gelecekteki güncellemeleri yönetmeyi basitleştirecektir.

GPG Anahtarını İçe Aktarma

Elasticsearch paketlerinin bütünlüğünü doğrulamak için Elastic’in GPG anahtarını içe aktarmamız gerekir. Bu anahtar, indirilen paketlerin Elastic tarafından imzalandığını ve üzerinde oynanmadığını garanti eder.

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Elasticsearch Depo Dosyasını Oluşturma

Şimdi, yum paket yöneticisinin Elasticsearch paketlerini nerede bulacağını belirten bir depo dosyası oluşturacağız. Bu dosyayı /etc/yum.repos.d/ dizini altında oluşturmalıyız.

sudo vi /etc/yum.repos.d/elasticsearch.repo

Açılan editöre aşağıdaki içeriği yapıştırın:

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

* [elasticsearch-7.x]: Deponun adını tanımlar.
* name: Deponun açıklayıcı adıdır.
* baseurl: Elasticsearch paketlerinin bulunduğu URL’dir. Burada 7.x serisi için olan depoyu kullanıyoruz.
* gpgcheck=1: GPG anahtarı ile paket bütünlüğü kontrolünün yapılacağını belirtir.
* gpgkey: GPG anahtarının URL’ini belirtir.
* enabled=1: Bu deponun etkin olduğunu belirtir.
* autorefresh=1: Depo meta verilerinin otomatik olarak yenilenmesini sağlar.
* type=rpm-md: Depo türünü belirtir.

Dosyayı kaydedip kapatın (:wq komutuyla vi editöründe).

Elasticsearch Kurulumu

Elasticsearch deposunu sistemimize ekledikten sonra, artık Elasticsearch paketini kolayca kurabiliriz.

Yum ile Kurulum

Aşağıdaki komutu kullanarak Elasticsearch’ü kurun:

sudo yum install elasticsearch -y

Bu komut, Elasticsearch paketini ve bağımlılıklarını indirecek ve sisteminize kuracaktır. Kurulum sırasında, GPG anahtarını doğrulamak isteyip istemediğiniz sorulabilir; y tuşuna basarak onaylayın.

Kurulum Sonrası Dosya Yolları

Kurulum tamamlandığında, Elasticsearch’ün ana dizinleri ve dosyaları aşağıdaki konumlarda bulunur:

* Yapılandırma Dosyaları: /etc/elasticsearch/ dizini altında bulunur. En önemli dosya elasticsearch.yml‘dir.
* Veri Dizinleri: /var/lib/elasticsearch/ dizini, Elasticsearch’ün indeks verilerini ve diğer kalıcı verilerini depolar.
* Log Dizinleri: /var/log/elasticsearch/ dizini, Elasticsearch’ün log dosyalarını içerir. Sorun giderme için bu dizindeki logları kontrol etmek önemlidir.
* Binari ve Komut Dosyaları: /usr/share/elasticsearch/ dizini, Elasticsearch’ün çalıştırılabilir dosyalarını ve kütüphanelerini barındırır.

Elasticsearch Yapılandırması

Elasticsearch, kutudan çıktığı haliyle temel işlevsellik sunsa da, üretim ortamlarında veya belirli kullanım senaryolarında performans ve güvenlik için bazı yapılandırma ayarlarının yapılması kritik öneme sahiptir. Ana yapılandırma dosyası /etc/elasticsearch/elasticsearch.yml‘dir. Bu dosyayı düzenlerken dikkatli olun ve her değişiklikten sonra Elasticsearch servisini yeniden başlatmayı unutmayın.

Temel Yapılandırma Ayarları (/etc/elasticsearch/elasticsearch.yml)

Bu dosya YAML formatındadır ve yorum satırları (# ile başlayanlar) ile açıklanmıştır. İhtiyaç duyduğunuz ayarların yorum satırlarını kaldırarak veya yenilerini ekleyerek yapılandırma yapabilirsiniz.

sudo vi /etc/elasticsearch/elasticsearch.yml

Aşağıdaki temel ayarları düzenleyelim:

1. Küme Adı (cluster.name):
Elasticsearch, birden fazla düğümün bir araya gelerek bir küme oluşturduğu dağıtık bir sistemdir. Küme adı, aynı kümede yer alacak tüm düğümler için aynı olmalıdır.

cluster.name: my-application-cluster

Benzersiz ve açıklayıcı bir isim seçin.

2. Düğüm Adı (node.name):
Her Elasticsearch düğümünün küme içinde benzersiz bir adı olmalıdır. Bu, düğümleri yönetirken ve izlerken kolaylık sağlar.

node.name: node-1

Veya sunucunun hostname’ini kullanabilirsiniz:

node.name: ${node.name}

3. Veri ve Log Yolları (path.data, path.logs):
Elasticsearch’ün veri ve log dosyalarını depolayacağı yolları belirtir. Varsayılan yollar genellikle yeterlidir, ancak disk düzeniniz farklıysa bunları değiştirebilirsiniz.

path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch

4. Ağ Ayarları (network.host):
Bu ayar, Elasticsearch’ün hangi ağ arayüzlerinden gelen bağlantıları dinleyeceğini belirler.
* network.host: 127.0.0.1 (Sadece yerel makineden erişim, varsayılan)
* network.host: 0.0.0.0 (Tüm ağ arayüzlerinden erişim, dikkatli kullanılmalı)
* network.host: 192.168.1.10 (Belirli bir IP adresinden erişim)
* network.host: _site_ (Yerel ağ IP adresleri)
* network.host: _local_ (Geri döngü adresi ve yerel ağ IP adresleri)

Eğer başka makinelerden erişim sağlamak istiyorsanız, sunucunuzun IP adresini veya 0.0.0.0 kullanmanız gerekir. Güvenlik nedeniyle, 0.0.0.0 kullanılıyorsa güvenlik duvarı ayarlarının doğru yapıldığından emin olun.

network.host: 0.0.0.0

5. HTTP Portu (http.port):
Elasticsearch’ün REST API’sini dinleyeceği portu belirtir. Varsayılan olarak 9200’dür.

http.port: 9200

6. Keşif Ayarları (Discovery Settings – Üretim Ortamları İçin Önemli):
Üretim ortamlarında, özellikle birden fazla düğümlü bir küme kuruyorsanız, keşif ayarları önemlidir. Bu ayarlar, düğümlerin birbirini nasıl bulacağını belirler. Tek düğümlü bir kurulum için bu ayarların çoğu varsayılan olarak bırakılabilir, ancak discovery.type ayarı önemlidir.

* Tek Düğümlü Küme İçin:

discovery.type: single-node

Bu ayar, Elasticsearch’ün tek bir düğüm olarak çalıştığını ve küme oluşturma çabalarına girmeyeceğini belirtir.

* Çok Düğümlü Küme İçin:
Birden fazla düğümünüz varsa, discovery.seed_hosts ayarını kullanarak düğümlerin birbirini bulmasını sağlayabilirsiniz.

# discovery.seed_hosts: ["host1", "host2"]
        # cluster.initial_master_nodes: ["node-1", "node-2"]

Bu ayarlar için daha fazla detaylı bilgiye Elasticsearch dokümantasyonundan ulaşabilirsiniz.

Bellek Ayarları (JVM Options)

Elasticsearch’ün performansı üzerinde en büyük etkiye sahip ayarlardan biri, Java Sanal Makinesi (JVM) için ayrılan heap belleğidir. Bu ayarlar /etc/elasticsearch/jvm.options dosyasında yapılır.

sudo vi /etc/elasticsearch/jvm.options

Önemli ayarlar Xms ve Xmx‘tir. Bunlar, JVM’nin kullanacağı minimum ve maksimum heap boyutunu belirler.

-Xms2g
-Xmx2g

* Kural: Xms ve Xmx değerleri aynı olmalıdır. Bu, JVM’nin heap boyutunu dinamik olarak değiştirmesini engeller ve daha stabil bir performans sağlar.
* Kural: Ayrılan heap boyutu, sistemdeki toplam RAM’in yarısından fazla olmamalıdır. Bunun nedeni, işletim sisteminin ve diğer işlemlerin de RAM’e ihtiyaç duymasıdır. Ayrıca, Lucene’in (Elasticsearch’ün temelini oluşturan kütüphane) işletim sistemi sayfa önbelleğini kullanabilmesi için yeterli boş RAM bırakılmalıdır.
* Kural: Heap boyutu asla 31 GB’ı geçmemelidir. Bunun nedeni, Java’daki “sıkıştırılmış işaretçiler” (compressed ordinary object pointers – oops) mekanizmasıdır. 32 GB ve üzeri heap boyutlarında, bu optimizasyon devre dışı kalır ve daha fazla bellek kullanılmasına rağmen performans düşüşleri yaşanabilir. Bu nedenle, 64 GB RAM’li bir sunucuda bile 31 GB heap ayırmak, 32 GB ayarlamaktan daha iyi performans verebilir.

Örneğin, sunucunuzda 8 GB RAM varsa, -Xms4g ve -Xmx4g ayarlayabilirsiniz.

Sistem Ayarları

Elasticsearch’ün kararlı çalışması için işletim sistemi seviyesinde de bazı ayarların yapılması gerekebilir.

1. vm.max_map_count Ayarı:
Elasticsearch, Lucene tarafından kullanılan çok sayıda mmap (memory map) dosyası açar. Yetersiz vm.max_map_count değeri, “max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]” gibi hatalara neden olabilir. Bu değeri kalıcı olarak ayarlamak için:

sudo sysctl -w vm.max_map_count=262144
    echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p

2. Açık Dosya Limiti (ulimit):
Elasticsearch, her indeks ve shard için birçok dosya tutar. Bu nedenle, açık dosya limiti (file descriptors) yüksek olmalıdır. Elasticsearch varsayılan olarak bu limiti kendi içinde ayarlamaya çalışsa da, sistem seviyesinde de kontrol etmek önemlidir. Önerilen minimum değer 65536’dır.

# Geçici olarak ayarlamak için (sadece mevcut oturum için)
    ulimit -n 65536

    # Kalıcı olarak ayarlamak için (reboot sonrası da geçerli olur)
    sudo vi /etc/security/limits.conf

Dosyanın sonuna aşağıdaki satırları ekleyin:

elasticsearch - nofile 65536
    elasticsearch - memlock unlimited

Bu ayarlar, elasticsearch kullanıcısı için geçerli olacaktır.

3. Swapping’i Devre Dışı Bırakma:
Elasticsearch, Java heap’inin asla diske takas edilmemesini (swap out) tercih eder. Swapping, performansı ciddi şekilde düşürebilir.
Bunu devre dışı bırakmanın birkaç yolu vardır:
* Geçici olarak: sudo swapoff -a
* Kalıcı olarak: /etc/fstab dosyasından swap satırını yorum satırı yapmak veya silmek.

Alternatif olarak, Elasticsearch’ün elasticsearch.yml dosyasında bootstrap.memory_lock: true ayarını etkinleştirerek JVM’nin belleği kilitlemesini sağlayabilirsiniz. Bu ayarı kullanabilmek için, memlock unlimited ayarını limits.conf dosyasına eklediğinizden emin olun.

bootstrap.memory_lock: true

Bu ayarı yaptıktan sonra, Elasticsearch’ü başlatmadan önce ulimit -l unlimited komutunu çalıştırmanız gerekebilir veya limits.conf dosyasında elasticsearch - memlock unlimited ayarını yapmanız gerekir.

Tüm yapılandırma değişikliklerini yaptıktan sonra dosyayı kaydedip kapatın.

Elasticsearch Servisini Başlatma ve Yönetme

Yapılandırma tamamlandıktan sonra, Elasticsearch servisini başlatabilir ve yönetimini yapabiliriz. Elasticsearch, systemd ile entegre bir şekilde gelir.

Servisi Başlatma

Elasticsearch servisini başlatmak için:

sudo systemctl start elasticsearch

Servisi Otomatik Başlatma

Sistemin yeniden başlatılması durumunda Elasticsearch’ün otomatik olarak başlamasını sağlamak için:

sudo systemctl enable elasticsearch

Servis Durumunu Kontrol Etme

Servisin çalışıp çalışmadığını kontrol etmek için:

sudo systemctl status elasticsearch

Eğer servis başarılı bir şekilde çalışıyorsa, çıktıda active (running) ifadesini görmelisiniz.

Servisi Yeniden Başlatma

Yapılandırma dosyalarında değişiklik yaptıktan sonra, değişikliklerin etkili olması için servisi yeniden başlatmanız gerekir:

sudo systemctl restart elasticsearch

Servisi Durdurma

Elasticsearch servisini durdurmak için:

sudo systemctl stop elasticsearch

Logları Kontrol Etme

Eğer Elasticsearch servisi başlamazsa veya sorunlar yaşarsanız, log dosyalarını kontrol etmek ilk adımdır.

sudo journalctl -u elasticsearch -f

Bu komut, Elasticsearch servisinin anlık loglarını gösterir. Ayrıca, /var/log/elasticsearch/ dizinindeki log dosyalarını da inceleyebilirsiniz.

Güvenlik Duvarı Ayarları

Eğer sunucunuzda bir güvenlik duvarı (firewall) etkinse ve Elasticsearch’e başka makinelerden erişim sağlamak istiyorsanız, Elasticsearch’ün kullandığı portları açmanız gerekir. CentOS 7’de varsayılan güvenlik duvarı firewalld‘dir.

Elasticsearch genellikle iki ana port kullanır:
* 9200/tcp: REST API için kullanılır. HTTP istekleri bu port üzerinden yapılır.
* 9300/tcp: Küme iletişimi için kullanılır. Düğümler arası iletişim bu port üzerinden gerçekleşir.

Aşağıdaki komutlarla bu portları açın:

sudo firewall-cmd --add-port=9200/tcp --permanent
sudo firewall-cmd --add-port=9300/tcp --permanent

Değişikliklerin etkili olması için güvenlik duvarını yeniden yükleyin:

sudo firewall-cmd --reload

Eğer sadece yerel makineden erişim sağlayacaksanız (örneğin Kibana aynı sunucu üzerinde kuruluysa), bu portları dışarıya açmanıza gerek yoktur. Ancak network.host ayarını 127.0.0.1 veya _local_ olarak bırakmanız gerekir.

Kurulumun Doğrulanması

Elasticsearch servisi çalışmaya başladıktan ve güvenlik duvarı ayarları yapıldıktan sonra, kurulumun başarılı olup olmadığını doğrulamamız gerekir. Bunu bir curl komutuyla yapabiliriz.

Yerel makineden doğrulama:

curl -X GET "http://localhost:9200"

Eğer network.host ayarını sunucunuzun IP adresine veya 0.0.0.0‘a ayarladıysanız ve dışarıdan erişmek istiyorsanız, localhost yerine sunucunuzun IP adresini kullanın:

curl -X GET "http://YOUR_SERVER_IP:9200"

Başarılı bir kurulum durumunda, aşağıdaki gibi bir JSON çıktısı almalısınız:

{
  "name" : "node-1",
  "cluster_name" : "my-application-cluster",
  "cluster_uuid" : "YOUR_CLUSTER_UUID",
  "version" : {
    "number" : "7.X.X",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "YOUR_BUILD_HASH",
    "build_date" : "YYYY-MM-DDTHH:MM:SS.SSSZ",
    "build_snapshot" : false,
    "lucene_version" : "8.X.X",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Bu çıktı, Elasticsearch’ün çalıştığını, küme adını, düğüm adını ve sürüm bilgilerini gösterir.

Ek doğrulama komutları:

* Kümedeki düğümleri listeleme:

curl -X GET "http://localhost:9200/_cat/nodes?v"

Çıktı:

ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
    127.0.0.1            X           X   X    X.XX    X.XX     X.XX dilm      *      node-1

* Kümedeki indeksleri listeleme:

curl -X GET "http://localhost:9200/_cat/indices?v"

Henüz bir indeks oluşturmadığınız için bu komut boş bir çıktı veya sadece dahili indeksleri gösterecektir.

Temel Elasticsearch İşlemleri (Örnekler)

Kurulumu doğruladıktan sonra, Elasticsearch’ün nasıl çalıştığını anlamak için birkaç temel API işlemi yapabiliriz.

1. İndeks Oluşturma

Elasticsearch’te veriler indekslerde saklanır. Bir indeks, ilişkisel veritabanındaki bir tabloya benzer.

curl -X PUT "http://localhost:9200/my_first_index?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  }
}
'

* PUT /my_first_index: my_first_index adında yeni bir indeks oluşturur.
* number_of_shards: İndeksin kaç parçaya (shard) bölüneceğini belirtir. Dağıtık ortamlar için önemlidir. Tek düğümlü kurulumda 1 yeterlidir.
* number_of_replicas: Her shard’ın kaç kopyasının (replica) olacağını belirtir. Veri güvenliği ve okuma performansı için önemlidir. Tek düğümlü kurulumda 0 olarak ayarlanır, çünkü replikalar farklı düğümlerde barındırılmalıdır.

2. Belge Ekleme

İndekse veri eklemek için _doc endpoint’ini kullanırız. Elasticsearch, gönderdiğiniz JSON belgesini otomatik olarak indeksler ve bir kimlik (ID) atar.

curl -X POST "http://localhost:9200/my_first_index/_doc?pretty" -H 'Content-Type: application/json' -d'
{
  "title": "Elasticsearch Kurulum Rehberi",
  "author": "Tech Guru",
  "publish_date": "2023-10-27",
  "content": "Bu rehber, CentOS 7 üzerinde Elasticsearch kurulumunu adım adım anlatmaktadır."
}
'

Bu komut, otomatik olarak bir ID atar. Belgeye belirli bir ID atamak isterseniz PUT metodunu kullanabilirsiniz:

curl -X PUT "http://localhost:9200/my_first_index/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "title": "Kibana Kurulumu",
  "author": "Data Explorer",
  "publish_date": "2023-10-28",
  "content": "Kibana, Elasticsearch verilerini görselleştirmek için kullanılır."
}
'

3. Belge Sorgulama

Belirli bir ID’ye sahip belgeyi almak için:

curl -X GET "http://localhost:9200/my_first_index/_doc/1?pretty"

4. Arama Yapma

İndekste tam metin araması yapmak için _search endpoint’ini kullanırız.

curl -X GET "http://localhost:9200/my_first_index/_search?q=kurulum&pretty"

Bu komut, kurulum kelimesini içeren belgeleri arar.

Daha gelişmiş aramalar için Query DSL (Domain Specific Language) kullanabilirsiniz:

curl -X GET "http://localhost:9200/my_first_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "content": "CentOS"
    }
  }
}
'

Bu komut, content alanında “CentOS” kelimesini içeren belgeleri arar.

5. İndeks Silme

Bir indeksi ve içindeki tüm verileri silmek için:

curl -X DELETE "http://localhost:9200/my_first_index?pretty"

Ek Yapılandırma ve Optimizasyon İpuçları

Elasticsearch’ü üretim ortamında kullanırken veya daha büyük veri setleriyle çalışırken, performans ve kararlılığı artırmak için ek yapılandırma ve optimizasyon ipuçlarını göz önünde bulundurmanız önemlidir.

1. Heap Boyutu (JVM Memory): Daha önce de belirtildiği gibi, Xms ve Xmx değerleri, toplam RAM’in yarısı ve asla 31 GB’ı geçmeyecek şekilde ayarlanmalıdır. Bu, hem JVM hem de işletim sistemi sayfa önbelleği için yeterli bellek bırakılmasını sağlar.

2. Disk Tipi ve Hızı: Elasticsearch disk yoğun bir uygulamadır. Yüksek hızlı SSD’ler, okuma/yazma performansını önemli ölçüde artırır. RAID 0 veya RAID 10 gibi yapılandırmalar da düşünülebilir.

3. Sharding ve Replicas Stratejisi:
* Shard Sayısı: Bir indeksi kaç shard’a böleceğiniz, veri hacminize ve arama performans hedeflerinize bağlıdır. Çok fazla shard, küme yönetim yükünü artırabilir; çok az shard ise paralelleşmeyi kısıtlar.
* Replica Sayısı: Replikalar, shard’ların kopyalarıdır ve veri güvenliği (bir düğüm çökerse) ve okuma performansı (sorgular replikalara dağıtılabilir) için hayati öneme sahiptir. Üretim ortamlarında genellikle en az 1 replica önerilir.

4. Güvenlik:
* X-Pack Security: Elasticsearch’ün ticari bir özelliği olan X-Pack Security, kimlik doğrulama (kullanıcı adı/şifre, LDAP, Active Directory), yetkilendirme (rol tabanlı erişim kontrolü), şifreleme (HTTPS/TLS) ve denetim (audit logging) gibi gelişmiş güvenlik özellikleri sunar. Üretim ortamlarında şiddetle tavsiye edilir.
* HTTPS/TLS: HTTP trafiğini şifrelemek için HTTPS kullanın.
* Ağ Segmentasyonu: Elasticsearch düğümlerini ve istemcilerini güvenli bir ağ segmentine yerleştirin.
* Güvenlik Duvarı: Sadece gerekli portları (9200 ve 9300) ve sadece güvenilir IP adreslerinden gelen bağlantılara izin verin.

5. Monitoring ve Alerting:
* Kibana Monitoring: Kibana, Elasticsearch kümenizin sağlığını, performansını ve metriklerini izlemek için güçlü araçlar sunar.
* Prometheus/Grafana: Daha gelişmiş izleme ve uyarı sistemleri için Prometheus ve Grafana gibi araçlarla entegrasyon düşünebilirsiniz.

6. Sistem Kaynakları:
* CPU: Ağır indeksleme ve karmaşık sorgular için yeterli CPU gücü sağlayın.
* RAM: Daha önce bahsedilen heap ayarlarının yanı sıra, işletim sistemi ve diğer süreçler için de yeterli RAM bırakın.
* Ağ Bant Genişliği: Özellikle çok düğümlü kümelerde ve yüksek veri hacimlerinde düğümler arası iletişim için yeterli ağ bant genişliği önemlidir.

7. Yedekleme ve Geri Yükleme:
* Snapshot API: Elasticsearch’ün Snapshot API’si, indekslerinizi ve küme durumunuzu uzaktan depolara (örneğin S3, HDFS, NFS) yedeklemenizi sağlar. Düzenli yedeklemeler, veri kaybını önlemek için kritik öneme sahiptir.

Sorun Giderme

Kurulum veya yapılandırma sırasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:

1. Elasticsearch Servisi Başlamıyor:
* Logları Kontrol Edin: En önemli adım, /var/log/elasticsearch/ dizinindeki log dosyalarını ve journalctl -u elasticsearch -f çıktısını kontrol etmektir. Hata mesajları sorunun kökenini genellikle açıkça belirtir.
* JVM Ayarları: jvm.options dosyasındaki -Xms ve -Xmx değerlerinin sistem RAM’inin yarısından fazla olmadığından ve 31 GB’ı geçmediğinden emin olun.
* vm.max_map_count: Bu değerin en az 262144 olarak ayarlandığından emin olun.
* Dosya İzinleri: Elasticsearch’ün veri ve log dizinlerine yazma izinleri olduğundan emin olun (/var/lib/elasticsearch, /var/log/elasticsearch). Genellikle elasticsearch kullanıcısı bu dizinlere sahiptir.

2. Bağlantı Sorunları (API’ye Erişilemiyor):
* network.host: /etc/elasticsearch/elasticsearch.yml dosyasındaki network.host ayarının doğru olduğundan emin olun. Başka makinelerden erişmek istiyorsanız 0.0.0.0 veya sunucunun IP adresi olmalıdır.
* Güvenlik Duvarı: 9200 ve 9300 portlarının güvenlik duvarında açık olduğundan emin olun (firewall-cmd --list-all).
* Servis Çalışıyor mu?: sudo systemctl status elasticsearch komutuyla servisin aktif olduğundan emin olun.

3. Bellek Hataları (Out Of Memory):
* Heap Ayarları: jvm.options dosyasındaki heap ayarlarını tekrar kontrol edin. Xms ve Xmx değerleri uygun değilse bu tür hatalar alabilirsiniz.
* Swapping: Swapping’in devre dışı bırakıldığından veya bootstrap.memory_lock: true ayarının etkin olduğundan emin olun.

4. Küme Keşif Sorunları (Çok Düğümlü Ortamda):
* discovery.seed_hosts: Bu ayarın tüm düğümlerde doğru bir şekilde yapılandırıldığından ve düğümlerin birbirine erişebildiğinden emin olun.
* cluster.initial_master_nodes: Yeni bir küme başlatırken bu ayarın doğru bir şekilde listelendiğinden emin olun.

Sonuç

Bu kapsamlı rehberde, CentOS 7 işletim sistemi üzerinde Elasticsearch’ün kurulumu ve temel yapılandırması adımlarını detaylı bir şekilde ele aldık. Java’nın kurulmasından Elasticsearch deposunun eklenmesine, ana yapılandırma dosyasının düzenlenmesinden servis yönetimine ve güvenlik duvarı ayarlarına kadar tüm kritik süreçleri adım adım inceledik. Ayrıca, kurulumun doğrulanması için curl komutlarını ve Elasticsearch ile temel etkileşim örneklerini sunduk.

Unutulmamalıdır ki, bu rehber tek düğümlü bir Elasticsearch kurulumu için temel bir başlangıç noktasıdır. Üretim ortamlarında veya daha karmaşık senaryolarda, çok düğümlü küme yapılandırması, gelişmiş güvenlik önlemleri (X-Pack), yedekleme stratejileri ve kapsamlı izleme gibi konulara daha fazla odaklanmanız gerekecektir.

Elasticsearch, büyük veri kümelerini yönetmek ve analiz etmek için inanılmaz derecede güçlü ve esnek bir araçtır. Bu rehberdeki adımları takip ederek, kendi Elasticsearch ortamınızı başarıyla kurmuş ve veri analizi yolculuğunuza sağlam bir başlangıç yapmış olacaksınız. Bir sonraki adım olarak, Elasticsearch verilerinizi görselleştirmek ve sorgulamak için Kibana’yı kurmayı düşünebilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version