Bu doküman, Ubuntu işletim sistemine sahip bir sunucuya Elasticsearch 8.17.10 kurulumunu anlatmaktadır. Ubuntu 2024.04 LTS işletim sisteminin olması tavsiye edilir.

Kuruluma Başlamadan Önce Yapılması Gereken Kontroller

Kurulum için Önemli

Kurulumun sağlıklı olması için sunucularının aşağıdaki adreslere erişmesi gerekmektedir.

Elasticsearch kurulumunun yapılabilmesi için: 

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.10-linux-x86_64.tar.gz

Önemli

Ubuntu paketleri güncellerken Türkiye lokasyonundaki sunucudan çekmeye çalışır. Ancak zaman zaman tr.archive.ubuntu.com adresinde sorun olabilmektedir. Bu durumda aşağıdaki değişikliği yapmak gerekir.

sudo vi /etc/apt/sources.list

#İçinde tr. olan adreslerin hepsini "Replace All" ile değiştirin.

#Örnek: 

Eski: http://tr.archive.ubuntu.com/ubuntu

Yeni: http://archive.ubuntu.com/ubuntu

1) İşletim Sistemi Konfigürasyonları


# Elasticsearch kullanıcısı oluşturulur ve yetkilendirilir
sudo adduser elasticsearch
sudo usermod -aG sudo elasticsearch

# Kullanıcıya geçilerek işlemlere devam edilir
sudo su - elasticsearch

# Aşağıdaki araçların tüm sunucular üzerinde kurulu olması tavsiye edilmektedir
sudo apt update 

# Güvenlik duvarı kapatılır
sudo systemctl stop ufw
sudo systemctl disable ufw

# Swap kapatılır ve yeniden başlamasının önlenmesi için /etc/fstab dosyası içindeki swap satırı silinir
sudo swapoff -a
sudo vi /etc/fstab
# Daha sonra vi dosyasını kapatılır (:wq)   
POWERSHELL


2) Elasticsearch Kurulumu

2.1) İşletim Sistemi Konfigürasyonları ve Elasticsearch Uygulamasının Kurulması


sudo vi /etc/security/limits.conf
elasticsearch  -  nofile  65535
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
 
sudo sysctl -w vm.swappiness=1
sudo sysctl -w vm.max_map_count=262144
 
sudo vi /etc/sysctl.conf
vm.max_map_count=262144 elasticsearch
  
sudo sysctl -p
sudo sysctl vm.max_map_count
BASH

2.2) Elasticsearch Kurulumu

sudo mkdir /opt/elasticsearch
cd /opt/elasticsearch
sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.10-linux-x86_64.tar.gz

sudo tar -xzf elasticsearch-8.17.10-linux-x86_64.tar.gz

sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch
sudo chmod -Rf 775 /opt/elasticsearch



##Bu noktada uygun diskin nerede mount edilmiş olduğuna dikkat edin veya sistem yöneticilerine diski aşağıdaki path'e eklemelerini söyleyin
#Bu kontrol için aşağıdaki komutlar kullanılabilir
df -h
lsblk

sudo mkdir /data
sudo mkdir /data/elastic-data/
sudo mkdir /data/elastic-snapdata/
 
sudo chown -Rf elasticsearch:elasticsearch /data/elastic-*
sudo chmod -Rf 775 /data/elastic-* 
BASH

2.3) Elasticsearch Parametrelerinin Ortama Göre Ayarlanması

Konfigürasyon dosyasındaki parametrelerin kendi ortamınıza uygun olarak ayarlanarak eklenmesi gerekmektedir.



sudo vi /opt/elasticsearch/elasticsearch-8.17.10/config/elasticsearch.yml
BASH

Önemli

Burada path.data ve path.repo adresinin bir önceki maddeye uygun olarak sistemdeki log dosyanızın tutulacağı diskin adresi olarak verilmesi gerekmektedir.

cluster.name: ApinizerEsCluster
node.name: "<NODE_IP>"
network.host: "<NODE_IP>"
http.port: 9200

cluster.initial_master_nodes: ["<NODE_IP>"]

discovery.seed_hosts: []
path.data: /data/elastic-data/
path.repo: ["/data/elastic-snapdata"]

# Security
xpack.security.enabled: true
xpack.security.enrollment.enabled: true

#xpack.security.http.ssl:
#  enabled: true
#  keystore.path: certs/elastic-certificates.p12
#  truststore.path: certs/elastic-certificates.p12

# Transport SSL:
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/elastic-certificates.p12
  truststore.path: certs/elastic-certificates.p12

# CORS ayarları
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type,Content-Length
  
