Her bir elasticsearch node unun minimum 4GB RAM 2 CPU Core olması gerekmektedir. Aşağıdaki senaryoda elimizde 3 nodu lu bir elasticsearch cluster konfigürasyonu mevcuttur. Master node seçilmesi elastic için zorunludur. Çünkü master node cluster içerisinde node ları ve indexleri koordine eder.
Aşağıdaki konfigürasyonlarda 3 node bulunmaktadır ve bu 3 node master rolüne sahiptir. Bu konfigürasyonlar benim local ortamdaki konfigürasyon larımdır.
3 node master ve data role
Aşağıdaki işlemler tüm node lar üzerinde yapılır:
Host dosyalarında olması gereken sunucu bilgileri
nano /etc/hosts
es1 192.168.56.10
es2 192.168.56.20
es3 192.168.56.30
Sunucuları update işlemi ve upgrade işlemi gerçekleştiriyoruz.
apt update && apt upgrade -y
JDK(Java Development Kit) ve JRE(Java Runtime Enviroment) kuruyoruz.
apt install default-jre
apt install default-jdk
java --version
javac --version
Repo ekleyeceğimiz için bu repoyu eklerken güvenli ekleyebilmemiz için aşağıdaki paketleri kuruyoruz.
apt install software-properties-common apt-transport-https
Elasticsearch paketlerini indirmeye başlıyoruz.
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Repoları ekledikten sonra artık bu paketleri güncellememiz gerekir.
apt update
Elastichsearch kurulumuna başlıyoruz.
apt install elasticsearch
Node 1 master olarak atadığımız için konfigürasyonu yapıldı.
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: cemk_es // cluster ismini belirtiyoruz.
node.name: es1 // cluster da bulunacak olan node ismini belirtiyoruz.
path.data: /var/lib/elasticsearch // verilerin barınacağı yeri belirtiyoruz.
path.logs: /var/log/elasticsearch // elasticsearch loglarının dizini.
network.host: 192.168.56.10 // Node1 ipsi belirtiyoruz.
http.port: 9200 // elasticsearch ün çalışacağı port bilgisi
discovery.seed_hosts: ["192.168.56.20", "192.168.56.30", "192.168.56.10"] //cluster mimarisinin diğer nodelarını belirtiyoruz.
cluster.initial_master_nodes: ["192.168.56.10"] // Cluster mimarisinin master node belirtiyoruz.
node.roles: [ master, data ] // master node una data yı atıyoruz.
Node 2 Slave olarak atadığımız için konfigürasyonu yapıldı.
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: cemk_es // cluster ismini belirtiyoruz.
node.name: es2 // Node2 olduğu için es2 olarak yapılmıştır.
path.data: /var/lib/elasticsearch // verilerin barınacağı yeri belirtiyoruz.
path.logs: /var/log/elasticsearch // elasticsearch loglarının dizini.
network.host: 192.168.56.20 // Node2 kurduğumuz için kendi ip bilgisi veriyoruz.
http.port: 9200 // elasticsearch ün çalışacağı port bilgisi
discovery.seed_hosts: ["192.168.56.20", "192.168.56.30", "192.168.56.10"] //cluster mimarisinin diğer nodelarını belirtiyoruz.
cluster.initial_master_nodes: ["192.168.56.10"] // Cluster mimarisinin master node belirtiyoruz.
node.roles: [ master, data ] // master node una data yı atıyoruz.
Node 3 Slave olarak atadığımız için konfigürasyonu yapıldı.
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: cemk_es // cluster ismini belirtiyoruz.
node.name: es3 // Node3 olduğu için es3 olarak yapılmıştır.
path.data: /var/lib/elasticsearch // verilerin barınacağı yeri belirtiyoruz.
path.logs: /var/log/elasticsearch // elasticsearch loglarının dizini.
network.host: 192.168.56.30 // Node3 kurduğumuz için kendi ip bilgisi veriyoruz.
http.port: 9200 // elasticsearch ün çalışacağı port bilgisi
discovery.seed_hosts: ["192.168.56.20", "192.168.56.30", "192.168.56.10"] //cluster mimarisinin diğer nodelarını belirtiyoruz.
cluster.initial_master_nodes: ["192.168.56.10"] // Cluster mimarisinin master node belirtiyoruz.
node.roles: [ master, data ] // master node una data yı atıyoruz.
Her 3 node ta systemd yi restart ediyoruz.
systemctl daemon-reload
Her 3 node ta servisleri aktif hale getiriyoruz.
systemctl enable elasticsearch.service
Cluster ı ayağa kaldırdıktan sonra kontrollere başlıyoruz. Her node ta curl atarak bunu görüntüleyebiliriz.
curl -XGET http://192.168.56.10:9200/_cluster/health?pretty
Node ların başarılı bir şekilde çalıştığını listelemek için curl atarak görebiliriz.
curl -XGET http://192.168.56.10:9200/_cat/nodes?v
Cluster başarılı bir şekilde ayağa kalktıktan sonra servis stop edilir. Ve elasticsearch .yml confta tüm node makinelerinde aşağıdaki parametre kaldırılıp servis start edilir.
cluster.initial_master_nodes: ["192.168.56.10"]
systemctl start elasticsearch.service