Takip et

CentOS 8 Üzerine Elasticsearch Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber

CentOS 8 Üzerine Elasticsearch Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber Elasticsearch, dağıtık, RESTful, açık kaynaklı bir arama ve

CentOS 8 Üzerine Elasticsearch Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber

Elasticsearch, dağıtık, RESTful, açık kaynaklı bir arama ve analiz motorudur. Büyük veri kümeleri üzerinde hızlı arama, analiz ve depolama yetenekleri sunar. Log yönetimi, tam metin arama, güvenlik analizi, iş zekası ve daha birçok alanda yaygın olarak kullanılmaktadır. Gerçek zamanlı verileri işleme ve sorgulama kabiliyeti sayesinde modern uygulamaların vazgeçilmez bir bileşeni haline gelmiştir. Bu makale, CentOS 8 işletim sistemi üzerine Elasticsearch’ü adım adım nasıl kuracağınızı ve temel yapılandırmalarını nasıl yapacağınızı detaylı bir şekilde açıklayacaktır.

Giriş: Elasticsearch Nedir ve Neden Kullanılır?

Elasticsearch, Lucene kütüphanesi üzerine inşa edilmiş, JSON tabanlı dokümanları indeksleyen ve sorgulayan güçlü bir araçtır. Ölçeklenebilirliği, hızı ve esnekliği sayesinde terabaytlarca veriyi saniyeler içinde analiz edebilir. Geliştiricilerin ve sistem yöneticilerinin karmaşık veri yapılarını kolayca yönetmelerine olanak tanır.
Kullanım alanları oldukça geniştir:

* Log Yönetimi ve Analizi: Sunucu logları, uygulama logları ve güvenlik loglarını toplar, indeksler ve analiz eder. ELK Stack (Elasticsearch, Logstash, Kibana) bu alanda endüstri standardı haline gelmiştir.
* Tam Metin Arama: E-ticaret siteleri, haber portalları ve doküman yönetim sistemleri gibi uygulamalarda hızlı ve alakalı arama sonuçları sunar.
* Metrik ve Performans İzleme: Sistem ve uygulama metriklerini toplar ve görselleştirir, performans sorunlarını tespit etmeye yardımcı olur.
* Güvenlik Analizi: Güvenlik olaylarını izler, anormal davranışları tespit eder ve potansiyel tehditleri belirler.
* İş Zekası: Büyük veri kümelerinden anlamlı içgörüler elde etmek için kullanılır.

Bu makalenin amacı, CentOS 8 ortamında Elasticsearch’ün sorunsuz bir şekilde kurulmasını sağlamak ve ilk adımları atmanız için gerekli tüm bilgileri sunmaktır.

Ön Gereksinimler

Elasticsearch kurulumuna başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olmalısınız:

* CentOS 8 Sunucu: Minimum 4 GB RAM ve 2 CPU çekirdeği önerilir. Üretim ortamları için daha yüksek kaynaklar gereklidir.
* Sudo Yetkileri: Kurulum ve yapılandırma işlemleri için root veya sudo yetkilerine sahip bir kullanıcı.
* İnternet Bağlantısı: Paketleri indirmek ve güncellemeleri yapmak için aktif bir internet bağlantısı.
* Java Geliştirme Kiti (JDK): Elasticsearch, çalışmak için Java Sanal Makinesi’ne (JVM) ihtiyaç duyar. Elasticsearch’ün belirli sürümleri için uyumlu bir JDK sürümü gereklidir. Genellikle OpenJDK 11 veya OpenJDK 17 önerilir.

Sistem Güncellemesi ve Java Yüklemesi

Kuruluma başlamadan önce sisteminizi güncel tutmak ve Elasticsearch için gerekli Java ortamını kurmak önemlidir.

Sistem Güncellemesi

Terminali açın ve aşağıdaki komutu çalıştırarak sisteminizdeki tüm paketleri güncelleyin:

sudo dnf update -y