YML


Elasticseach'ün kullanacağı JVM (Java Sanal Makinesi) değerleri ve diğer JVM parametrelerini aşağıdaki gibi ayarlayabilirsiniz.

sudo vi /opt/elasticsearch/elasticsearch-8.17.10/config/jvm.options
BASH

Önemli

Burada işletim sisteminin sahip olduğu RAM miktarının yarısına kadar çıkılabilir ve bu değer 32GB'ı aşmamalıdır

-Xms8g
-Xmx8g
YML


2.4) Elasticsearch'ü Linux Service Olarak Ayarlama


sudo chmod -Rf 775 /opt/elasticsearch/elasticsearch-8.17.10/*

sudo vi /etc/systemd/system/elasticsearch.service
BASH
[Unit]
Description=Elasticsearch 8.17.10
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=elasticsearch
Group=elasticsearch
ExecStart=/opt/elasticsearch/elasticsearch-8.17.10/bin/elasticsearch
Environment=ES_PATH_CONF=/opt/elasticsearch/elasticsearch-8.17.10/config
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
LimitMEMLOCK=infinity
TimeoutStopSec=0

[Install]
WantedBy=multi-user.target 
BASH

Aşağıdaki komutlar sadece ilk kurulum sırasında çalıştırılmalıdır:

İlk kurulumdan sonra Elasticsearch’ün başlatma, durdurma veya yeniden başlatma gibi tüm işlemleri systemctl üzerinden yapılmalıdır.

# Sertifika oluşturmak için aşağıdaki komut kullanılır. Bu dosyanın ayrıca parola ile korunması zorunlu değildir (Önerilmemektedir).
cd /opt/elasticsearch/elasticsearch-8.17.10/
./bin/elasticsearch-certutil ca --days 3650
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --days 3650

# Sertifikalar config/certs dizini oluşturulup altına taşınır
mkdir config/certs/
mv elastic-certificates.p12 config/certs/
mv elastic-stack-ca.p12 config/certs/
cd /opt/elasticsearch/elasticsearch-8.17.10/config/certs/
openssl pkcs12 -in elastic-certificates.p12 -nokeys -out elastic-certificates.crt

# Devam etmeden önce bu sertifika dosyalarının Elasticsearch dosyalarıyla aynı ayrıcalıklara sahip olduğundan emin olun.
sudo chown -Rf elasticsearch:elasticsearch /opt/elasticsearch
sudo chmod -Rf 775 /opt/elasticsearch
BASH
sudo systemctl daemon-reload

sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
sudo systemctl enable elasticsearch
BASH

2.5) Built-in kullanıcı şifrelerini oluşturma


Komutlar çalıştırıldığında, ekranda Elasticsearch kullanıcı adı, sertifika bilgileri ve diğer kritik bilgiler TEK SEFERLİK olmak üzere ekranda görüntülenecektir.
Bu bilgilerin güvenli bir şekilde saklanması önemlidir.

Elasticsearch'in varsayılan built-in kullanıcı adı elastic'dir. Fakat bu kullanıcı adına oluşturulmuş şifre yoktur.

Şifre ataması yapılırken built-in tüm kullanıcıların şifreleri değiştirilecektir.

cd /opt/elasticsearch/elasticsearch-8.17.10/
# Otomatik olarak şifreleri güncellemek için Elasticsearch dizininde aşağıdaki komut çalıştırılır.
./bin/elasticsearch-setup-passwords auto

#Vereceği çıktı aşağıdaki gibi olacaktır
Changed password for user elastic
PASSWORD elastic = dd6mjMiemZlAKfOXkUAm
BASH



sudo vi /opt/elasticsearch/elasticsearch-8.17.10/config/elasticsearch.yml
BASH

"xpack.security.http.ssl" ile ilgili satırlar açılır ve elasticsearch restart edilir.

xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/elastic-certificates.p12
  truststore.path: certs/elastic-certificates.p12
YML
sudo systemctl restart elasticsearch
TEXT
Bu adım, Elasticsearch güvenliği aktifleştirdikten sonra yeni bir kullanıcı oluşturmak için gereklidir. Buradaki kimlik bilgileri de Apinizer API Manager da tanımlanabilir.

3) Apinizer'a Elasticsearch Connector Eklemek

Administration > Connection Management > Elasticsearch Sayfasına gidilir ve sunucuda oluşturulan isim-şifre ve elastic-certificates.crt isimli sertifika; sunucu bilgileri ile birlikte arayüz üzerinden eklenir.


Detaylı bilgi için bu linkteki dokümantasyonu inceleyebilirsiniz.