#Kısa Notlar : Elasticsearch Node Clone Sonrası Clustering Problemi MasterNotDiscoveredException

By Burak TUNGUT - 15.3.2017 - Kategori DevOps

Selamlar herkese,

Bugün uzunca yazmaktansa karşılaştığım ve yaklaşık olarak 3-4 saatimi alan problemin nasıl çözüldüğünü anlatacağım. Artık yavaş yavaş bu kapsamda, kısa not niteliği taşıyacak şeyleride paylaşmaya başlayacağım.

Tüm search yapımızı elasticsearch'e geçirmeyi planladığımız şu günlerde bir kaç yeni failover stratejisini denemek için 5 adet master node'a ihtiyacım vardı. Bunun için DC'de bir adet host üzerine bir Centos minimal VM kurdum. Onun üzerine ise Elasticsearch ve Kibana 5'i kurdum.

#Kısa Notlar : Elasticsearch Node Clone Sonrası Clustering Problemi MasterNotDiscoveredException

Tekar aynı adımları tekrarlamaktansa kurduğum VM'i clone'ladım fakat hepimizin clustering için gerekli olduğunu bildiğimiz konfigürasyonları yapmama rağmen ikinci sırada ayağa kalkan node'dan ısrarla MasterNotDiscoveredException aldım. Bu exception tek başına çok anlamlı olmayacaktır çünkü genelde network'de oluşan sorunlardan dolayı ya da unicast'te hiç bir master node'un olmamasından dolayı böyle bir hata ile karşılaşabiliyoruz. Kontrol ettiğimde node'lar ayakta ve her biri 9300 portu ile haberleşebilecek durumda idi.

Index log'larda ise şöyle bir ayrıntı yakaladım; with the same id but is a different node instance

Buradaki asıl problem elasticsearch'ün data folder'a her bir index için attığı klasör ve içerdiği segment file'ların aslında node ismini içermesi. E haliyle clone ettiğim ve sonradan adını değiştirdiğim node'un file'larında eski node'un isimleri geçiyor. Kısacası clone sonrası bu dosyaları silmemiz gerekiyor :) Zaten data node ise sharding başlayacak ve alması gereken index'lerin segment'lerini almaya başlayacaktır.

Sorunu çözmek için data folder'ı boşaltmanız yeterli olacaktır. Not olarak şunuda söylemek isterim ki MasterNotDiscoveredException sadece bu nedenle JVM tarafından fırlatılan bir hata değildir. Değindiğim sorun ve çözüm bu hatayı oluşturan case'lerden sadece birtanesi.

Herkese iyi çalışmalar,
Burak.

Devamı

Elasticsearch Serisi : 02 Mimari Özellikleri, Sharding, Failovering ve Scaling

By Burak Tungut - 10.12.2015 - Kategori DevOps

Herkese selam!

Blogumu takip ediyorsanız bir önceki makalem Elasticsearch Serisi : 01 Ubuntu Server'a Elasticsearch Kurulumu idi. Eğer seriye yeni başlayacaksanız ve hiç elasticsearch kurulumu gerçekleştirmediyseniz bir göz atmanızda fayda var derim.

Bugün ise aşağıda göreceğiniz ve elasticsearch'de bilmemiz gereken terimlere değineceğiz. Son iki maddemiz olan shards ve replicas'lara biraz ayrıcalık tanıyacağız. Çünkü makalenin odak noktası olarak onları belirledim. Sonraki bölümlerde detaylarıyla diğer maddelerede değineceğiz.

  1. Node
  2. Cluster
  3. Index
  4. Type
  5. Mapping
  6. Document
  7. Shard ve Replica

Bazı yabancı kaynakları incelerseniz node'lardan önce cluster'ları incelediklerini görebilirsiniz. Bu gerçekten garibime gidiyor. Neden mi? Aşağıda değindim. Haydi başlayalım.

Node

Elasticsearch node ismi

Bir server üzerine kurduğumuz ve sonraki makalelerimizde göreceğimiz document'larımızı index'leyip, üzerlerinde query'ler çalıştıracağımız tek bir elasticsearch instance'ına verdiğimiz isimdir. Buna örnek olarak bir önceki makalemizde ubuntu server üzerine kurduğumuz elasticsearch instance'ını verebiliriz. Kendileri bir node olurlar. 

