次の表に、使用可能なレプリケーションターゲットのコマンドを示します。
|
次の表に、レプリケーションターゲットのプロパティーを示します。
|
システム上の使用可能なレプリケーションターゲットをすべて一覧表示します。
リクエストの例:
GET /api/storage/v2/replication/targets HTTP/1.1 Host: zfs-storage.example.com:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: application/json
結果例:
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" }] }
このコマンドは、単一のレプリケーションターゲットの詳細を表示します。ターゲットはそのホスト名によってアクセスされます。
リクエストの例:
GET /api/storage/v2/replication/targets/zfs-storage-1 HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: application/json
結果例:
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 } }
targets コマンドは、リモートレプリケーション用に新しいレプリケーションターゲットを作成します。
レプリケーショントラフィックが特定のネットワークインタフェースを通過するようにする必要がある場合は、ルートの追加に示すように、そのインタフェースを指定するターゲットの静的ルートを設定します。
リクエストの例:
hostname および 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 }
結果例:
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" } }
レプリケーションターゲットを作成すると、証明書の検証が実行されます。証明書の検証は、次のステップで構成されます。
証明書ホスト名チェック
証明書信頼チェック
ホスト名チェックまたは証明書信頼性チェックのいずれかが失敗した場合、ターゲットは作成されません。
ホスト名チェック
hostname プロパティーの値は、完全修飾ドメイン名または IPv4 アドレスにすることができます。推奨される値は、ターゲットの完全修飾ドメイン名です。
ホスト名チェックは、ターゲットの hostname プロパティーで指定されたホスト名が証明書で指定されたホストと一致することを確認します。hostname に IP アドレスまたは非修飾ドメイン名を指定し、証明書に完全修飾ドメイン名しかない場合、ホスト名チェックは失敗し、ターゲットは作成されません。
ターゲットが ASN ベースの証明書を使用している場合は、hostname プロパティーの値にターゲットの完全修飾ドメイン名を指定します。
ホスト名チェックはデフォルトで実行されます。host_match プロパティーを false に設定すると、ホスト名チェックは実行されません。
セキュリティーを強化するには、hostname プロパティーの値をターゲットの完全修飾ドメイン名に設定し、host_match プロパティーが true に設定されていることを確認してください。
証明書信頼チェック
証明書信頼チェックでは、次の証明書のいずれかがソースの信頼できる証明書リストに追加され、ピアでの使用が有効になっていることを確認します。
ターゲットアプライアンスの証明書。
ターゲットアプライアンスの証明書を発行した認証局の証明書。
証明書が信頼されていない場合、HTTP ステータス 409 (Conflict) が返され、ターゲットは作成されません。次の例では、読みやすくするためにメッセージ行を改行しています。
{ "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\"))" } }
このソースに対してこのターゲットを初めて作成するとき、ターゲットホストの証明書が信頼されているかどうかはわかりません。RESTful API は証明書の確認を求めるプロンプトを表示できないため、auto_accept_cert プロパティーを true に設定して、ターゲットの証明書を自動的に受け入れます。
ターゲットが作成された後、その証明書は信頼できなくなることがあります。たとえば、ソースの管理者が信頼できる証明書のリストから証明書を削除したり、ターゲットの管理者が証明書を置き換えたりすることができます。ターゲットを変更して、auto_accept_cert プロパティーを true に設定し、この証明書を信頼できるものとして受け入れるようにソースに指示します。
証明書信頼チェックは、すべてのピアおよびレプリケーション接続に対して実行されます。証明書が信頼されていない場合、ソースは接続を拒否します。
フィンガープリントや発行者の commonName、SubjectAltName などの証明書のプロパティーを確認したり、証明書をアップロードしたり、証明書を削除したりするには、証明書の管理を参照してください。
このコマンドは、レプリケーションターゲットのプロパティーを変更します。
リクエストの例:
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" }
このコマンドは、既存のレプリケーションターゲットを削除します。
リクエストの例:
DELETE /service/v2/services/replication/targets/target-000 HTTP/1.1 Host: zfs-storage.example.com:215 Authorization: Basic Tm8gcGVla2luZyE=
削除に成功すると、HTTP ステータス 204 (No Content) が返されます。