Kuruluma Başlamadan Önce Yapılması Gereken Kontroller
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
sudo apt install -y curl wget net-tools gnupg2 software-properties-common apt-transport-https ca-certificates
# 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)
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
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-*
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
ÖnemliBurada path.data ve path.repo adresinin bir önceki maddeye uygun olarak sistemdeki log dosyanızın tutulacağı diskin adresi olarak verilmesi gerekmektedir.
Elasticsearch Master–Data mimarisinde High Availability kurulumu yapılacaksa, aşağıdaki alanlar yaml dosyasında uygun şekilde doldurulmalıdır: cluster.initial_master_nodes: ["<MASTER_NODE_1_IP>", "<MASTER_NODE_2_IP>", "<MASTER_NODE_3_IP>"]
discovery.seed_hosts: ["<MASTER_NODE_1_IP>", "<MASTER_NODE_2_IP>", "<MASTER_NODE_3_IP>"]
cluster.name: ApinizerEsCluster
node.name: "<NODE_IP>"
network.host: "<NODE_IP>"
http.port: 9200
node.roles: ["master","data"]
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
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
ÖnemliBurada 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
2.4) Elasticsearch’ü Linux Service Olarak Ayarlama
sudo chmod -Rf 775 /opt/elasticsearch/elasticsearch-8.17.10/*
sudo vi /etc/systemd/system/elasticsearch.service
[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
Elasticsearch Master–Data Mimarisinde High Availability (H.A.) Kurulum BilgilendirmesiElasticsearch ortamında Master ve Data node’lar ayrılarak High Availability (H.A.) mimarisi kurulurken aşağıdaki adımlar izlenmelidir:
-
Sertifika Oluşturma
TLS/SSL sertifikaları yalnızca ilk (primary) Elasticsearch sunucusunda oluşturulur. Oluşturulan sertifikalar güvenli bir şekilde diğer tüm Elasticsearch sunucularına kopyalanır.
-
Elasticsearch Servisinin Başlatılması
Tüm node’larda Elasticsearch servisi ayağa kaldırılır ve temel cluster iletişiminin sağlandığı doğrulanır.
-
Kullanıcı Oluşturma
Security aktif edildikten sonra gerekli sistem ve uygulama kullanıcıları oluşturulur. (örneğin: elastic, kibana, uygulama kullanıcıları)
-
YAML Dosyasında TLS Konfigürasyonu
elasticsearch.yml dosyasında TLS ayarları aktif hale getirilir ve sertifika yolları tanımlanır.
-
Servislerin Yeniden Başlatılması
Yapılandırma değişikliklerinin geçerli olması için tüm Elasticsearch servisleri restart edilir.
Node Rol TanımlamalarıMaster ve Data node’lar elasticsearch.yml dosyasında aşağıdaki şekilde ayrıştırılır:Master Node için:Data Node için:Bu yapı sayesinde:
- Cluster yönetimi master node’lar tarafından yapılır.
- Veri işlemleri ve sorgular data node’lar üzerinde çalışır.
- Sistem yüksek erişilebilir (High Availability) ve ölçeklenebilir hale gelir.
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).
# p12 dosyasına parola eklemek, servislerin otomatik yeniden başlaması için ek yapılandırma (Keystore vb.) gerektirdiğinden yönetimi zorlaştırır ve bu nedenle genelde tercih edilmez.
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
#certs dizini altında aşağıdaki 3 sertifika görüntülenmelidir:
elastic-certificates.crt # Bu sunucunun kimliğini doğrulayan güvenilir Kök Sertifikasını (CA) içerir; böylece diğer Elastic Stack bileşenleri (Apinizer, Kibana, Logstash) sunucuya bu sertifika ile güvenebilir.
elastic-certificates.p12 # Sunucu tarafında, özel anahtar ve sunucu sertifikasını barındırarak gelen TLS/SSL bağlantılarını şifrelemek ve sunucunun kimliğini kanıtlamak için kullanılır.
elastic-stack-ca.p12 # Tüm bu güven zincirini ve sertifika yönetimini sağlayan merkezi Kök Sertifika Otoritesi (CA) bilgilerini içerir.
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
sudo systemctl enable elasticsearch
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
Şifre oluşturulmadan bir sonraki adıma geçmeyiniz.
sudo vi /opt/elasticsearch/elasticsearch-8.17.10/config/elasticsearch.yml
“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
sudo systemctl restart elasticsearch
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.
Apinizer - Elasticsearch Connector ekleme ekranı
Detaylı bilgi için bu linkteki dokümantasyonu inceleyebilirsiniz.