Elasticsearch, veri kaybına karşı korunmaya yardımcı olmak için, veri hatası durumlarında bile veri kullanılabilirliğini sağlamanıza olanak tanıyan çeşitli özelliklere sahiptir.
Elasticsearch'ün size veri kullanılabilirliği sağlamak için kullandığı yollardan bazıları şunlardır:
- Verileri bir dizi takipçi kümesine çoğaltmanıza olanak tanıyan bir özellik olan çapraz küme çoğaltmaları; takipçi kümesi, ana kümeden arıza olması durumunda kullanılan bir bekleme kümesidir.
- Elasticsearch'ün, küme anlık görüntüleri olarak da adlandırılan yedeklemeleri kullanan verileri önlemek için kullandığı başka bir yöntem. Gerekirse, tamamen yeni bir kümedeki verileri geri yüklemek için bu anlık görüntüleri kullanabilirsiniz.
Bu eğitici, geri döndürülemez bir veri hatası olayı meydana geldiğinde hazır olmanıza yardımcı olacak küme anlık görüntülerinin nasıl oluşturulacağını gösterir.
Başlayalım.
Elasticsearch Anlık Görüntüsü Nedir??
Belirtildiği gibi, esnek bir anlık görüntü, çalışan bir Elasticsearch kümesinin yedek kopyasıdır. Bu anlık görüntü, tüm bir kümenin veya belirli bir küme içindeki belirli dizinlerin ve veri akışlarının tamamı olabilir.
Yakında öğreneceğiniz gibi, bir depo eklentisi Elasticsearch anlık görüntülerini yönetir. Bu anlık görüntüler, eklenti tarafından tanımlanan çeşitli depolama konumlarında depolanabilir. Bunlara yerel sistemler ve GCP Storage, Amazon EC2, Microsoft Azure ve daha pek çok uzak sistem dahildir.
Elasticsearch Anlık Görüntü Deposu Nasıl Oluşturulur
Elasticsearch anlık görüntülerini oluşturmaya başlamadan önce, bir anlık görüntü deposu oluşturmamız gerekiyor çünkü Elasticsearch'ün birçok hizmeti bu görevleri gerçekleştirmek için Anlık Görüntü API'sini kullanıyor.
Snapshot API tarafından gerçekleştirilen görevlerden bazıları şunlardır:
- Anlık görüntü deposunu koy
- Anlık görüntü deposunu doğrulayın
- Anlık görüntü deposu alın
- Anlık görüntü deposunu sil
- Anlık görüntü deposunu temizle
- Anlık görüntü oluştur
- Klon anlık görüntüsü
- Anlık görüntü al
- Anlık görüntü durumunu al
- Anlık görüntüyü geri yükle
- Anlık görüntüyü sil
Bir anlık görüntü deposu oluşturmak için, anlık görüntü deposuna atamak istediğimiz adın ardından _snapshot API bitiş noktasını kullanırız. Backup_repo adlı bir depo oluşturan aşağıdaki isteği göz önünde bulundurun
PUT /_snapshot/backup_repo"tür": "fs",
"ayarlar":
"konum": "/home/root/yedeklemeler",
"sıkıştır": doğru
İşte yukarıdaki istek için bir cURL komutu:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo" -H 'Content-Type: application/json' -d' "type": "fs", "ayarlar": "konum": "/ ana sayfa/kök/yedeklemeler", "sıkıştır": true 'Anlık görüntü veri havuzu yolunu geçmek için önce sistemin yolunu veya üst dizini yola eklemelisiniz.elastiksearch'te repo girişi.yml
Yol.repo girişi şuna benzemelidir:
yol.depo: [“/home/root/backups”]Elasticsearch yapılandırma dosyasını /etc/elasticsearch/elasticsearch konumunda bulabilirsiniz.yml
NOT: Yolu ekledikten sonra.repo, Elasticsearch kümelerini yeniden başlatmanız gerekebilir. Ayrıca, yol için desteklenen değerler.repo, Elasticsearch'ü çalıştıran platforma bağlı olarak çılgınca değişebilir.
Anlık Görüntü Deposu Nasıl Görüntülenir
Anlık görüntü deposunun başarıyla oluşturulduğunu onaylamak için, _snapshot bitiş noktasıyla GET isteğini şu şekilde kullanın:
GET /_snapshot/backup_repoAşağıdaki cURL komutunu da kullanabilirsiniz:
curl -XGET "http://localhost:9200/_snapshot/backup_repo"Bu, yedekleme deposuyla ilgili bilgileri göstermelidir, örneğin:
"backup_repo":
"tür": "fs",
"ayarlar":
"sıkıştır" : "doğru",
"konum" : """/home/root/yedeklemeler"""
Birden fazla anlık görüntü deponuz varsa ve adı hatırlamıyorsanız, depo adını atlayabilir ve mevcut tüm depoları listelemek için _snapshot uç noktasını arayabilirsiniz.
GET /_snapshot veya cURL curl -XGET http://localhost:9200/_snapshot
Elasticsearch Anlık Görüntüsü Nasıl Oluşturulur
Belirli bir anlık görüntü deposu için bir Elasticsearch anlık görüntüsü oluşturma, anlık görüntü oluşturma API'si tarafından işlenir. API, anlık görüntü havuzu adını ve anlık görüntünün adını gerektirir.
NOT: Tek bir anlık görüntü deposu, benzersiz kimlikleri/adları olduğu sürece aynı kümelerin birden fazla anlık görüntüsüne sahip olabilir.
backup_repo deposuna snapshot_2021 adlı bir anlık görüntü eklemek için aşağıdaki isteği göz önünde bulundurun.
PUT /_snapshot/backup_repo/snapshot_2021cURL'yi kullanmak için şu komutu kullanın:
curl -XPUT “http://localhost:9200/_snapshot/backup_repo/snapshot_2021”Komut, Elasticsearch'ten 200 OK ile bir yanıt döndürmeli ve kabul edilmelidir: true
"kabul edildi": doğru
Hangi veri akışlarını ve dizinleri yedeklemek istediğinizi belirtmediği için yukarıdaki isteği çağırmak tüm verileri ve küme durumunu yedekler. Hangi veri akışlarının ve dizinlerin yedekleneceğini belirtmek için bunu istek gövdesine ekleyin.
Yedekleyen aşağıdaki isteği göz önünde bulundurun: .kibana dizini (bir sistem dizini) ve hangi kullanıcının anlık görüntüye yetki verdiğini ve nedenini belirtir.
PUT /_snapshot/backup_repo/snapshot_2"endeksler": ".kibana",
"ignore_unavailable": doğru,
"include_global_state": doğru,
"meta veri":
"take_by": "elasticadmin",
"taken_because": "Günlük Yedekleme"
Bunun için cURL komutu:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo/snapshot_2" -H 'Content-Type: application/json' -d' "indeksler": ".kibana", "ignore_unavailable": true, "include_global_state": true, "meta veri": "taken_by": "elasticadmin", "take_because": "Günlük Yedekleme" 'Ignore_unavailable, anlık görüntüde belirtilen veri akışlarından veya dizinlerden herhangi biri eksik veya kapalıysa bir hata döndüren bir Boole durumu ayarlar.
include_global_state parametresi, doğruysa kümenin mevcut durumunu kaydeder. Kaydedilen küme bilgilerinden bazıları şunları içerir:
- Kalıcı küme ayarları
- Dizin şablonları
- Eski dizin şablonları
- Besleme boru hatlarını
- ILM yaşam döngüsü ilkeleri
NOT: Virgülle ayrılmış birden fazla dizin belirtebilirsiniz.
_snapshot bitiş noktasıyla kullanılan yaygın bir bağımsız değişken, wait_for_completion, isteğin anlık görüntü başlatıldıktan hemen sonra (varsayılan) geri dönmesini (varsayılan) veya anlık görüntünün tamamlanmasını beklemesini (doğru) veya yanlış (yanlış) tanımlayan bir Boolean değeridir.
Örneğin:
PUT /_snapshot/backup_repo/snapshot_3?wait_for_completion=doğru"endeksler": ".kibana",
"ignore_unavailable": doğru,
"include_global_state": yanlış,
"meta veri":
"take_by": "elasticadmin",
"taken_because": "Haftalık Yedekleme"
cURL komutu:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo/snapshot_3?wait_for_completion=true" -H 'İçerik Türü: application/json' -d' "indeksler": ".kibana", "ignore_unavailable": true, "include_global_state": false, "metadata": "taken_by": "elasticadmin", "taken_because": "Haftalık Yedekleme" 'wait_for_completion parametresini true olarak ayarladığınızda, aşağıda gösterilene benzer bir çıktı verirsiniz:
"enstantane fotoğraf" :
"anlık görüntü": "anlık görüntü_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"sürüm" : "7.10.2",
"endeksler": [
".kibana_1"
],
"data_streams": [ ],
"include_global_state": yanlış,
"meta veri":
"taken_by": "elasticadmin",
"taken_because": "Haftalık Yedekleme"
,
"durum": "BAŞARI",
"start_time" : "2021-01-19T13:36:59.615Z",
"start_time_in_millis": 1611063419615,
"end_time" : "2021-01-19T13:37:00.433Z",
"end_time_in_millis": 1611063420433,
"duration_in_millis" : 818,
"arızalar" : [ ],
"parçalar":
"toplam" : 1,
"başarısız" : 0,
"başarılı" : 1
Anlık Görüntüler Nasıl Görüntülenir
GET anlık görüntü API'si, anlık görüntüleri görüntüleme işlevini işler.
İsteği iletmeniz gereken tek şey, anlık görüntü deposu ve ayrıntıları görüntülemek istediğiniz anlık görüntünün adıdır.
Anlık görüntü, belirtilen bir anlık görüntüyle ilgili ayrıntılarla yanıt vermelidir. Bu ayrıntılar şunları içerir:
- Başlangıç ve bitiş zamanı değerleri
- Anlık görüntüyü oluşturan Elasticsearch sürümü
- Dahil edilen endekslerin listesi
- Anlık görüntünün mevcut durumu
- Anlık görüntü sırasında oluşan hataların listesi
Örneğin, yukarıda oluşturulan snapshot_3 ile ilgili ayrıntıları görüntülemek için aşağıda gösterilen isteği kullanın:
GET /_snapshot/backup_repo/snapshot_3cURL'yi kullanmak için aşağıdaki komutu kullanın:
[cc lang="text" width="100%" height="100%" escaped="true" theme="blackboard" nowrap="0"]
curl -XGET “http://localhost:9200/_snapshot/backup_repo/snapshot_3”
İstek, anlık görüntünün ayrıntılarını içeren bir yanıt döndürmelidir:
"anlık görüntüler": [
"anlık görüntü": "anlık görüntü_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"sürüm" : "7.10.2",
"endeksler": [
".kibana_1"
],
"data_streams": [ ],
"include_global_state": yanlış,
"meta veri":
"taken_by": "elasticadmin",
"taken_because": "Haftalık Yedekleme"
,
"durum": "BAŞARI",
"start_time" : "2021-01-19T13:36:59.615Z",
"start_time_in_millis": 1611063419615,
"end_time" : "2021-01-19T13:37:00.433Z",
"end_time_in_millis": 1611063420433,
"duration_in_millis" : 818,
"arızalar" : [ ],
"parçalar":
"toplam" : 1,
"başarısız" : 0,
"başarılı" : 1
]
Bir anlık görüntü hakkında belirli ayrıntıları almak için istek gövdesini de özelleştirebilirsiniz. Ancak şimdilik buna bakmayacağız.
Belirli bir anlık görüntü deposundaki tüm anlık görüntüler hakkındaki bilgileri görüntülemek istediğinizi varsayalım; bu durumda, istekte bir yıldız işareti joker karakterini şu şekilde iletebilirsiniz:
GET /_snapshot/backup_repo/*Bunun için cURL komutu:
curl -XGET “http://localhost:9200/_snapshot/backup_repo/*”Yanıt, o depodaki tüm anlık görüntülerin ayrıntılı bir dökümüdür:
"anlık görüntüler": [
"anlık görüntü": "anlık görüntü_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"version_id": 7100299,
"sürüm" : "7.10.2",
"endeksler": [
"my_index",
"single_index_with_body",
"my_index_2",
"single_index",
".kibana_1",
"Ölçek"
],
"data_streams": [ ],
"include_global_state": doğru,
"durum": "BAŞARI",
"start_time" : "2021-01-19T13:28:48.172Z",
"start_time_in_millis": 1611062928172,
"end_time" : "2021-01-19T13:28:50.831Z",
"end_time_in_millis": 1611062930831,
"duration_in_millis" : 2659,
"arızalar" : [ ],
"parçalar":
"toplam" : 7,
"başarısız" : 0,
"başarılı" : 7
,
"anlık görüntü": "anlık görüntü_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"version_id": 7100299,
"sürüm" : "7.10.2",
"endeksler": [
".kibana_1"
],
"data_streams": [ ],
"include_global_state": yanlış,
"meta veri":
"taken_by": "elasticadmin",
"taken_because": "Günlük Yedekleme"
,
"durum": "BAŞARI",
"start_time" : "2021-01-19T13:33:34.482Z",
"start_time_in_millis": 1611063214482,
"end_time" : "2021-01-19T13:33:35.921Z",
"end_time_in_millis": 1611063215921,
"duration_in_millis": 1439,
"arızalar" : [ ],
"parçalar":
"toplam" : 1,
"başarısız" : 0,
"başarılı" : 1
,
"anlık görüntü": "anlık görüntü_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"sürüm" : "7.10.2",
"endeksler": [
".kibana_1"
],
"data_streams": [ ],
"include_global_state": yanlış,
"meta veri":
"taken_by": "elasticadmin",
"taken_because": "Haftalık Yedekleme"
,
"durum": "BAŞARI",
"start_time" : "2021-01-19T13:36:59.615Z",
"start_time_in_millis": 1611063419615,
"end_time" : "2021-01-19T13:37:00.433Z",
"end_time_in_millis": 1611063420433,
"duration_in_millis" : 818,
"arızalar" : [ ],
"parçalar":
"toplam" : 1,
"başarısız" : 0,
"başarılı" : 1
]
Joker karakterler, anlık görüntülerle ilgili belirli bilgileri filtrelemek için çok kullanışlıdır.
Anlık Görüntü Nasıl Silinir
Bir anlık görüntüyü silmek çok basittir: tek yapmanız gereken DELETE isteğini şu şekilde kullanmaktır:
SİL /_snapshot/backup_repo/snapshot_2021/cURL komutu:
curl -XDELETE “http://localhost:9200/_snapshot/backup_repo/snapshot_2021/”Yanıt onaylanmalıdır: doğru
"onaylandı": doğru
Anlık görüntü yoksa, bir 404 durum kodu ve şu şekilde anlık görüntü eksik hatası alırsınız:
"hata" :
"ana neden" : [
"type" : "snapshot_missing_exception",
"neden": "[backup_repo:snapshot_2021] eksik"
],
"type" : "snapshot_missing_exception",
"neden": "[backup_repo:snapshot_2021] eksik"
,
"durum" : 404
Sonuç
Bu kılavuzda, Anlık Görüntü API'sini kullanarak Elasticsearch anlık görüntülerinin nasıl oluşturulacağını tartıştık. Öğrendikleriniz, bir anlık görüntü havuzu oluşturmanıza, anlık görüntü havuzlarını görüntülemenize, anlık görüntüler oluşturmanıza, görüntülemenize ve silmenize izin vermek için yeterli olmalıdır. API ile yapabileceğiniz özelleştirmeler olsa da, bu kılavuzdaki bilgiler başlamanız için yeterli olacaktır.
Okuduğunuz için teşekkürler.