Kurduğumuz bir node özellikle müdahele etmediysek random bir isim alır. Elasticsearch geliştiricileri random bir string vermektense Marvel karakterlerinden bir tanesini random seçerek atanmasını sağlamışlardır. Hatta gelin bir önceki makalede kurduğumuz elasticsearch node'unun ismine bir bakalım.

Bunun için /_nodes endpoint'ine HTTP GET request atmamız yeterli olacaktır. Sense yardımıyla bir request atalım ve node'umuza Marvel karakterlerinden atanan ismi görelim.

Beklentim bir Hulk idi fakat ilk defa duyduğum Balthakk ismi ile karşılaştım smiley

Eğer sonraki alt konuda inceleyeceğimiz gibi bir cluster'ımız varsa ve çok fazla node üzerinde çalışıyorsak yönetilebilirlik açısından default isimler yerine bizim vereceğimiz isimleri tercih etmek durumunda kalabiliiz. Bir node'un ismini sadece bir HTTP POST ile sonradan değiştirebiliyoruz. REST API'lar üzerine kurulu olmasının bir faydası daha! 

Dikkatinizi birde resimdeki ilk key'lerden cluster_name'e çekmek isterim. Bu da node'un dahil edileceği cluster ismimiz. Eğer aynı network'de birden fazla cluster'ımızda varsa default cluster ismi yerine yine kendimiz bir cluster ismi vermek durumunda kalabiliriz diyelim ve şimdi cluster ile konumuza devam edelim.

Devamı

Elasticsearch Serisi : 01 Ubuntu Server'a Elasticsearch Kurulumu

By Burak TUNGUT - 30.11.2015 - 4 Yorum - Kategori DevOps

Herkese uzun bir aradan sonra tekrar merhaba laugh

Şöyle bir baktımda son makalemden bu yana tam 2 yıl geçmiş. Şu aralar yeni makaleler yazmak, sahenelere geri dönmek aklımdaydı. Seçtiğim günün bir önceki makalemi yazdığım günden tam 2 sene sonra olması cidden büyük bir tesadüf oldu. 2 sene boyunca neler yaptığımı, nerelerde olduğumu ve hayatımda ne gibi değişiklikler olduğunuda bir makale ile kısaca ele alacağım. Belki merak edenler olur laugh

Bu makale aslında şu aralar yoğunlaştığım elasticsearch hakkında başlayacağım makale serisine bir giriş yapmış olacağız. İşi en baştan almak gerekir diye düşündüm. Bu nedenle bir Ubuntu server üzerine SSH server ve elasticsearch engine'i kuracağız.

Makalemde elasticsearch'in ne olduğu ile ilgili detaylı bilgiler vermeyeceğim. Hiç duymamış olan arkadaşlar için küçük bir araştırma yapmalarını öneririm. Aynı zamanda makale de ubuntu server'ın bir VM üzerine nasıl kurulacağınıda anlatmayacağım. Bunlar için step-by-step bir çok resimli makale bulabilirsiniz. Ama küçük öneriler vermek gerekirse aşağıdakileri kullandım;

  1. Oracle VM VirtualBox 5
  2. Ubuntu Server 14.04.3
  3. Putty (SSH Client için)
  4. Elasticsearch 1.7.4

Şu anda her ne kadar elasticsearch'in major 2 version ve bir iki tane de minör version'ı release olmuş olsada çok fazla breaking changes bulunduğu için 1.7.4'yi kurdum. Siz isterseniz herhangi major 2 version'unda kurabilirsiniz.

Ubuntu Server Üzerine SSH Server ve JDK Kurulumu

Benim gibi clean install'ları tercih edenlerden misiniz? Öyleyse kurduğunuz ubuntu server üzerinde SSH server bulunmamakta. İşe onu kurmak ile başlayalım. Console'dan sudo-i komutu ile super user'a geçiş yapalım. İsimlendirmeler sizcede çok güzel değil mi ? Kendimi şu anda elasticsearch kurulumu yapmak üzere olan neredeyse hiç linux kullanmamış süper bir kullanıcı olarak hissediyorum laugh

Super user'a geçiş

Şimdi SSH server kurulumunu yapalım. Bunun için console'dan apt-get install openssh-server komutunu çalıştıralım. Bellki bir kaç işlemden sonra diskte kullanılacak alan için bizden izin istenecektir. Buna Y ile cevap verelim.

SSH server kurulumu

Devamı
1
Facebook
Son Yorumlar