Elasticsearh Cluster Konfigürasyonu

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