Bu yazımızda Centos 7 işletim sistemi üzerinde nasıl Elasticsarch kurulumu yapabileceğinizi bulabilirsiniz. Elasticsearch disk ve hafıza gibi sistem kaynaklarını yoğun kullanan bir uygulamadır. Minimumda aşağıda belirtilen sistem gereksinimlerine sahiptir;
- RAM: 4GB
- CPU: 2
- Java 8
Minimumda bu gereksinimler belirtilmesine karşın üretim ortamı kullanımlarında bu değerlerin çok üzerinde sistem kaynakları arttırılması gerekecektir. Nihai ihtiyacın belirlenmesi kullanım ile yakın ilişkilidir. Takip eden bölümde çevrimiçi (online) ve çevrimdışı (offline) kuruluma yönelik adımları bulabilirsiniz. Bu adımların ardından her iki yaklaşım için de ortak olan yapılandırma adımlarını bulabilirsiniz.
Çevrimiçi Kurulum
Ön gereksinim olarak aşağıdaki komutla java 1.8 kurulumu yapılır;
sudo yum install -y java-1.8.0-openjdk-devel
Tüm Elasticsearch RPM paketleri Elasticsearch imzalama anahtarı ile imzalanmaktadır. Bu sayede kurulum paketlerinin bütünlüğü kontrol edilebilir. Bu sebeple ilk olarak söz konusu imzalama anahtarı aşağıdaki komutla kurulur;
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Gerekli kurulum paketlerinin bulunduğu RPM deposu aşağıdaki şekilde depolar arasına eklenir;
cat > /etc/yum.repos.d/elasticsearch.repo <<EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=0 autorefresh=1 type=rpm-md EOF
Dikkat edilecek olunursa tanımlanan depo varsayılanda aktif durumda değil. Aşağıdaki komut yardımıyla bu depo aktif edilerek elasticsearch kurulumu yapılır;
sudo yum install -y --enablerepo=elasticsearch-7.x elasticsearch
Çevrimdışı Kurulum
Java indirilerek sunucuya kopyalanır : https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
İndirilen dosya kurulur. Örneğin;
sudo rpm --install jdk-8u251-linux-x64.rpm
Herhangi bir bilgisayardan güncel Java ve Elasticsearch rpm, check sum dosyaları yerele indirilir. Örneğin;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-x86_64.rpm wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-x86_64.rpm.sha512
Güncel sürüm https://www.elastic.co/downloads/elasticsearch adresinden bulunabilir.
Dosyalar kurulum yapılacak sunucuya kopyalandıktan sonra aşağıdaki şekilde checksum’lar kullanılarak bütünlük kontrolü yapılır;
shasum -a 512 -c elasticsearch-7.8.0-x86_64.rpm.sha512
Kontrolün başarılı olması ardından kurulum yapılır;
sudo rpm --install elasticsearch-7.8.0-x86_64.rpm
Kurulum Sonrası İşlemler
Elasticsearch yapılandırma dosyası düzenlenir;
Hafıza Kilitleme
İşletim sistemleri hafıza yetmediği zaman diskin bir kısmını hafıza gibi kullanır. Bu durumda da disk performası ram ile kıyaslandığında yavaş olduğunda uygulamalarda yavaşlık gözlemelenecektir. Aşağıdaki komut ile Elasticsearch’in sadece ram’da koşmasını sağlayabiliriz.
sed -i "s/#bootstrap.memory_lock: true/bootstrap.memory_lock: true/g" /etc/elasticsearch/elasticsearch.yml
Hafızanın yetmediği durumda hata alınacak, küme üyeleri bu durumu farkederek yüksek erişilebilirliği yavaşlık olmadan sunabilecektir.
sed -i "s/#MAX_LOCKED_MEMORY=unlimited/MAX_LOCKED_MEMORY=unlimited/g" /etc/sysconfig/elasticsearch
mkdir /etc/systemd/system/elasticsearch.service.d cat > /etc/systemd/system/elasticsearch.service.d/override.conf <<EOF [Service] LimitMEMLOCK=infinity EOF
Dışarıdan Erişim ayarları
Dışarıdan erişim istenirse aşağıdaki komut dış ip adresi ile çalıştırılır;
sed -i "s/#network.host: 192.168.0.1/network.host: [IP_ADRESİ]/g" /etc/elasticsearch/elasticsearch.yml
Tüm iplerden erişim istenirse aşağıdaki komut kullanılabilir;
sed -i "s/#network.host: 192.168.0.1/network.host: 0.0.0.0/g" /etc/elasticsearch/elasticsearch.yml
Sadece yerelden erişim istenirse ip adresi yerine localhost ya da 127.0.0.1 değeri verilir;
sed -i "s/#network.host: 192.168.0.1/network.host: localhost/g" /etc/elasticsearch/elasticsearch.yml
Küme Adı
Aşağıdaki komutla küme adı belirlenir;
sed -i "s/#cluster.name: my-application/cluster.name: [KÜME_ADI]/g" /etc/elasticsearch/elasticsearch.yml
Örneğin;
sed -i "s/#cluster.name: my-application/cluster.name: enterprisecoding/g" /etc/elasticsearch/elasticsearch.yml
Düğüm Adı
Kurulum için tanımlayıcı bir Elasticsearch düğüm adı verilir;
sed -i "s/#node.name: node-1/node.name: [DÜĞÜM_ADI]/g" /etc/elasticsearch/elasticsearch.yml
Örneğin;
sed -i "s/#node.name: node-1/node.name: node-1/g" /etc/elasticsearch/elasticsearch.yml
Küme Üyeleri
Eğer tek bir Elasticsearch sunucusu kurulması planlanıyorsa aşağıdaki komutlar ile gerekli yapılandırmalar yapılır;
sed -i 's/#discovery.seed_hosts: \["host1", "host2"\]/discovery.seed_hosts: \[\]/g' /etc/elasticsearch/elasticsearch.yml sed -i 's/#cluster.initial_master_nodes: \["node-1", "node-2"\]/cluster.initial_master_nodes: \[\]/g' /etc/elasticsearch/elasticsearch.yml
Eğer birden fazla sunucu ile küme oluşturulacaksa discovery.seed_hosts ve cluster.initial_master_nodes alanlarında belirtilmelidir. Örneğin;
sed -i 's/#discovery.seed_hosts: \["host1", "host2"\]/discovery.seed_hosts: \["SUNUCU1", "SUNUCU_2"\]/g' /etc/elasticsearch/elasticsearch.yml sed -i 's/#cluster.initial_master_nodes: \["node-1", "node-2"\]/cluster.initial_master_nodes: \["SUNUCU1", “SUNUCU_2"\]/g' /etc/elasticsearch/elasticsearch.yml
Servisi Başlatma
Çevrimiçi ya da çevrimdışı kurulum ve yapılandırmalar ardından aşağıdaki komutlarla elasticsearch servisi aktif hale getirilerek başlatılır;
sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service
Kontrol
Kurulumların tamamlanması ardından aşağıdaki komutlarla servis durumu kontrol edilir;
sudo systemctl status elasticsearch.service
Aşağıdaki komutla kurulum kontrol edilebilir;
curl -X GET "localhost:9200"
Problem Tespiti
Başlama sırasında herhangi bir hata alınırsa /var/log/elasticsearch/elasticsearch.log path’indeki log dosyaları incelenebilir. Servis loglarına aşağıdaki komutla bakılabilir;
journalctl -xe
ya da
systemctl status elasticsearch.service
Bu kurulum ve yapılandırmalar ardından Elasticsearch kuruluma hazır hale gelecektir. Geliştirme ortamı için burada paylaştığımız yapılandırmalar fazlasıyla yeterli olmakla birlikte üretim ortamında dikkat edilmesi gereken pek çok ayrıntı bulunmaktadır. Bu ayrıntılar ve danışmanlık talepleriniz için bize iletişim sayfamızda yer alan bilgilerle ulaşabilirsin.