Le tableau suivant répertorie les commandes cible de réplication disponibles.
|
Le tableau suivant répertorie les propriétés d'une cible de réplication.
|
Répertorie toutes les cibles de réplication disponibles sur un système.
Exemple de demande :
GET /api/storage/v2/replication/targets HTTP/1.1 Host: zfs-storage.example.com:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: application/json
Exemple de résultat :
HTTP/1.1 200 OK X-Zfssa-Replication-Api: 1.0 Content-Type: application/json Content-Length: 529 { "targets": [{ "address": "ipaddr-1", "label": "zfs-storage-1", "hostname": "ipaddr-2", "asn": "9d7a7543-ca83-68f5-a8fc-f818f65e1cfc", "actions": 0, "target": "target-000", "href": "/api/storage/v2/replication/targets/zfs-storage-1" }, { "address": "ipaddr-3", "label": "zfs-storage-2", "hostname": "ipaddr-4", "asn": "16a4c82c-26c1-4a50-e317-ac53181f2e86", "actions": 0, "target": "target-001", "href": "/api/storage/v2/replication/targets/zfs-storage-2" }] }
Cette commande répertorie les détails d'une cible de réplication unique. L'accès à cette cible s'effectue par son nom d'hôte.
Exemple de demande :
GET /api/storage/v2/replication/targets/zfs-storage-1 HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: application/json
Exemple de résultat :
HTTP/1.1 200 OK X-Zfssa-Replication-Api: 1.0 Content-Type: application/json Content-Length: 337 { "target": { "href": "/api/storage/v2/replication/targets/zfs-storage-1", "address": "ipaddr-1", "label": "zfs-storage-1", "hostname": "ipaddr-2", "asn": "9d7a7543-ca83-68f5-a8fc-f818f65e1cfc", "actions": 0 } }
La commande targets crée une nouvelle cible de réplication pour une réplication distante.
Pour garantir que le trafic de réplication passe sur une interface réseau précise, configurez une route statique pour la cible qui comprend cette interface, comme indiqué dans Ajout d'une route.
Exemple de demande :
Reportez-vous à Vérification du certificat de la cible pour plus d'informations sur les propriétés hostname et auto_accept_cert.
POST /api/replication/v2/targets HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: application/json Content-Type: application/json Content-Length: 54 { "label":"zfs-storage-3", "hostname":"zfs-storage-3.example.com", "root_password":"root-password", "auto_accept_cert":true }
Exemple de résultat :
HTTP/1.1 201 Created Content-Length: 135 Content-Type: application/json Location: /service/v2/services/replication/targets/target-000 X-Zfssa-Replication-Api: 1.0 { "target": { "actions": 0, "address": "123.45.78.9:216", "asn": "fa5bf303-0dcb-e20d-ac92-cd129ccd2c81", "auto_accept_cert": true, "hostname": "zfs-storage-3.example.com", "href": "/service/v2/services/replication/targets/target-000", "label": "zfs-storage-3" } }
Lorsque vous créez une cible de réplication, une vérification de certificat est effectuée. Cette dernière est composée des deux étapes suivantes :
Vérification du nom d'hôte figurant sur le certificat
Vérification de la validité du certificat
Si l'une des deux vérifications échoue, la cible n'est pas créée.
Vérification du nom d'hôte
La valeur de la propriété hostname peut être un nom de domaine complet ou une adresse IPv4. Il est recommandé d'utiliser le nom de domaine complet de la cible.
Cette vérification sert à confirmer que le nom d'hôte indiqué dans la propriété hostname pour la cible correspond à l'hôte du certificat. Si vous indiquez une adresse IP ou un nom de domaine non qualifié pour hostname, et que le certificat ne comporte que des noms de domaine complets, la vérification du nom d'hôte échoue et la cible n'est pas créée.
Si la cible utilise un certificat ASN, indiquez le nom de domaine complet de la cible comme valeur de la propriété hostname.
La vérification du nom d'hôte est exécutée par défaut. Si la propriété host_match est définie sur false, la vérification du nom d'hôte n'a pas lieu.
Pour renforcer la sécurité, utilisez le nom de domaine complet de la cible comme valeur de la propriété hostname et assurez-vous que la propriété host_match est définie sur true.
Vérification de la validité du certificat
La vérification de la validité du certificat sert à confirmer que l'un des certificats suivants figure dans la liste des certificats sécurisés de la source et que son utilisation par des pairs est autorisée :
Le certificat de l'appareil cible.
Le certificat de l'autorité de certification qui a émis celui de l'appareil cible.
Si le certificat n'est pas approuvé, le code HTTP 409 (Conflict) est renvoyé et la cible n'est pas créée. Dans l'exemple suivant, la ligne de message est divisée pour une meilleure lisibilité :
{ "fault": { "code": 409, "name": "ERR_ILLEGAL_STATE", "message": "operation failed due to illegal state (Certificate is not trusted (encountered while attempting to run command \"commit\"))" } }
La première fois que vous créez cette cible pour cette source, la validité du certificat de l'hôte cible n'est pas reconnue. Comme l'API RESTful ne peut pas vous inviter à confirmer le certificat, définissez la propriété auto_accept_cert sur true pour accepter automatiquement le certificat de la cible.
Une fois la cible créée, son certificat peut perdre son approbation. Par exemple, l'administrateur de la source a pu retirer le certificat de la liste des certificats sécurisés ou l'administrateur de la cible a pu le remplacer. Modifiez la cible afin de définir la propriété auto_accept_cert sur true pour indiquer à la source d'accepter la validité du certificat.
La vérification de la validité du certificat est effectuée pour chaque connexion de paire et de réplication. Si le certificat n'est pas approuvé, la source refuse la connexion.
Pour vérifier les propriétés d'un certificat, comme l'empreinte digitale ou la propriété commonName ou SubjectAltName de l'émetteur, pour charger ou supprimer un certificat, voir Gestion des certificats.
Cette commande modifie les propriétés d'une cible de réplication.
Exemple de demande :
PUT /api/replication/v2/targets/target-001 HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: application/json Content-Type: application/json Content-Length: 78 { "hostname": "zfs-storage-3.example.com" }
Cette commande supprime une cible de réplication existante.
Exemple de demande :
DELETE /service/v2/services/replication/targets/target-000 HTTP/1.1 Host: zfs-storage.example.com:215 Authorization: Basic Tm8gcGVla2luZyE=
Une suppression réussie renvoie le code HTTP 204 (No Content).