Bu komut, sistemdeki mevcut tüm paketleri en son sürümlerine güncelleyecektir. Bu işlem biraz zaman alabilir.

Java Geliştirme Kiti (JDK) Yüklemesi

Elasticsearch, Java tabanlı bir uygulama olduğu için sunucunuzda uyumlu bir JDK sürümünün kurulu olması gerekir. Bu rehberde OpenJDK 11’i kuracağız, ancak Elasticsearch’ün daha yeni sürümleri için OpenJDK 17 de tercih edilebilir.

sudo dnf install java-11-openjdk -y

Kurulum tamamlandıktan sonra, Java’nın doğru şekilde yüklendiğini doğrulamak için sürümünü kontrol edebilirsiniz:

java -version

Çıktı, yüklü Java sürümünü göstermelidir, örneğin:

openjdk version "11.0.x" 2018-xx-xx LTS
OpenJDK Runtime Environment 18.9 (build 11.0.x+xx-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.x+xx-LTS, mixed mode, sharing)

Elasticsearch Deposu Ekleme

Elasticsearch’ü doğrudan DNF (YUM) paket yöneticisi aracılığıyla kurabilmek için Elastic’in resmi deposunu sisteminize eklemeniz gerekir.

GPG Anahtarını İçe Aktarma

Elasticsearch paketlerinin bütünlüğünü doğrulamak için Elastic’in GPG anahtarını içe aktarmalısınız:

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

Bu komut, Elastic’in genel anahtarını sisteminize ekler, böylece DNF, indireceği paketlerin güvenilirliğini kontrol edebilir.

Elasticsearch Deposu Dosyası Oluşturma

Şimdi, DNF’nin Elasticsearch paketlerini bulabileceği bir depo dosyası oluşturun. Bir metin düzenleyici kullanarak /etc/yum.repos.d/elasticsearch.repo dosyasını oluşturun veya düzenleyin:

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

Dosyanın içine aşağıdaki içeriği yapıştırın. Bu örnekte Elasticsearch 8.x serisi için depo tanımlanmıştır. Eğer belirli bir sürümü (örn. 7.x) kurmak istiyorsanız, baseurl kısmını ilgili sürüme göre değiştirmelisiniz.

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

Dosyayı kaydedip kapatın (Vi/Vim kullanıyorsanız :wq tuşlayın).

Elasticsearch Kurulumu

Depo eklendikten sonra Elasticsearch’ü DNF aracılığıyla kolayca kurabilirsiniz.

Elasticsearch Paketini Yükleme

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

sudo dnf install elasticsearch -y

Bu komut, Elasticsearch paketini ve bağımlılıklarını indirecek ve kuracaktır.

Elasticsearch Servisini Başlatma ve Etkinleştirme

Kurulum tamamlandıktan sonra Elasticsearch servisini başlatmanız ve sistem başlangıcında otomatik olarak başlaması için etkinleştirmeniz gerekir.

Önce, systemd yapılandırmasını yeniden yükleyin:

sudo systemctl daemon-reload

Ardından, Elasticsearch servisini başlatın:

sudo systemctl start elasticsearch

Ve sistem başlangıcında otomatik olarak başlaması için etkinleştirin:

sudo systemctl enable elasticsearch

Servisin durumunu kontrol etmek için:

sudo systemctl status elasticsearch

Çıktı, servisin active (running) olduğunu göstermelidir.

Elasticsearch Yapılandırması

Elasticsearch’ün ana yapılandırma dosyası /etc/elasticsearch/elasticsearch.yml adresindedir. Bu dosya, ağ ayarları, küme ayarları, bellek kullanımı ve veri yolları gibi önemli parametreleri içerir.

Yapılandırma Dosyasını Düzenleme

Yapılandırma dosyasını bir metin düzenleyici ile açın:

sudo vi /etc/elasticsearch/elasticsearch.yml

Aşağıda en yaygın ve önemli yapılandırma seçenekleri açıklanmıştır:

Küme ve Düğüm Ayarları

* cluster.name: Elasticsearch kümenizin adıdır. Aynı kümedeki tüm düğümler aynı küme adına sahip olmalıdır. Varsayılan olarak “elasticsearch” dir.

cluster.name: my-application-cluster

* node.name: Kümedeki bu belirli düğümün adıdır. Benzersiz olmalıdır.

node.name: node-1

Ağ Ayarları

* network.host: Elasticsearch’ün hangi IP adreslerini dinleyeceğini belirtir.
* 127.0.0.1 veya localhost: Yalnızca yerel erişime izin verir.
* 0.0.0.0: Tüm ağ arayüzlerinden erişime izin verir (dikkatli kullanılmalıdır, güvenlik duvarı ile kısıtlanmalıdır).
* Belirli bir IP adresi: Sadece o IP adresinden erişime izin verir.

network.host: 0.0.0.0

* http.port: Elasticsearch’ün HTTP isteklerini dinleyeceği port numarasıdır. Varsayılan olarak 9200 dir.

http.port: 9200

Veri ve Log Yolları

* path.data: Elasticsearch’ün veri dosyalarını (indeksler, dokümanlar vb.) depolayacağı dizin. Yüksek performanslı bir disk (SSD) üzerinde olmalıdır.

path.data: /var/lib/elasticsearch

* path.logs: Elasticsearch’ün log dosyalarını depolayacağı dizin.

path.logs: /var/log/elasticsearch

Bellek Ayarları (JVM Heap Size)

Elasticsearch’ün performansını doğrudan etkileyen en önemli ayarlardan biri JVM heap boyutudur. Bu ayar /etc/elasticsearch/jvm.options dosyasında yapılır.

sudo vi /etc/elasticsearch/jvm.options

Bu dosyada Xms ve Xmx parametrelerini bulacaksınız. Bu parametreler JVM’nin başlangıç ve maksimum heap boyutunu belirler. Genel kural, sunucunuzdaki toplam RAM’in yaklaşık yarısını Elasticsearch’e ayırmaktır, ancak bu değer 32 GB’ı geçmemelidir (Java’nın işaretçi sıkıştırma optimizasyonları nedeniyle). Örneğin, sunucunuzda 8 GB RAM varsa, her iki değeri de 4 GB olarak ayarlayabilirsiniz:

-Xms4g
-Xmx4g

Yapılandırma dosyalarında değişiklik yaptıktan sonra, Elasticsearch servisini yeniden başlatmayı unutmayın:

sudo systemctl restart elasticsearch

Güvenlik Duvarı Ayarları

Eğer network.host ayarını 0.0.0.0 olarak ayarladıysanız veya Elasticsearch’e başka bir makineden erişmek istiyorsanız, CentOS 8’in güvenlik duvarında (firewalld) Elasticsearch’ün kullandığı 9200 portunu açmanız gerekir.

9200 Portunu Açma

Aşağıdaki komutları kullanarak 9200 portunu kalıcı olarak açın:

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

Güvenlik duvarı kurallarını yeniden yükleyin:

sudo firewall-cmd --reload

Artık Elasticsearch sunucunuza ağ üzerinden erişilebilir olmalıdır.

Elasticsearch Test Etme

Elasticsearch’ün doğru şekilde çalıştığını ve ağ üzerinden erişilebilir olduğunu doğrulamak için çeşitli testler yapabilirsiniz.

Yerel Erişim Testi

Sunucunun kendisinden Elasticsearch’e bir HTTP isteği gönderin:

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

Başarılı bir kurulumda, Elasticsearch hakkında temel bilgileri (küme adı, sürüm, UUID vb.) içeren bir JSON yanıtı almalısınız:

{
  "name" : "node-1",
  "cluster_name" : "my-application-cluster",
  "cluster_uuid" : "...",
  "version" : {
    "number" : "8.x.x",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "...",
    "build_date" : "...",
    "build_snapshot" : false,
    "lucene_version" : "...",
    "minimum_wire_compatibility_version" : "...",
    "minimum_index_compatibility_version" : "..."
  },
  "tagline" : "You Know, for Search"
}

