Skip to main content
İlk olarak yedeklemenin nasıl yapılacağı konusu netleştirilmelidir. Sık kullanılan yöntemler şunlardır:
  1. Elasticsearch’ün konfigürasyon dosyasında yazan path.data adresi sistem yöneticileri tarafından incremental şekilde veya belirli aralıklarla olduğu gibi yedeklenebilir.
    ARTI Geçmiş verilere erişim her zaman aynı kolaylıkta devam edecektir.
    EKSI Hem aktif hem de yedek disk sürekli büyümeye devam edecektir.
    EKSI Asıl diskte sorun olduğunda yedek disk üzerindeki verilere erişebilecek şekilde tekrar kurulum yapılması gerekecektir.
  2. Elasticsearch’ün bulunduğu sunucu Raid-0 yöntemiyle ya da belirli aralıklarla olduğu gibi yedeklenebilir.
    ARTI Geçmiş verilere erişim her zaman aynı kolaylıkta devam edecektir.
    ARTI Asıl diskte sorun olduğunda yedek disk network yönlendirmesiyle anında kullanıma başlanılabilecektir.
    EKSI Hem aktif hem de yedek disk sürekli büyümeye devam edecektir.
  3. Elasticsearch verileri Elasticsearch Snapshot api’si ile dump alınabilir. Snapshot politikası ayarlanarak belirli bir sistem adresine bu yedek dosyalarının çıkarılması sağlanabilir, sonrasında bu yedek dosyaları farklı bir sunucuya ayrıca yedeklenmelidir.
    ARTI Geçmiş verilere erişim her zaman aynı kolaylıkta devam edecektir.
    EKSI Hem aktif hem de yedek disk sürekli büyümeye devam edecektir.
ÖNERİ Yukarıdaki yöntemlerden hangisi kullanılırsa kullanılsın, düzenli yedekleme ayarlandıktan sonra yedeği alınmış loglar Elasticsearch ILM’siyle otomatik silmeye ayarlanabilir ya da istenilen zamanlarda istenilen kadarı Elasticsearch API’si ile manuel olarak silinebilir.
ARTI Aktif sunucuda çok daha düşük bir disk kaynağıyla çalışılmaya devam edilecektir.
EKSI Geçmiş verilere erişim için yedek diskine bir uygulama kurulması veya yedeklerin belirli bir sunucuya aktarılarak çalışılması gerekecektir.
EKSI Sadece yedek disk sürekli büyümeye devam edecektir.

Elasticsearch Manuel Yedek Alma ve Geri Yükleme

Bu bölüm, Elasticsearch üzerindeki logların cron tanımı üzerinden otomatik olarak yedeklenmesi için oluşturulan Snapshot Lifecycle Management (SLM) politikasını oluşturmayı ve anlık olarak yedek alıp geri yükleme yöntemlerini açıklar.

Değişkenler

İstekler yer alan dinamik değerler ve açıklamaları aşağıdaki tabloda görülmektedir.

Yedeklerin Dosya Konumunu Belirtme

Kümedeki tüm node’lara ait elasticsearch.yml konfigürasyon dosyasına, path.repo alanı eklenerek, yedekleme dosyalarının saklanacağı dosya konumu yazılır.
Eğer bu bilgi sonradan konfigürasyon dosyasına eklendiyse, node yeniden başlatılmalıdır.

Snapshot Repository Bilgisini Tanımlama

Repository, snapshot işleminde yedeklenecek dosyaların nerede depolanacağı bilgisini tutar.

Repository’i Doğrulama İsteği (Verify Location)

Elasticsearch’ün dosyaya erişimi olup olmadığı kontrol edilmelidir.
Doğrulama başarılı olursa, repository’nin kullanıldığı node’ların listesi döner. Doğrulama başarısız olursa, istekten hata döner.
Eğer otomatik olarak yedeklenme yapılacaksa SLM Politika komutları çalıştırılmalıdır. Eğer istenilen zamanda yedek alınacaksa Anlık Yedek komutları çalıştırışmalıdır.

SLM Politikası Oluşturma

Snapshot Politikasını Oluşturma İsteği

Manuel Olarak Politikayı Çalıştırma İsteği

Snapshot Kayıtlarını Görüntüleme

