일관성 값
정합성 보장은 서로 다른 스토리지 노드 및 사이트에서 객체의 가용성과 객체 일관성 간의 균형을 제공합니다. 애플리케이션에 필요한 만큼 일관성을 변경할 수 있습니다.
기본적으로 StorageGRID는 새로 생성된 개체에 대해 쓰기 후 읽기 일관성을 보장합니다. 성공적으로 완료된 PUT를 팔로우하면 새로 작성된 데이터를 읽을 수 있습니다. 기존 오브젝트, 메타데이터 업데이트 및 삭제를 덮어쓰는 것은 결국 일관성이 유지됩니다. 덮어쓰기는 일반적으로 전파되는 데 몇 초 또는 몇 분이 걸리지만 최대 15일이 소요될 수 있습니다.
개체 작업을 다른 일관성으로 수행하려는 경우 다음을 수행할 수 있습니다.
일관성 값
일관성은 StorageGRID이 오브젝트를 추적하는 데 사용하는 메타데이터가 노드 간에 분산되는 방식과 클라이언트 요청을 위한 개체의 가용성에 영향을 줍니다.
버킷 또는 API 작업의 정합성을 다음 값 중 하나로 설정할 수 있습니다.
-
* ALL *: 모든 노드가 즉시 데이터를 수신하거나 요청이 실패합니다.
-
* 강력한 글로벌 *: 모든 사이트에서 모든 클라이언트 요청에 대해 쓰기 후 읽기 일관성을 보장합니다.
-
* 강력한 사이트 *: 사이트 내의 모든 클라이언트 요청에 대해 쓰기 후 읽기 일관성을 보장합니다.
-
*Read-after-new-write *: (기본값) 새 개체에 대해 읽기-쓰기 후 일관성을 제공하고 개체 업데이트에 대한 최종 일관성을 제공합니다. 고가용성 및 데이터 보호 보장 제공 대부분의 경우에 권장됩니다.
-
* 사용 가능 *: 새 객체 및 객체 업데이트 모두에 대한 최종 일관성을 제공합니다. S3 버킷의 경우 필요한 경우에만 사용하십시오(예: 거의 읽지 않는 로그 값이 포함된 버킷의 경우 또는 존재하지 않는 키의 헤드 또는 GET 작업의 경우). S3 FabricPool 버킷은 지원되지 않습니다.
"Read-after-new-write" 및 "Available" 정합성 보장을 사용합니다
HEAD 또는 GET 작업에서 "Read-after-new-write" 일관성을 사용하는 경우 StorageGRID는 다음과 같이 여러 단계로 조회를 수행합니다.
-
먼저 낮은 일관성을 사용하여 오브젝트를 찾습니다.
-
이 조회가 실패하면 다음 일관성 값에서 조회를 반복하여 강력한 글로벌 동작과 동일한 일관성을 유지합니다.
HEAD 또는 GET 작업에서 "Read-after-new-write" 일관성을 사용하지만 객체가 존재하지 않는 경우 객체 조회는 항상 강력한 글로벌 동작과 동일한 일관성을 유지합니다. 이 일관성을 유지하기 위해서는 각 사이트에서 개체 메타데이터의 여러 복사본을 사용할 수 있어야 하므로, 같은 사이트에 있는 두 개 이상의 스토리지 노드를 사용할 수 없는 경우 500개의 내부 서버 오류가 발생할 수 있습니다.
Amazon S3와 유사한 일관성 보장이 필요하지 않은 경우 일관성을 "사용 가능"으로 설정하여 헤드 및 가져오기 작업에 대한 이러한 오류를 방지할 수 있습니다. 두부 또는 GET 작업에서 "사용 가능한" 일관성을 사용하는 경우 StorageGRID는 최종 일관성을 제공합니다. 일관성 향상을 위해 실패한 작업을 다시 시도하지 않으므로 개체 메타데이터의 여러 복사본을 사용할 필요가 없습니다.
API 작업에 대한 일관성을 지정합니다
개별 API 작업에 대한 일관성을 설정하려면 작업에 대해 정합성 보장 값을 지원해야 하며 요청 헤더에서 일관성을 지정해야 합니다. 이 예제에서는 GetObject 작업의 일관성을 "Strong-site"로 설정합니다.
GET /bucket/object HTTP/1.1 Date: date Authorization: authorization name Host: host Consistency-Control: strong-site
PutObject 및 GetObject 작업 모두에 대해 동일한 일관성을 사용해야 합니다. |
버킷의 일관성을 지정합니다
버킷의 일관성을 설정하려면 StorageGRID 요청을 사용할 수 "버킷 일관성을 유지합니다"있습니다. 또는 Tenant Manager에서 수행할 수 "버킷의 일관성을 변경합니다"있습니다.
버킷의 일관성을 설정할 때 다음 사항에 유의하십시오.
-
버킷의 일관성을 설정하면 버킷의 오브젝트나 버킷 구성에 수행되는 S3 작업에 사용되는 일관성이 결정됩니다. 버킷 자체의 작동에는 영향을 미치지 않습니다.
-
개별 API 작업의 일관성이 버킷의 일관성을 재정의합니다.
-
일반적으로 버킷은 "Read-after-new-write"라는 기본 일관성을 사용해야 합니다. 요청이 올바르게 작동하지 않는 경우 가능한 경우 응용 프로그램 클라이언트 동작을 변경합니다. 또는 각 API 요청의 일관성을 지정하도록 클라이언트를 구성합니다. 버킷 수준의 일관성을 마지막 수단으로 설정합니다.
일관성 및 ILM 규칙이 데이터 보호에 영향을 미치는 방식
일관성을 선택하고 ILM 규칙을 따르는 것은 오브젝트가 보호되는 방식에 영향을 미칩니다. 이러한 설정은 상호 작용할 수 있습니다.
예를 들어, 오브젝트가 저장될 때 사용되는 일관성은 오브젝트 메타데이터의 초기 배치에 영향을 주고, ILM 규칙에 대해 선택된 수집 동작은 오브젝트 복사본의 초기 배치에 영향을 미칩니다. StorageGRID에서는 클라이언트 요청을 이행하기 위해 오브젝트의 메타데이터와 해당 데이터에 모두 액세스해야 하므로 일관성 및 수집 동작에 대해 일치하는 보호 수준을 선택하면 초기 데이터 보호 수준을 높이고 시스템 응답을 보다 예측 가능하게 할 수 있습니다.
ILM 규칙에 사용할 수 있는 항목은 다음과 "수집 옵션"같습니다.
- 이중 커밋
-
StorageGRID는 즉시 개체의 중간 복사본을 만들고 클라이언트에 성공을 반환합니다. ILM 규칙에 지정된 복사본은 가능한 경우 만들어집니다.
- 엄격한
-
ILM 규칙에 지정된 모든 복제본이 클라이언트에 반환되기 전에 만들어져야 합니다.
- 균형
-
StorageGRID는 수집 시 ILM 규칙에 지정된 모든 복제본을 만들려고 합니다. 이 작업이 불가능할 경우 중간 복제본이 만들어지고 성공이 클라이언트에 반환됩니다. ILM 규칙에 지정된 복사본은 가능한 경우 만들어집니다.
일관성과 ILM 규칙이 상호 작용하는 방법의 예
다음과 같은 ILM 규칙과 다음과 같은 일관성이 있는 2개 사이트 그리드가 있다고 가정합니다.
-
* ILM 규칙 *: 로컬 사이트와 원격 사이트에 각각 하나씩, 두 개의 오브젝트 복사본을 만듭니다. 엄격한 수집 동작을 사용합니다.
-
* Consistency *: 강력한 글로벌(오브젝트 메타데이터는 모든 사이트에 즉시 배포됨).
클라이언트가 오브젝트를 그리드에 저장할 때 StorageGRID는 오브젝트 복사본을 둘 다 만들고 메타데이터를 두 사이트에 분산한 다음 클라이언트에 성공을 반환합니다.
수집 성공 메시지가 표시된 시점에 객체가 손실로부터 완벽하게 보호됩니다. 예를 들어, 수집 직후 로컬 사이트가 손실되면 오브젝트 데이터와 오브젝트 메타데이터의 복사본이 원격 사이트에 계속 존재합니다. 개체를 완전히 검색할 수 있습니다.
대신 동일한 ILM 규칙과 강력한 사이트 일관성을 사용한 경우 개체 데이터가 원격 사이트에 복제된 후 개체 메타데이터가 이 사이트에 배포되기 전에 클라이언트에서 성공 메시지를 받을 수 있습니다. 이 경우 오브젝트 메타데이터의 보호 수준이 오브젝트 데이터의 보호 수준과 일치하지 않습니다. 수집 후 곧바로 로컬 사이트가 손실되면 오브젝트 메타데이터가 손실됩니다. 개체를 검색할 수 없습니다.
일관성과 ILM 규칙 간의 상호 관계는 복잡할 수 있습니다. 도움이 필요하면 NetApp에 문의하십시오.