Elasticsearch Cluster Kurulumu

Arif KIZILTEPE
3 min readMar 24, 2022

--

Cluster kurulumuna başlamadan önce Elasticsearch hakkında ön bilgi edinmek için aşağıdaki yazımı okuyabilirsiniz.

Oluşturacağımız elasticsearch ekosistemi için 5 adet node ihtiyacımız olacak. Bunların 3'ü master 2'si data node olarak çalışacak.(İsteğe göre genişletilebilir.)

Öncelikle tüm nodeların hosts dosyasına node bilgilerini ekleyerek başlayalım.

10.30.40.30     VPSYSMNGELK01.test.com     VPSYSMNGELK01
10.30.40.31 VPSYSMNGELK02.test.com VPSYSMNGELK02
10.30.40.32 VPSYSMNGELK03.test.com VPSYSMNGELK03
10.30.40.33 VPSYSMNGELK04.test.com VPSYSMNGELK04
10.30.40.34 VPSYSMNGELK05.test.com VPSYSMNGELK05

Yine tüm sunucularda Elasticsearch kurulumunu yapalım.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpgsudo apt-get install apt-transport-httpsecho "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.listsudo apt-get update && sudo apt-get install elasticsearch default-jdk

Ulimit dosya erişim limitlerini elasticsearch kullanıcısı için unlimited olarak set edelim.

cat > /etc/security/limits.conf << EOF 
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
EOF

Swap alanını disable edelim. Bu işlem sonrasında dilerseniz fstab içerisinden swap diskini kaldırabilirsiniz.

sudo swapoff -a

Elasticsearch memory limit ayarlarını yapalım.

sysctl -w vm.max_map_count=262144sysctl -p /etc/sysctl.conf

Elasticsearch service içerisinde memorylock limitini ayarlayalım.

vim /usr/lib/systemd/system/elasticsearch.service 
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
LimitNPROC=4096
...

Son olarak elasticsearch için yaptığımız ayarları enviroment variable olarak ekleyelim.

cat > /etc/default/elasticsearch << EOF 
ES_STARTUP_SLEEP_TIME=5
MAX_OPEN_FILES=65536
MAX_LOCKED_MEMORY=unlimited
ES_PATH_CONF=/etc/elasticsearch
EOF

Buraya kadar yaptığımı konfigürasyonlar elasticsearch uygulamasının daha stabil çalışması için gereken uygulamalardı. Şimdi elasticsearch cluster ekosistemi için konfigürasyon işlemlerini yapacağız.

/etc/elasticsearch/elasticsearch.yml” içerisine aşağıdaki config bilgileri yazılır.

VPSYSMNGELK01(10.30.40.30)

path.data: /usr/share/Elasticsearch/data
node.roles: [ master ]
network.host: 0.0.0.0
#transport.host: 0.0.0.0
bootstrap.memory_lock: true
cluster.name: MyCluster
node.name: "VPSYSMNGELK01.test.com"
discovery.seed_hosts: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com","VPSYSMNGELK03.i01.paytr.com","VPSYSMNGELK04.i01.paytr.com", "VPSYSMNGELK05.i01.paytr.com"]
cluster.initial_master_nodes: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com", "VPSYSMNGELK03.i01.paytr.com"]
xpack.security.enabled: false

VPSYSMNGELK02(10.30.40.31)

path.data: /usr/share/Elasticsearch/data
node.roles: [ master ]
network.host: 0.0.0.0
#transport.host: 0.0.0.0
bootstrap.memory_lock: true
cluster.name: MyCluster
node.name: "VPSYSMNGELK02.test.com"
discovery.seed_hosts: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com","VPSYSMNGELK03.i01.paytr.com","VPSYSMNGELK04.i01.paytr.com", "VPSYSMNGELK05.i01.paytr.com"]
cluster.initial_master_nodes: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com", "VPSYSMNGELK03.i01.paytr.com"]
xpack.security.enabled: false

VPSYSMNGELK03(10.30.40.32)