Uzak Erişim Testi

Eğer network.host ayarını ve güvenlik duvarını doğru yapılandırdıysanız, başka bir makineden sunucunuzun IP adresini kullanarak Elasticsearch’e erişebilirsiniz:

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

YOUR_SERVER_IP yerine sunucunuzun gerçek IP adresini yazın.

Küme Sağlığı Kontrolü

Kümenizin sağlığını kontrol etmek için aşağıdaki komutu kullanın:

curl -X GET "http://localhost:9200/_cluster/health?pretty"

Bu komut, kümenin genel sağlık durumunu (green, yellow, red), düğüm sayısını ve indeks durumunu gösterir. Yeni bir kurulumda genellikle green veya yellow durumu beklenir.

Elasticsearch Kullanımı ve Temel İşlemler

Elasticsearch’ü kurduktan sonra, verileri indekslemeye ve sorgulamaya başlayabilirsiniz. İşte bazı temel işlemler:

Dizin Oluşturma (Creating an Index)

Elasticsearch’te veriler dizinlerde (index) saklanır. Bir dizin, 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
  }
}
'

Bu komut, my_first_index adında yeni bir dizin oluşturur. number_of_shards dizinin kaç parçaya bölüneceğini, number_of_replicas ise her parçanın kaç kopyasının olacağını belirtir. Tek düğümlü bir kurulumda number_of_replicas 0 olmalıdır.

Belge Ekleme (Indexing a Document)

Dizinlere JSON formatında belgeler ekleyebilirsiniz.

curl -X POST "http://localhost:9200/my_first_index/_doc?pretty" -H 'Content-Type: application/json' -d'
{
  "title": "CentOS 8 Elasticsearch Kurulumu",
  "author": "Teknik Yazar",
  "content": "Bu makale, CentOS 8 üzerine Elasticsearch kurulumunu adım adım anlatmaktadır.",
  "tags": ["elasticsearch", "centos", "kurulum", "rehber"]
}
'

Elasticsearch, belgeyi otomatik olarak bir ID ile indeksleyecektir. Belgeyi belirli bir ID ile indekslemek isterseniz _doc yerine _doc/1 gibi bir yapı kullanabilirsiniz:

curl -X PUT "http://localhost:9200/my_first_index/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "title": "CentOS 8 Elasticsearch Yapılandırması",
  "author": "Teknik Yazar",
  "content": "Elasticsearch yapılandırma dosyası ve JVM ayarları hakkında bilgiler.",
  "tags": ["elasticsearch", "centos", "yapılandırma", "jvm"]
}
'

Belge Arama (Searching Documents)

İndekslediğiniz belgeleri aramak için _search endpoint’ini kullanabilirsiniz.

Tüm belgeleri listeleme:

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

Belirli bir terimi arama (Query String Search):

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

Daha karmaşık sorgular 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": "elasticsearch kurulumu"
    }
  }
}
'

Belge Güncelleme ve Silme (Updating and Deleting Documents)

Belgeyi ID’si ile güncellemek için _update endpoint’ini kullanabilirsiniz:

curl -X POST "http://localhost:9200/my_first_index/_update/1?pretty" -H 'Content-Type: application/json' -d'
{
  "doc": {
    "tags": ["elasticsearch", "centos", "yapılandırma", "jvm", "güncel"]
  }
}
'

Belgeyi ID’si ile silmek için:

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

Dizini tamamen silmek için:

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

Performans ve Güvenlik İpuçları

Elasticsearch’ü üretim ortamlarında kullanırken performans ve güvenlik hayati öneme sahiptir.

Performans İpuçları

