Ana içeriğe geç

Ubuntu Elasticsearch Kurulumu

Kuruluma Başlamadan Önce Yapılması Gereken Kontroller

bilgi

Kurulum için Önemli

Kurulumun sağlıklı olması için sunucularının aşağıdaki adreslere erişmesi gerekmektedir.

Elasticsearch kurulumunun yapılabilmesi için:

bilgi

Önemli

Ubuntu paketleri güncellerken Türkiye lokasyonundaki sunucudan çekmeye çalışır. Ancak zaman zaman tr.archive.ubuntu.com adresinde sorun olabilmektedir. Bu durumda aşağıdaki değişikliği yapmak gerekir.

sudo vi /etc/apt/sources.list

#İçinde tr. olan adreslerin hepsini "Replace All" ile değiştirin.

#Örnek:

Eski: http://tr.archive.ubuntu.com/ubuntu

Yeni: http://archive.ubuntu.com/ubuntu

İşletim Sistemi Konfigürasyonları

ipucu

Aşağıdaki adımlar tüm sunucularda yapılmalıdır.

# 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)

Elasticsearch Kurulumu

İşletim Sistemi Konfigürasyonları ve Elasticsearch Uygulamasının Kurulması

ipucu

Aşağıdaki adımlar tüm Elasticsearch sunucularında yapılmalıdır.

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
sudo sysctl -p
sudo sysctl vm.max_map_count

Elasticsearch Kurulumu

ipucu

Aşağıdaki adımlar tüm Elasticsearch sunucularında yapılmalıdır.

sudo mkdir /opt/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
sudo chown -Rf 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 /mnt/elastic-data/
sudo mkdir /mnt/elastic-snapdata/
sudo chown -Rf elasticsearch:elasticsearch /mnt/elastic-*
sudo chmod -Rf 775 /mnt/elastic-*

Elasticsearch Parametrelerinin Ortama Göre Ayarlanması

ipucu

Aşağıdaki adımlar tüm Elasticsearch sunucularında yapılmalıdır.

Aşağıdaki parametrelerin kendi ortamınıza uygun olarak ayarlanarak eklenmesi gerekmektedir.

  • cluster.initial_master_nodes
  • network.host
  • node.name
sudo vi /opt/elasticsearch/elasticsearch-7.9.2/config/elasticsearch.yml
uyarı

Önemli

Burada path.data ve path.repo adresinin bir önceki maddeye uygun olarak sistemdeki log dosyanızın tutulacağı diskin adresi olarak verilmesi gerekmektedir.

cluster.name: ApinizerEsCluster
node.name: "<ELASTICSEARCH_IP_ADDRESS>"
node.master: true
node.data: true
network.host: <ELASTICSEARCH_IP_ADDRESS>
http.port: 9200
cluster.initial_master_nodes: ["<ELASTICSEARCH_IP_ADDRESS>"]
discovery.seed_hosts: []
path.data: /mnt/elastic-data/
path.repo: ["/mnt/elastic-snapdata"]
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

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

sudo vi /opt/elasticsearch/elasticsearch-7.9.2/config/jvm.options
uyarı

Önemli

Burada 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

-Xms8g
-Xmx8g

Elasticsearch'i Linux Service Olarak Ayarlama

ipucu

Aşağıdaki adımlar tüm Elasticsearch sunucularında yapılmalıdır.

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
sudo chmod -Rf 775 /opt/elasticsearch/elasticsearch-7.9.2/*
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
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
sudo systemctl enable elasticsearch

Uyumlu Kibana versiyonu için aşağıdaki linki kullanabilirsiniz.

https://www.elastic.co/downloads/past-releases/kibana-oss-7-9-2