Elasticsearch Snapshotlarını Minio'da Saklama

23 Aralık 2021 • 2 min read

Minio yüksek performanslı, self-hosted AWS S3 uyumlu object storage çözümüdür.

Elasticsearch snapshotlarını Minio’da nasıl saklayabileceğimizi açıklayacağım.

Ön gereksinimler

  • Minio
  • Elasticsearch

Bucket Oluşturma

Öncelikle elasticsearch snapshotlarının depolanması için bir bucketa ihtiyacımız var.

Minio UI console’u açıp sol menüden Buckets‘a girip Create Bucket ile bir bucket oluşturabilirsiniz.


Service Account Oluşturma

Elasticsearch ile minio bağlantısı kurmak için bir de servis hesabı gerekiyor.

Minio UI console’u açıp sol menüden Service Accounts‘a girip Create Service Account ile service account oluşturabilirsiniz.

Bu aşamada göreceğiniz Secret Key ve Access Keyi kaydedin bu bilgileri plugin kurulumu sırasında kullanacağız.


Elasticsearch S3 Repository Plugin Kurulumu

Minio, Amazon AWS S3 ile uyumlu olduğu için S3 repository plugin kullanacağız. Bunun için bütün elasticsearch nodelarına bağlanılır ve aşağıdaki adımlar uygulanır.

Öncelikle aşağıdaki komut ile repository-s3 plugini kurulur.

/usr/share/elasticsearch/bin/elasticsearch-plugin install repository-s3

S3 plugini ile birlikte elasticsearch üzerinde default adında S3 client oluşmaktadır. Yapılacak işlemler bu kullanıcı üzerinden gerçekleştirilebilir. Snapshotların gönderileceği minio sunucusuna erişmek için gerekli olan access_key ve secret_key bilgileri default client’a tanımlanır.

/usr/share/elasticsearch/bin/elasticsearch-keystore add s3.client.default.secret_key
# Secret key girilmesi beklenecek

/usr/share/elasticsearch/bin/elasticsearch-keystore add s3.client.default.access_key
# Access key girilmesi beklenecek

Bu aşamadan sonra elasticsearch servisi yeniden başlatılmalıdır.

systemctl restart elasticsearch

Elasticsearch Repository Ekleme

Aşağıdaki gibi bir istek gönderilerek my-minio-repository isimli bir repository oluşturulabilir.

PUT _snapshot/my-minio-repository {
   "type": "s3",
   "settings": {
      "client": "default",
      "bucket": "elasticsearch-snapshots",
      "endpoint": "minio.example.com",
      "path_style_access": "true",
      "protocol": "http"
   } 
}

Elle snapshot alma

Aşağıdaki gibi bir istek gönderilerek my-first-snapshot isimli bir snapshot elle alınabilir.

PUT /_snapshot/my-minio-repository/my-first-snapshot?wait_for_completion=true

Policy ile snapshot alma

İstenirse snapshot alma işlemi snapshot policy kullanılarak otomatikleştirilebilir. Örneğin aşağıdaki policy her gün 07:30’da tüm indexlerin snapshotını minio repository’e kaydedecektir.

PUT _slm/policy/daily-snapshots
{
    "name": "<daily-snapshot-{now/d}>",
    "schedule": "0 30 7 * * ?",
    "repository": "my-minio-repository"
}

Snapshotları geri yükleme

Aşağıdaki istek ile my-first-snapshot yedeği geri yüklenebilir.

POST /_snapshot/my-minio-repository/my-first-snapshot/_restore

Kaynak

https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html