Kuruluma başlamadan önce ;

Bu kılavuzu takip etmek için aşağıdakilere ihtiyacınız vardır:

  • Deb / rpm uyumlu bir Linux işletim sistemi çalıştıran bir veya daha fazla makine; örneğin: Ubuntu veya CentOS.
  • Tavsiye edilen en az sistem gereksinimi 8GB RAM, 4 Core CPU ve 200 GB Harddisk alanıdır.


Elasticsearch kurulumu Centos ve Ubuntu ortamlarda ayndır. Aşağıdaki adımlar her iki işletim sistemi içinde geçerlidir.

Kurulum adımları

1. İşletim sistemi konfigurasyonları

İşletim sisteminin güvenlik duvarı kapatılır

## Centos 
sudo systemctl stop firewalld

sudo systemctl disable firewalld

## Ubuntu
sudo systemctl stop ufw

sudo systemctl disable ufw
POWERSHELL

İşletim sisteminin Selinux kapatılır

Tüm sunucu'lardaki iletişim sorunlarını önlemek için SELinux'u devre dışı bırakalım. 

sudo setenforce 0

sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
POWERSHELL

Swap Devre Dışı Bırakılır

Tüm node'lardaki iletişim sorunlarını önlemek için swap'i devre dışı bırakalım.  Bunun için aşağıdaki adımlar yapılır. ve /etc/fstab dosyası içindeki swap satırı silinir.

sudo swapoff -a

sudo vi /etc/fstab              
POWERSHELL

2. Elasticsearch için sistem yapılandırması

sudo su 
 
sudo adduser elasticsearch
 
sudo passwd elasticsearch

### Centos
sudo usermod -aG wheel elasticsearch

### Ubuntu
sudo usermod -aG sudo elasticsearch
 
sudo ulimit -n 65535
 
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
 
sudo mkdir /opt/elasticsearch
 
sudo chown -Rf elasticsearch:elasticsearch /opt/elasticsearch
 
sudo chmod -Rf 775 /opt/elasticsearch
 
sudo mkdir /mnt/elastic-data/
 
sudo chown -Rf elasticsearch:elasticsearch /mnt/elastic-data/
 
sudo chmod -Rf 775 /mnt/elastic-data/
BASH

3. Elasticsearch Kurulumu

su elasticsearch
 
cd /opt/elasticsearch
 
sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz
 
sudo tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz
BASH

4. Elasticsearch parametrelerini kendi ortamına uygun ayarlayın

İşletim restart olduğunda elasticsearch'i otomatik olarak başlaması için aşağıdaki adımları uygulayınız.

Aşağıdaki parametreleri kendi ortamınıza uygun olarak ayarlamanız gerekmektedir.

  • cluster.initial_master_nodes
  • network.host
  • node.name


sudo vi /opt/elasticsearch/elasticsearch-7.9.2/config/elasticsearch.yml
cluster.name: ApinizerEsCluster
#give your node a name (the same as your hostname)
node.name: "YOUR-IP"
node.master: true
node.data: true
#enter the private IP and port of your node (the same ip as your machine)
network.host: YOUR-HOST-IP
http.port: 9200
#detail the private IPs of your nodes:
#to avoid split brain ([Master Eligible Node) / 2 + 1])
 
cluster.initial_master_nodes: ["YOUR-IP"]
 
discovery.seed_hosts: []
path.data: /mnt/elastic-data/
 
bootstrap.memory_lock: true
 
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
BASH

5. Elasticsearch'i JVM parametre ayaları

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

JVM değerlerini ayarlamak için

ELASTIC_HOME/config/jvm.options

6. Elasticsearch'i Linux Service olarak ayarlamak

sudo vi /opt/elasticsearch/elasticsearch-7.9.2/bin/elasticsearch-service.sh

#!/bin/sh
SERVICE_NAME=elasticsearch
PATH_TO_APP="/opt/elasticsearch/elasticsearch-7.9.2/bin/$SERVICE_NAME"
PID_PATH_NAME="/opt/elasticsearch/elasticsearch-7.9.2/bin/$SERVICE_NAME.pid"
SCRIPTNAME=elasticsearch-service.sh
ES_USER=$SERVICE_NAME
ES_GROUP=$SERVICE_NAME
 
case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."
        if [ ! -f $PID_PATH_NAME ]; then
        mkdir $(dirname $PID_PATH_NAME) > /dev/null 2>&1 || true
            chown $ES_USER $(dirname $PID_PATH_NAME)
            $SUDO $PATH_TO_APP -d -p $PID_PATH_NAME
        echo "Return code: $?"
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is already running ..."
        fi
    ;;
    stop)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ..."
            kill -15 $PID;
            echo "$SERVICE_NAME stopped ..."
            rm $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ...";
            kill -15 $PID;
        sleep 1;
            echo "$SERVICE_NAME stopped ...";
            rm -rf $PID_PATH_NAME
            echo "$SERVICE_NAME starting ..."
            mkdir $(dirname $PID_PATH_NAME) > /dev/null 2>&1 || true
            chown $ES_USER $(dirname $PID_PATH_NAME)
            $SUDO $PATH_TO_APP -d -p $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
         else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
    exit 3
    ;;
esac

BASH
sudo chmod -Rf 775 /opt/elasticsearch/elasticsearch-7.9.2/bin/*

sudo vi /etc/systemd/system/elasticsearch.service
[Unit]
Description=ElasticSearch Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
ExecStart=/opt/elasticsearch/elasticsearch-7.9.2/bin/elasticsearch-service.sh start
ExecStop=/opt/elasticsearch/elasticsearch-7.9.2/bin/elasticsearch-service.sh stop
ExecReload=/opt/elasticsearch/elasticsearch-7.9.2/bin/elasticsearch-service.sh restart
LimitNOFILE=65536
LimitMEMLOCK=infinity
User=elasticsearch

POWERSHELL
sudo systemctl daemon-reload

sudo systemctl start elasticsearch

sudo systemctl status elasticsearch

sudo systemctl enable elasticsearch
POWERSHELL