Genellikle kurumlarda yapılan yedekleme (snapshotlar) indekslemenin gerçekleştiği aynı ortam içerisinde tutulur. Sonrasında bu snapshot’lar farklı bir ortamda saklanması istenebilir. Elasticsearch’de sadece dosya aktarımı ile veriler başka bir Elasticsearch kümesinde otomatik olarak atılmaz. Dosya aktarımının yanı sıra snapshot yapısının da aynı şekilde taşınması gerekmektedir. Sadece dosyaları taşıma, hem snapshot’ı içerisindeki yapıyı bozmaya hem de yedeğin geri yüklenmesine (restore) engel olabilir.Başka bir cluster’a snapshot taşıma sırasında ilk olarak repository, sonrasında snapshot oluşturulmalıdır.
Snapshot alma işlemi bittiğinde, yedeklemesi yapılmış indeksler silinmemektedir. Eğer indeksin ILM politikasında delete fazı aktifleştirilmiş ise silinir.

Anlık Yedek Alma

Snapshot Oluşturma İsteği

Snapshot’daki Indekslerin Tamamını/Bir Kısmını Geri Yükleme İsteği

Komutun indices kısmında birden fazla değer girilebileceği gibi wildcard olarak * değeri de kullanılabilir.

Elasticsearch Snapshot Taşıma ve Restore Etme Scripti

Bu script Snapshot politikası ayarlandıktan sonra belirli bir adreste oluşan snapshot dosyalarını, yedek sunucusuna taşıyıp orada restore edip okunmaya hazır bir halde tutma işini yapmaktadır. Script’in çalıştırılabilmesi için belirli ihtiyaçlar vardır:
  • Log ve yedek sunucunun shell script destekleyen bir Linux sunucuda çalışıyor olmaları.
  • Yedek sunucusunda mevcut Elasticsearch sunucusuyla aynı ya da desteklenen sürümde bir Elasticsearch çalışıyor olması.
  • Log sunucusu ve yedek sunucusu arasında ssh, scp gibi protokollerle iletişim kurulabiliyor olması.
  • Log sunucusunun crontab destekliyor olması (Birçok popüler Linux dağıtımında varsayılan olarak mevcuttur).
  • Basit linux shell bilgisi
Script’te uygulanacak adımlar şu şekildedir:
  1. Repository kontrol edilecek
  2. Snapshot dosyasının adı ve adresi alınacak
  3. Snapshot dosyası restore sunucusuna gönderilecek
  4. Snapshot restore işlemi başlatılacak
  5. Restore işleminin durumu kontrol edilecek

Nasıl Çalışır:

  1. “ESMoveSnapshotAndRestore.sh” gibi bir isimle Log sunucusunuzda uygun bir adrese dosya olarak kaydedilir. Script linux shell üzerinden vi, nano gibi editörler ile kopyalanabilir ya da windows bir sunucudan dosyaya kaydedilip winscp, mobaxterm gibi bir uygulama ile sftp ile aktarılabilir.
  2. Dosyaya çalışabilmesi için chmod +x ESMoveSnapshotAndRestore.sh komutu ile yetki verilir.
  3. Scp ile bağlantıda şifre sormaması ve otomatik bağlanabilmesi için scp’nin ssh key authentication özelliğinden faydalanır.
    • Log sunucusunda ssh-keygen ile bir key oluşturulur. Bu key ssh-copy-id komutu ile yedek sunucusuna atılır.
  4. Log sunucusuna eğer yoksa jq paketi kurulur. Ubuntu için apt install jq, Redhat için yum install jq komutu kullanılabilinir.
  5. Her iki sunucudaki Elasticsearch için config dosyasındaki data.path ve repo.path değerleri kontrol edilir.
  6. Script’teki değişkenler ortamlarınıza uygun olarak ayarlanır.
    • ELASTICSEARCH_SERVER
    • ELASTICSEARCH_BACKUP_SERVER
    • LOG_KEY
    • BACKUP_PATH_REPO

Kullanım:

Scripti çalıştırmadan önce Elasticsearch değişkenlerine kendi bilgilerinizi giriniz.
Bu işlem manuel yapılabileceği gibi belirli aralıklarda tekrarlanarak da yapılabilir. Tekrarlanarak yapılması için linux cronjob ayarlarına bu kaydın girilmesi gerekir.

CronJob Kullanım:

  1. Terminalde aşağıdaki komutu çalıştırarak cron düzenleyicisi açılır;
  1. Açılan editöre, script’ine sıklıkla çalıştırmak istediğinize göre bir satır ekleyin.
Örneğin, her ayın her 3. günü saat 23:00’da çalıştırmak için aşağıdaki şekilde yazabilirsiniz:
Eklediğiniz satırı kaydetmek için Esc tuşuna basıp :wq yazıp Enter tuşuna basın.
Her iki yöntemde de, script çalıştırıldığında içerisindeki işlemler script ile aynı klasörde “logfile<TARIH>.log” isim formatında bir dosyaya yazdırılıyor olacaktır.