OpenSearch nedir ve nasıl kurulur?
Bu yazıda OpenSearch’ten ve onun kurulumundan, ayrıca Elasticsearch ile arasındaki bağlantıdan söz edeceğim. -Ayrıca yakında kullanımı hakkında da bir yazı yazdığımda buraya linkini ekleyeceğim.-
Öncelikle Elasticsearch neydi? Kayıtların yüksek performanslı olarak aranabilmesini sağlayan NoSQL bir veritabanıydı. Elasticsearch, ücretsiz olmasının yanı sıra ücretli commercial çözümler de sunan bir şirkettir aynı zamanda ve şirketin ticari amaçlı olarak hizmet verdiğini de unutmamak gerekir.
Elasticsearch tek başına ücretsiz de olsa, barındırdığı birçok plugin ve kendisine entegre edilebilecek diğer yazılımlar için lisans ücreti ödenmesi gerekmektedir. Şirket, 2021 yılında bir karar alarak, açık kaynak lisansıyla dağıttığı yazılımlarının 7.11 ve sonrasındaki sürümleri için Apache 2.0 yerine Server Side Public License (SSPL) kullanacağını belirtmiştir. SSPL, Open Source Initiative komitesi tarafından “açık kaynak” ünvanı için fazla kısıtlayıcı bulunduğu için kabul edilmemiştir. Ayrıca, bulut servis sağlayıcılarının yazılımı bir servis olarak kullanıcılara sunulmasını da kısıtlamaktaydı. Elasticsearch, Amazon Web Services (AWS) tarafından hali hazırda bir hizmet olarak sunulduğu için bu durum AWS’nin hiç hoşuna gitmemişti. Böylece OpenSearch isimli yeni bir projenin adımları atıldı. OpenSearch, Elasticsearch 7.10.2 versiyonunun forku ile oluşturulmuştur.
Şimdi kurulumuna geçebiliriz. OpenSearch, kendi sitesinde de anlattığı gibi Docker ile çok kolay bir şekilde kurulabiliyor. Fakat bunun yerine tarball kurulumunu isterseniz yazının devamında detaylıca anlattım.
Buna OpenSearch’ün resmi sitesine girerek başlayalım. Anasayfada “Get Started” veya “Download” linkine tıkladıktan sonra platformunuza uygun tarball’un linkini kopyalayın.
Not: Linux’ta kurulum yapmadan önce vm.max_map_count
ayarının en az 262144
olduğundan emin olmalısınız.
cat /proc/sys/vm/max_map_count
Buradaki gereksinimi karşılamıyorsa /etc/sysctl.conf
dosyasına girip aşağıdaki satırı en alta ekleyin:
vm.max_map_count=262144
Ardından ayarları sudo sysctl -p
komutuyla yenileyin.
Son olarak Opensearch dökümanlarında performans artışı için sudo swapoff -a
komutu ile swapping’in kapatılması öneriliyor.
OpenSearch (ve Elasticsearch), yazılımın root kullanıcısıyla çalıştırılmasını engellemekte. Bu yüzden OpenSearch’ü çalıştırabilmesi için kullanıcı oluşturuyoruz.
sudo groupadd opensearch
sudo useradd -g opensearch -r -m -d /usr/local/opensearch -s /bin/bash opensearch
Linux / 64-bit için olan örnekte, kopyaladığımız dosya linkinden sunucuya indiriyoruz.
wget "https://artifacts.opensearch.org/releases/bundle/opensearch/2.5.0/opensearch-2.5.0-linux-x64.tar.gz"
Şimdi dosyaları /usr/local/opensearch
içerisine çıkartalım.
sudo tar -zxf opensearch-2.5.0-linux-x64.tar.gz -C /usr/local/opensearch --strip-components=1
Gerekli izinleri veriyoruz.
sudo chown -R opensearch:opensearch /usr/local/opensearch
Son olarak geri kalan işlemlere opensearch kullanıcı ile devam ediyoruz.
sudo su - opensearch
cd /usr/local/opensearch
Burada öncelikle, SSL kurulumu ile uğraşmamak adına security
eklentisini devre dışı bırakıyorum.
nano config/opensearch.yml
Değeri true
olarak değiştirip kaydediyoruz.
plugins.security.disabled: true
Şimdi ./bin/opensearch
komutunu çalıştırdığımızda hiçbir hata vermeden OpenSeach’ün çalışması lazım. Hatta curl
komutuyla bu esnada test yapabilirsiniz de.
curl http://localhost:9200
{
"name" : "Ubuntu-2004-focal-64-minimal",
"cluster_name" : "opensearch",
"cluster_uuid" : "RbwNIsqPTWWLCIlE7nIqwA",
"version" : {
"distribution" : "opensearch",
"number" : "2.5.0",
"build_type" : "tar",
"build_hash" : "b8a8b6c4d7fc7a7e32eb2cb68ecad8057a4636ad",
"build_date" : "2023-01-18T23:48:48.981786100Z",
"build_snapshot" : false,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Burada da bir sorun meydana gelmediyse, servis oluşturma kaldı geriye. Bu yazıda servis oluşturmak için gerekli detaylı açıklamalar mevcuttur.
Aşağıda OpenSearch’e özel oluşturulmuş olan servis dosyasını bulabilirsiniz:
[Unit]
Description=OpenSearch
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
RuntimeDirectory=data
User=opensearch
Group=opensearch
WorkingDirectory=/usr/local/opensearch
Environment=OPENSEARCH_HOME=/usr/local/opensearch
Environment=JAVA_HOME=/usr/local/opensearch/jdk
ExecStart=/usr/local/opensearch/bin/opensearch -d -p ${OPENSEARCH_HOME}/opensearch.pid
StandardOutput=journal
StandardError=inherit
LimitNOFILE=65535
LimitNPROC=4096
LimitAS=infinity
LimitFSIZE=infinity
TimeoutStopSec=0
TimeoutStartSec=75
# SIGTERM sinyali Java işlemini durdurmak için kullanılıyor
KillSignal=SIGTERM
# Sinyali onun kontrol grubu yerine JVMye gönder
KillMode=process
# Java işlemi sonlandırılamaz
SendSIGKILL=no
# JVM SIGTERM sinyali alırsa 143 exit kodu döndürür
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Kaynaklar:
https://opensearch.org/docs/latest/install-and-configure/install-opensearch/tar/