path.data: /usr/share/Elasticsearch/data
node.roles: [ master ]
network.host: 0.0.0.0
#transport.host: 0.0.0.0
bootstrap.memory_lock: true
cluster.name: MyCluster
node.name: "VPSYSMNGELK03.test.com"
discovery.seed_hosts: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com","VPSYSMNGELK03.i01.paytr.com","VPSYSMNGELK04.i01.paytr.com", "VPSYSMNGELK05.i01.paytr.com"]
cluster.initial_master_nodes: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com", "VPSYSMNGELK03.i01.paytr.com"]
xpack.security.enabled: false

VPSYSMNGELK04(10.30.40.33)

path.data: /usr/share/Elasticsearch/data
node.roles: [ data ]
network.host: 0.0.0.0
#transport.host: 0.0.0.0
bootstrap.memory_lock: true
cluster.name: MyCluster
node.name: "VPSYSMNGELK04.test.com"
discovery.seed_hosts: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com","VPSYSMNGELK03.i01.paytr.com","VPSYSMNGELK04.i01.paytr.com", "VPSYSMNGELK05.i01.paytr.com"]
cluster.initial_master_nodes: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com", "VPSYSMNGELK03.i01.paytr.com"]
xpack.security.enabled: false

VPSYSMNGELK05(10.30.40.34)

path.data: /usr/share/Elasticsearch/data
node.roles: [ data ]
network.host: 0.0.0.0
#transport.host: 0.0.0.0
bootstrap.memory_lock: true
cluster.name: MyCluster
node.name: "VPSYSMNGELK05.test.com"
discovery.seed_hosts: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com","VPSYSMNGELK03.i01.paytr.com","VPSYSMNGELK04.i01.paytr.com", "VPSYSMNGELK05.i01.paytr.com"]
cluster.initial_master_nodes: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com", "VPSYSMNGELK03.i01.paytr.com"]
xpack.security.enabled: false

Tüm konfigürasyon tamamlandı. 3 adet master 2 adet data node içeren cluster ekosistemimiz oluşturuldu. Şimdi elasticsearch uygulamasını start edelim ve cluster bilgilerimize bakalım.

systemctl enable elasticsearch 
systemctl start elasticsearch

Ekosistemimiz başarılı bir şekilde kuruldu.

Senaryo 1 : Master sunucu sayısını artırmak; (Örnek VPSYSMNGELK06 )

  • Default kurulum ve ayarlar yapılır.
  • Master role sahip bir konfig ayarlanır. “ cluster.initial.master_nodes “ ve “ discovery.seed_hosts “ içerisine yeni master sunucu bilgileri eklenir.
path.data: /usr/share/Elasticsearch/data
node.roles: [ master ]
network.host: 0.0.0.0
#transport.host: 0.0.0.0
bootstrap.memory_lock: true
cluster.name: MyCluster
node.name: "VPSYSMNGELK06.test.com"
discovery.seed_hosts: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com","VPSYSMNGELK03.i01.paytr.com","VPSYSMNGELK04.i01.paytr.com", "VPSYSMNGELK05.i01.paytr.com", "VPSYSMNGELK06.i01.paytr.com"]
cluster.initial_master_nodes: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com", "VPSYSMNGELK03.i01.paytr.com", "VPSYSMNGELK06.i01.paytr.com"]
xpack.security.enabled: false

Senaryo 2: Data sunucu sayısını artırmak; (Örnek VPSYSMNGELK06 )

  • Default kurulum ve ayarlar yapılır.
  • Data role sahip bir konfig ayarlanır. “ discovery.seed_hosts “ içerisine yeni data sunucu bilgileri eklenir.
path.data: /usr/share/Elasticsearch/data
node.roles: [ data ]
network.host: 0.0.0.0
#transport.host: 0.0.0.0
bootstrap.memory_lock: true
cluster.name: MyCluster
node.name: "VPSYSMNGELK06.test.com"
discovery.seed_hosts: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com","VPSYSMNGELK03.i01.paytr.com","VPSYSMNGELK04.i01.paytr.com", "VPSYSMNGELK05.i01.paytr.com", "VPSYSMNGELK06.i01.paytr.com"]
cluster.initial_master_nodes: ["VPSYSMNGELK01.i01.paytr.com", "VPSYSMNGELK02.i01.paytr.com", "VPSYSMNGELK03.i01.paytr.com", "VPSYSMNGELK06.i01.paytr.com"]
xpack.security.enabled: false

--

--

No responses yet