Ein besonderes Feature von Open-E JovianDSS ist der Off-Site Data Protection Service (ODPS). Zum Einsatz dieser Funktion zur Datenreplizierung sind zwei JovianDSS Nodes erforderlich. In diesem Artikel zeigen wir anhand eines Beispiels mit 2 ESXi-virtualisierten JovianDSS Nodes, wie Sie via Windows oder Linux-basiertem Client auf das Command Line Interface des JovianDSS zugreifen und ODPS korrekt konfigurieren.
Um via PuTTY und dessen plink.exe tool oder auf Linux-basierten Systemen via Terminal eine Verbindung zum CLI des JovianDSS herstellen zu können muss CLI access, wie im folgenden Screenshot abgebildet, aktiviert werden. Navigieren Sie im Webmenü des JovianDSS zu System Settings, anschließend zum Tab Administration und scrollen Sie zum Punkt CLI access.
Die Verbindung von einem Windows-Computer gelingt mit der beliebten PuTTY-Suite und dessen Kommandozeilen-Interface plink.exe. Open-E hat dazu einen detaillierten Leitfaden als PDF veröffentlicht, ab Seite 21 des PDFs Jump-Start Open-E JovianDSS ist die Konfiguration von PuTTY ausführlich und verständlich anhand Screenshots dargestellt.[1]
Nachfolgender Abschnitt zeigt, wie Sie eine Verbindung zum JovianDSS, via Terminal, von Ihrem Linux-basierten Betriebssystem, anhand des Beispiels Ubuntu 14.04, vornehmen.[2]
$ chmod 600 <Key-des-JovianDSS-Nodes>.key
$ ssh -2 -p 22223 -i .ssh/<Key-des-JovianDSS-Nodes>.key -l cli <IP-des-JovianDSS-Nodes>
Die Konfiguration vieler Features kann im Web-GUI des JovianDSS vorgenommen werden. Jedoch ist auch eine Konfiguration per CLI möglich.
Die Verbindung über einen Windows Client gelingt unterschiedlich zu einem Linux-basierten Client. Nachfolgende Schemas zeigen den Aufbau der Kommandos der jeweiligen Betriebssysteme.
plink.exe -i <Pfad-zur-ppk>\<Key-des-JovianDSS-Nodes>.ppk -P 22223 -l <IP-des-JovianDSS-Nodes> <Kommando>
$ ssh -2 -p 22223 -i <Keyfile> -l <CLI-Username> <IP-des-JovianDSS-Nodes> <Kommando>
Sie können eine Übersicht sämtlicher Kommandos durch einen Aufruf ohne Kommando am Ende erlagen.
plink.exe -i <Pfad-zur-ppk>\<Key-des-JovianDSS-Nodes>.ppk -P 22223 -l <IP-des-JovianDSS-Nodes>
$ ssh -i .ssh/<Key-des-JovianDSS-Nodes>.key -2 -p 22223 -l cli <IP-des-JovianDSS-Nodes>
Using username "cli". Usage: cli_adapter [options] Options: -h, --help show this help message and exit -c COMMAND CLI API Command to execute. Available commands: attach_volume_to_iscsi_target check_mk_agent create_clone_for_given_snapshot create_iscsi_target create_pool create_snapshot create_volume delete_clone delete_iscsi_target delete_pool delete_snapshot delete_volume detach_volume_from_iscsi_target get_clones_for_given_snapshot get_iscsi_targets_for_given_pool get_pools get_snapshots_for_given_volume get_volumes_assigned_to_iscsi_target get_volumes_for_given_pool help node_bind node_unbind odps reboot shutdown Run: command_name --help to see help for selected command
Das Feature ODPS erstellt automatisch rotierende Snapshots eines Datasets oder Zvols anhand eines Retention-Plans. Optional kann eine asynchrone Replizierung der Snapshot Deltas zu einem lokalen oder auch entfernten Standort (co-location) konfiguriert werden. Das ODPS Feature ermöglicht somit eine solide und performante Strategie für Backups, Archivierungen und Disaster Recovery zu erstellen.[3]
Die nachfolgenden Abschnitte erläutern die Konfiguration des ODPS Features. Es kann lokal zwischen zwei Pools eines Nodes angelegt werden, oder remote auf einen zweiten Node eine Replizierung der Daten vornehmen. Die folgende Beispielkonfiguration basiert auf zwei Nodes von JovianDSS als virtuelle Maschine auf einem ESXi Host. Die Konfiguration beider Nodes erfolgte ebenso analog dem identischen Schema, die beiden Instanzen unterscheiden sich nur von den konfigurierten IP-Adressen.
Die Konfiguration des ODPS Features erfolgt derzeit noch via CLI, z.B. mithilfe des oben erwähnten plink Tools der PuTTY-Suite auf der Windows Eingabeaufforderung oder auch via Terminal bei Linux-basierten Betriebssystemen. In zukünftigen Versionen ist laut Entwickler geplant eine grafische Konfiguration zu integrieren.[4] Nachfolgend wird die Konfiguration mittels eines Linux-basierten Betriebssystems, anhand eines konkreten Beispiels, aufgezeigt. Für die Konfiguration mithilfe eines Windows Betriebssystems wird das Kommando ebenso angegeben.
Aufzeigen aller ODPS Funktionen
Mit den Parametern odps oder odps help können alle ODPS-Kommandos auf der Standardausgabe ausgegeben werden.
$ ssh -i .ssh/node-7d7269fb.key -2 -p 22223 -l cli 10.1.102.230 {odps|odps help}
plink.exe -i Downloads\node-7d7269fb.ppk -P 22223 -l 10.1.102.230 {odps|odps help}
Missing option. Off-Site Data Protection Service (odps) AVAILABLE COMMANDS: odps attach-backup-node - Attaches a new backup node. node-password - Backup node password. detach-backup-node - Detaches an already added backup node. list-backup-nodes - Lists already added backup nodes. create-task - Creates a task. source - Defines a source dataset or zvol. destination - Defines a destination dataset or zvol. plan - Defines a custom retention plan. If it is not set, the default plan is set to 1hour_every_10min, 3day_every_1hour, 1month_every_1day. mbuffer - Enables an mbuffer for data transport. mbuffersize=number{b|k|M|G} - Sets the buffer size. It supports the following units: b,k,M,G. If not set, the buffer size defaults to 1GB. enable-task - Enables a task. disable-task - Disables a task. delete-task - Deletes a task. list-tasks - Lists already created tasks. set-task-defaults - Sets default parameters for tasks. get-task-defaults - Gets default parameters for tasks. restart-tasks - Restarts all tasks. status - Status of the service. set - Lists current settings: list-backup-nodes, get-task-defaults, list-tasks. debug - Simulated run of the task. json - Displays in JSON format. help - Displays help. ESX COMMANDS SUB-SET: esx register - Registers VMware vCenter or vSphere server. user - vCenter or vSphere administration user. password - vCenter or vSphere user password. esx unregister - Unregisters an already registered vCenter or vSphere server. esx list - Lists already registered vCenter or vSphere servers. esx query - Lists VMs details on registered vCenter or vSphere servers. esx attach-datastore - Attaches an ESX datastore to a given task. datastore - Datastore to be attached (IP_addr/datacenter_name/datastore_name). Note: Consistent snapshots are taken for all VMs in attached datastores except those with annotation: ##auto-snap-skip## esx detach-datastore - Detaches an ESX datastore for a given task. esx list-datastores - Lists datastores associated with a given task. esx set - Lists current ESX settings: esx query, esx list, esx list-datastores. EXAMPLES: 1. Attach new backup node: odps attach-backup-node 192.168.0.221 node-password admin 2. Detach an already added backup node: odps detach-backup-node 192.168.0.221 3. List already added backup nodes: odps list-backup-nodes 4.1 Create a new task as local snapshots only, no replication at all. odps create-task source=Pool-0/dataset odps create-task source=Pool-0/zvol 4.2 Create a new task as local(192.168.0.220) backup from Pool-0 to Pool-1. odps create-task source=Pool-0/dataset destination=192.168.0.220:Pool-1/dataset odps create-task source=Pool-0/dataset plan=1h_every_1min,30d_every_4h destination=192.168.0.220:Pool-1/dataset odps create-task source=Pool-0/dataset plan=1h_every_1min,30d_every_4h destination=192.168.0.220:Pool-1/dataset plan=5h_every_10min Note: All missing options will be taken from task-defaults which can be set with set-task-defaults command. 4.3 Create a new task as a backup to the remote host 192.168.0.221 using mbuffer for data transport. odps create-task source=Pool-0/dataset destination=192.168.0.221:Pool-0/dataset mbuffer odps create-task source=Pool-0/dataset plan=1h_every_1min,30d_every_4h destination=192.168.0.221:Pool-0/dataset mbuffer mbuffersize=2G odps create-task source=Pool-0/dataset plan=1h_every_1min,30d_every_4h destination=192.168.0.221:Pool-0/dataset plan=5h_every_1min,1w_every_4h mbuffer mbuffersize=500M Note: All missing options will be taken from task-defaults which can be set with set-task-defaults command. 4.4 Create a new task as a backup to two remote hosts: 192.168.0.221 and 192.168.0.222. odps create-task source=Pool-0/dataset destination=192.168.0.221:Pool-0/dataset destination=192.168.0.222:Pool-1/dataset odps create-task source=Pool-0/dataset plan=1h_every_1min,30d_every_4h destination=192.168.0.221:Pool-0/dataset plan=5h_every_1min,1w_every_4h destination=192.168.0.222:Pool-0/dataset Note: All missing options will be taken from task-defaults which can be set with set-task-defaults command. 5 Enable a task: odps enable-task Pool-0/dataset 6. Disable a task: odps disable-task Pool-0/dataset 7. Delete a task: odps delete-task Pool-0/dataset 8. List already created tasks: odps list-tasks 9. Restart all tasks: odps restart-tasks 10. Get task defaults: odps get-task-defaults 11. Set default plan for all tasks: odps set-task-defaults plan 5h_every_10min 12. Status of the service. Last entries from logs: odps status 13. Simulated run of a task (dry-run): odps debug Pool-0/dataset ESX EXAMPLES: 1. Register a VMware vCenter or vSphere server: odps esx register 192.168.0.10 user user_name password user_password 2. Unregister an already registered vCenter or vSphere server: odps esx unregister 192.168.0.10 3. Lists already registered vCenter or vSphere servers: odps esx list 4. Lists VMs details on registered vCenter or vSphere servers: odps esx query 192.168.0.10 5. Attach an ESX datastore for a given task: odps esx attach-datastore Pool-0/dataset datastore 192.168.0.10/datacenter_name/datastore_name 6. Detach ESX datastore for a given task: odps esx detach-datastore Pool-0/dataset 7. Lists datastores associated with a given task: odps esx list-datastores Pool-0/dataset RETENTION PLANS: The ODPS plan consists of a series of retention periods to interval associations: "retention_every_interval,retention_every_interval,retention_every_interval,...". Both intervals and retention periods use standard units of time or multiples of them, with full names or a shortcut according to the following list: second|sec|s, minute|min, hour|h, day|d, week|w, month|mon|m, year|y.
Nach der grundlegenden Konfiguration wird nun aufgezeigt, wie eine lokale Replikation sowie eine entfernte Replikationen angelegt wird.
Eine lokale Replikation zwischen zwei lokalen Pools, wie Pool-0 und Pool-1 in diesem Beispiel, ist mit folgendem Kommando einzurichten. In diesem Fall wurden vorab im Webinterface des JovianDSS zwei lokale Storage Pools angelegt.
odps create-task source=Pool-0/dataset destination=<IP-des-JovianDSS>:Pool-1/dataset
Eine entfernte Replikation auf einen zweiten Node erfordert nur wenige Konfigurationsschritte. Der zweite Node wird hinzugefügt und der Backuptask eingeplant. Beide Nodes enthalten jeweils einen Storage Pool, auf beiden Seiten Pool-0 benannt. Der Backup-Node wird zuerst am ersten Node hinzugefügt und anschließend der Backup-Task erstellt.
Backup Node hinzufügen Der entfernte Backup-Node wird mit dem nachfolgenden Kommando zum lokalen Node angehängt. Geben Sie beim nachfolgenden Aufruf die IP-Adresse des Backup-Nodes und dessen Passwort an.
$ ssh -i .ssh/node-7d7269fb.key -2 -p 22223 -l cli 10.1.102.230 odps attach-backup-node 10.1.102.234 node-password admin Backup node has been attached.
Remote Backup-Task erstellen
Da nun der JovianDSS Backup-Node hinzugefügt wurde, kann jetzt eine Backup-Aufgabe mit entfernter Replizierung auf diesen Backup-Node erstellt werden. Geben Sie hier das Quellverzeichnis am lokalen Node und das Zielverzeichnis des entfernten Nodes an.
$ ssh -i .ssh/node-7d7269fb.key -2 -p 22223 -l cli 10.1.102.230 odps create-task source=Pool-0/test destination=10.1.102.234:Pool-0/test-backup Task has been successfully created.
Remote Backup-Task mit Bufferung der Datenübertragung erstellen
Sie können die Übertragung mit den Parametern mbuffer bzw. mbuffer buffersize=<Größe in MB> puffern lassen.
$ ssh -i .ssh/node-7d7269fb.key -2 -p 22223 -l cli 10.1.102.230 odps create-task source=Pool-0/test destination=10.1.102.234:Pool-0/test-backup {mbuffer|mbuffer mbuffersize=<Größe in MB>}
Status der Replikationsaufgaben
Nachfolgende Ausgabe zeigt den Status in einer detaillierten Ausgabe an. Hier sieht man, dass z.B. die Snapshots zum entfernten Node gesendet werden und Aufräumarbeiten stattgefunden haben. Falls Fehler auftreten, können diese mithilfe des Kommandos odps status ebenso gut debuggt werden.
$ ssh -i .ssh/node-7d7269fb.key -2 -p 22223 -l cli 10.1.102.230 odps status Service running: Yes Last service logs: [Thu Nov 10 16:30:13 2016] [info] running post snapshot command on Pool-0/test [Thu Nov 10 16:30:15 2016] [info] running post snapshot command on Pool-0/test [Thu Nov 10 16:30:17 2016] [info] running post snapshot command on Pool-0/test [Thu Nov 10 16:30:19 2016] [info] running post snapshot command on Pool-0/test [Thu Nov 10 16:30:21 2016] [info] running post snapshot command on Pool-0/test [Thu Nov 10 16:30:24 2016] [info] running post snapshot command on Pool-0/test [Thu Nov 10 16:30:26 2016] [info] running post snapshot command on Pool-0/test [Thu Nov 10 16:30:27 2016] [info] done with backupset Pool-0/test in 25 seconds [Thu Nov 10 16:30:27 2016] [debug] send/receive worker for Pool-0/test done (9540) [Thu Nov 10 16:40:00 2016] [debug] snapshot worker for Pool-0/test spawned (12126) [Thu Nov 10 16:40:00 2016] [info] creating snapshot on Pool-0/test [Thu Nov 10 16:40:00 2016] [info] running post snapshot command on Pool-0/test [Thu Nov 10 16:40:02 2016] [debug] snapshot worker for Pool-0/test done (12126) [Thu Nov 10 16:40:02 2016] [debug] send/receive worker for Pool-0/test spawned (12269) [Thu Nov 10 16:40:02 2016] [info] starting work on backupSet Pool-0/test [Thu Nov 10 16:40:02 2016] [debug] sending snapshots from Pool-0/test to odp@10.1.102.234:Pool-0/test-backup [Thu Nov 10 16:40:06 2016] [debug] cleaning up snapshots on odp@10.1.102.234:Pool-0/test-backup [Thu Nov 10 16:40:06 2016] [debug] cleaning up snapshots on Pool-0/test [Thu Nov 10 16:40:06 2016] [info] done with backupset Pool-0/test in 4 seconds [Thu Nov 10 16:40:06 2016] [debug] send/receive worker for Pool-0/test done (12269)
Bestehende Tasks auflisten
Eine Liste bestehender Tasks wird per list-tasks Parameter ausgegeben. Der zuvor erstellte Backup-Task wird, inklusive der Eigenschaften, übersichtlich ausgegeben.
$ ssh -i .ssh/node-7d7269fb.key -2 -p 22223 -l cli 10.1.102.230 odps list-tasks Source: Pool-0/test Enabled: yes Retention plan: 1hour_every_10minutes,3days_every_1hour,1month_every_1day Destination: odp@10.1.102.234:Pool-0/test-backup Retention plan: 1hour_every_10minutes,3days_every_1hour,1month_every_1day Mbuffer: on Mbuffer size: 1G
Tasks und Replikationen können über die CLI auch wieder entfernt werden. Wie dies gelingt, zeigen nachfolgend zwei Beispiele.
Task entfernen
Einen Task, z.B. einen Backup-Task, kann man mit delete-task <Taskname> entfernen.
$ ssh -i .ssh/node-7d7269fb.key -2 -p 22223 -l cli 10.1.102.230 odps delete-task Pool-0/test Task has been successfully deleted.
Backup Node entfernen
Der Backup Node kann mit dem Parameter detach-backup-node und Angabe der IP-Adresse des Nodes entfernt werden.
$ ssh -i .ssh/node-7d7269fb.key -2 -p 22223 -l cli 10.1.102.230 odps detach-backup-node 10.1.102.234 Backup node has been detached.
Autor: Thomas Niedermeier Thomas Niedermeier arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte an der Hochschule Deggendorf sein Studium zum Bachelor Wirtschaftsinformatik. Seit 2013 ist Thomas bei Thomas-Krenn beschäftigt und kümmert sich unter anderem um OPNsense Firewalls, das Thomas-Krenn-Wiki und Firmware Sicherheitsupdates. |