MinIO als S3 Backup für OpenSearch
Im Folgenden wird darauf eingegangen, wie MinIO als S3 Backup Ersatz bei On-Promise Installationen verwendet werden kann. Es ist eine gute Alternative zu den Shared Filesystemen, welche für die Backups im OpenSearch Cluster verwendet werden müssten. Siehe BPC Cluster
Installation
Die Installation wird hier am Beispiel von Docker gezeigt. Weitere Installationsmöglichkeiten sind in der MinIO Dokumentation zu finden.
Zuerst muss ein Verzeichnis angelegt werden, in dem MinIO seine Daten speichern kann.
Hier wird als Beispiel /opt/minio/data
verwendet.
Dieser Pfad ist kein Muss und kann sich irgendwo auf der Festplatte befinden.
mkdir -p /opt/minio/data
bash
Nun MinIO per Docker starten:
docker run -d \
--restart=unless-stopped \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v /opt/minio/data:/data \
-e "MINIO_ROOT_USER=rootroot" \
-e "MINIO_ROOT_PASSWORD=virtimos" \
quay.io/minio/minio server /data --console-address ":9001"
bash
S3 Bucket anlegen und den Zugriff darauf festlegen
Die MinIO Admin Webseite im Browser öffnen: http://127.0.0.1:9000
Als 'admin'-Benutzer anmelden (Daten siehe Docker Aufruf):
-
User:
rootroot
-
Passwort:
virtimos
unter Administrator → Buckets ein Bucket anlegen:
-
Bucket Name:
opensearch
-
die Features deaktiviert lassen
unter User → Access Keys einen neuen 'Access Key' anlegen:
-
Exemplarischer Access Key:
ZlDIa08zIdmoPaKCnXa4
-
Exemplarischer Secret Key:
HNUyLdeupJWJ33JlEDUZ9zzF4QjYQfzSfe7wZfCo
-
die restlichen Optionen unangetastet lassen
OpenSearch vorbereiten
Dazu in das OpenSearch Installationsverzeichnis wechseln.
Nun das OpenSearch S3 Plugin installieren:
bin/opensearch-plugin install --batch repository-s3
bash
Der 'Access Key' und 'Secret Key' von oben muss für den Zugriff auf MinIO im OpenSearch-Keystore abgelegt werden:
echo 'ZlDIa08zIdmoPaKCnXa4' | bin/opensearch-keystore add --stdin s3.client.default.access_key
echo 'HNUyLdeupJWJ33JlEDUZ9zzF4QjYQfzSfe7wZfCo' | bin/opensearch-keystore add --stdin s3.client.default.secret_key
bash
Die OpenSearch Konfigurationsdatei mit einem Texteditor erweitern:
# Anpassung zur Verwendung des S3 kompatiblen MinIO
s3.client.default.protocol: http
s3.client.default.endpoint: localhost:9000
s3.client.default.region: eu-central-1
s3.client.default.path_style_access: true
yaml
Vor dem Start von OpenSearch die folgenden Umgebungsvariablen setzen:
export AWS_EC2_METADATA_DISABLED=true
export AWS_REGION=eu-central-1
bash
nun kann OpenSearch gestartet werden.
Existierende Backups übernehmen (optional)
Dieser Schritt muss vor der Umstellung auf das S3 Backup Repository passieren. Bzw. das oben angelegte S3 Bucket darf keine Dateien enthalten.
In der Voreinstellung werden die Snapshots/Backups der OpenSearch Indizes im Dateisystem abgelegt.
Sie sind im folgenden Verzeichnis zu finden: <BPC_INSTALLATIONS_ORDNER>/opensearch_data/bpc_backup
Alle Dateien und Verzeichnisse aus diesem Verzeichnis können einfach in das S3 Bucket kopiert werden.
Da wir hier MinIO verwenden, kommt auch dessen Kommandozeilentool mc
zum Einsatz.
Es kann aber jedes andere S3 Tool zum Kopieren der Dateien und Verzeichnisse verwendet werden.
Das Minio CLI Tool mc
installieren:
brew install minio/stable/mc
bash
Dem Kommandozeilentool mc
den Zugriff auf das oben installierte MinIO geben:
mc alias set local http://127.0.0.1:9000 rootroot virtimos
bash
Nun den Inhalt aus dem <BPC_INSTALLATIONS_ORDNER>/opensearch_data/bpc_backup
Verzeichnis in das oben angelegte S3 Bucket 'opensearch' kopieren:
mc cp --recursive <BPC_INSTALLATIONS_ORDNER>/opensearch_data/bpc_backup/* local/opensearch
bash
BPC konfigurieren
Das S3 Bucket als BPC Backup Repository festlegen.
{
"type": "s3",
"settings": {
"bucket": "opensearch",
"protocol": "http",
"endpoint": "localhost:9000",
"path_style_access": true
}
}
json
Nach dem Speichern werden die OpenSearch Snapshots/Backups im S3 Bucket abgelegt.