* JVM Heap Boyutu: Doğru JVM heap boyutu (RAM’in %50’si, 32 GB’ı aşmayacak şekilde) performansı büyük ölçüde etkiler.
* Disk Hızı: Elasticsearch disk yoğun bir uygulamadır. SSD kullanmak performansı önemli ölçüde artırır. RAID dizileri veya NVMe sürücüler tercih edilmelidir.
* Sharding ve Replikalar: Verilerinizi doğru sayıda shard’a bölmek ve yeterli sayıda replika bulundurmak hem performans hem de veri dayanıklılığı için kritik öneme sahiptir.
* Mapping Optimizasyonu: Dizinlerinizin mapping’ini (alanların veri tipleri) doğru şekilde tanımlamak, arama ve indeksleme performansını artırır.
* Doc Values ve Fielddata: Agregasyonlar ve sıralama için doc_values kullanın. fielddata kullanmaktan kaçının, çünkü çok fazla bellek tüketebilir.
* Sistem Kaynakları: Yeterli CPU çekirdeği ve RAM sağlamak, Elasticsearch’ün düzgün çalışması için önemlidir.

Güvenlik İpuçları

* X-Pack Security: Elasticsearch’ün ticari veya temel lisansla gelen X-Pack Security özelliklerini kullanarak kimlik doğrulama (kullanıcılar, roller), yetkilendirme, şifreleme (TLS/SSL) ve IP filtreleme gibi güvenlik katmanları ekleyin.
* Ağ İzolasyonu: Elasticsearch sunucularınızı bir özel ağa veya VLAN’a yerleştirin ve yalnızca gerekli portları (9200, 9300) açın.
* Güvenlik Duvarı: firewalld veya başka bir güvenlik duvarı kullanarak Elasticsearch’e yalnızca güvenilir IP adreslerinden erişime izin verin. network.host: 0.0.0.0 kullanmaktan kaçının veya çok sıkı güvenlik duvarı kuralları uygulayın.
* HTTPS/TLS: HTTP trafiğini şifrelemek için TLS/SSL kullanın. Bu, hassas verilerin ağ üzerinden güvenli bir şekilde iletilmesini sağlar.
* Sürüm Güncellemeleri: Elasticsearch ve Java’yı düzenli olarak en son güvenli sürümlerine güncelleyin. Güvenlik açıkları genellikle yeni sürümlerde giderilir.
* Erişim Kontrolü: Elasticsearch API’sine erişimi kısıtlayın. Yalnızca yetkili uygulamaların ve kullanıcıların erişmesine izin verin.
* Denetim Kayıtları: X-Pack’in denetim kayıtları özelliğini kullanarak Elasticsearch üzerindeki tüm önemli olayları (giriş denemeleri, API çağrıları vb.) kaydedin ve izleyin.

Sonuç

Bu makalede, CentOS 8 işletim sistemi üzerine Elasticsearch’ün nasıl kurulacağını ve temel yapılandırmalarının nasıl yapılacağını adım adım öğrendiniz. Java kurulumundan depo eklemeye, Elasticsearch servisini başlatmaktan güvenlik duvarı ayarlarına ve temel API işlemlerine kadar tüm süreç detaylı bir şekilde ele alındı. Ayrıca, üretim ortamlarında Elasticsearch’ü daha verimli ve güvenli hale getirmek için önemli performans ve güvenlik ipuçları da sunuldu.

Elasticsearch, modern veri işleme ve analiz ihtiyaçları için güçlü ve esnek bir platformdur. Kurulumu tamamladıktan sonra, verilerinizi indekslemeye, sorgulamaya ve analiz etmeye başlayabilirsiniz. İleri düzey kullanım için Kibana ile görselleştirme, Logstash ile veri toplama ve Beats ile hafif veri gönderimi gibi diğer Elastic Stack bileşenlerini keşfetmeniz önerilir. Sürekli izleme, düzenli bakım ve güncellemeler, Elasticsearch kümenizin istikrarlı ve yüksek performanslı çalışmasını sağlayacaktır.

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.
Mobil sürümden çık