다음 표는 사용 가능한 복제 대상 명령을 보여 줍니다.
|
다음 표에서는 복제 대상의 등록 정보를 보여줍니다.
|
시스템에서 사용할 수 있는 모든 복제 대상을 나열합니다.
요청 예:
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)를 반환합니다.