- 새 Geo 노드 만들기
- 모든 Geo 노드에 대한 구성 내용 검색
- 특정 Geo 노드에 대한 구성 내용 검색
- Geo 노드 편집
- Geo 노드 삭제
- Geo 노드 복구
- 모든 Geo 노드에 대한 상태 검색
- 특정 Geo 노드에 대한 상태 검색
- 현재 노드에서 발생한 프로젝트 동기화 또는 확인 실패 사항 검색
Geo 노드 API (폐기됨)
Tier: 프리미엄, 얼티메이트
Offering: Self-managed
Geo Nodes API는 GitLab 16.0에서 폐기되었으며 API의 v5에서 제거될 예정입니다. 대신 Geo Sites API를 사용하십시오. 이 변경은 파괴적인 변경입니다.
Geo 노드 엔드포인트와 상호 작용하려면 관리자로 인증해야 합니다.
새 Geo 노드 만들기
새 Geo 노드를 만듭니다.
POST /geo_nodes
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes" \
--request POST \
-d "name=himynameissomething" \
-d "url=https://another-node.example.com/"
속성 | 타입 | 필수여부 | 설명 |
---|---|---|---|
primary
| boolean | 아니요 | 이 노드가 기본 노드여야 하는지 여부를 지정합니다. 기본값은 false입니다. |
enabled
| boolean | 아니요 | Geo 노드가 활성화되어 있는지 여부를 나타내는 플래그입니다. 기본값은 true입니다. |
name
| string | 예 | Geo 노드의 고유 식별자입니다. gitlab.rb 에서 설정된 경우 geo_node_name 과 일치해야 하며, 그렇지 않은 경우 external_url 과 일치해야 합니다.
|
url
| string | 예 | 사용자가 볼 수 있는 Geo 노드의 URL입니다. |
internal_url
| string | 아니요 | 보조 노드가 연락해야 하는 기본 노드에서 정의된 URL입니다. 설정되지 않은 경우 url 을 반환합니다.
|
files_max_capacity
| integer | 아니요 | 이 보조 노드의 LFS/첨부 파일 백필의 최대 동시성을 제어합니다. 기본값은 10입니다. |
repos_max_capacity
| integer | 아니요 | 이 보조 노드의 저장소 백필의 최대 동시성을 제어합니다. 기본값은 25입니다. |
verification_max_capacity
| integer | 아니요 | 이 노드의 저장소 확인의 최대 동시성을 제어합니다. 기본값은 100입니다. |
container_repositories_max_capacity
| integer | 아니요 | 이 노드의 컨테이너 저장소 동기화의 최대 동시성을 제어합니다. 기본값은 10입니다. |
sync_object_storage
| boolean | 아니요 | 보조 Geo 노드가 객체 저장소에서 블롭을 복제해야 하는지 여부를 나타내는 플래그입니다. 기본값은 false입니다. |
selective_sync_type
| string | 아니요 | 특정 그룹 또는 샤드에만 동기화를 제한합니다. 유효한 값: "namespaces" , "shards" , 또는 null .
|
selective_sync_shards
| array | 아니요 |
selective_sync_type 이 shards 인 경우 프로젝트가 동기화되는 저장소 저장소입니다.
|
selective_sync_namespace_ids
| array | 아니요 |
selective_sync_type 이 namespaces 인 경우 동기화해야 하는 그룹의 ID입니다.
|
minimum_reverification_interval
| integer | 아니요 | 저장소 확인이 유효한 간격(일)입니다. 만료되면 다시 확인됩니다. 이것은 보조 노드에 설정된 경우 영향을 미치지 않습니다. |
예시 응답:
{
"id": 3,
"name": "Test Node 1",
"url": "https://secondary.example.com/",
"internal_url": "https://secondary.example.com/",
"primary": false,
"enabled": true,
"current": false,
"files_max_capacity": 10,
"repos_max_capacity": 25,
"verification_max_capacity": 100,
"selective_sync_type": "namespaces",
"selective_sync_shards": [],
"selective_sync_namespace_ids": [1, 25],
"minimum_reverification_interval": 7,
"container_repositories_max_capacity": 10,
"sync_object_storage": false,
"clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/sites/3/edit",
"web_geo_projects_url": "https://secondary.example.com/admin/geo/projects",
"web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/3/replication/lfs_objects",
"_links": {
"self": "https://primary.example.com/api/v4/geo_nodes/3",
"status": "https://primary.example.com/api/v4/geo_nodes/3/status",
"repair": "https://primary.example.com/api/v4/geo_nodes/3/repair"
}
}
web_geo_projects_url
속성은 종료 단계에 있습니다. GitLab 14.9에서 폐기됩니다.모든 Geo 노드에 대한 구성 내용 검색
GET /geo_nodes
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes"
예시 응답:
[
{
"id": 1,
"name": "us-node",
"url": "https://primary.example.com/",
"internal_url": "https://internal.example.com/",
"primary": true,
"enabled": true,
"current": true,
"files_max_capacity": 10,
"repos_max_capacity": 25,
"container_repositories_max_capacity": 10,
"verification_max_capacity": 100,
"selective_sync_type": "namespaces",
"selective_sync_shards": [],
"selective_sync_namespace_ids": [1, 25],
"minimum_reverification_interval": 7,
"clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit",
"_links": {
"self": "https://primary.example.com/api/v4/geo_nodes/1",
"status":"https://primary.example.com/api/v4/geo_nodes/1/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"
}
},
{
"id": 2,
"name": "cn-node",
"url": "https://secondary.example.com/",
"internal_url": "https://secondary.example.com/",
"primary": false,
"enabled": true,
"current": false,
"files_max_capacity": 10,
"repos_max_capacity": 25,
"container_repositories_max_capacity": 10,
"verification_max_capacity": 100,
"selective_sync_type": "namespaces",
"selective_sync_shards": [],
"selective_sync_namespace_ids": [1, 25],
"minimum_reverification_interval": 7,
"sync_object_storage": true,
"clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/sites/2/edit",
"web_geo_projects_url": "https://secondary.example.com/admin/geo/projects",
"web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/2/replication/lfs_objects",
"_links": {
"self":"https://primary.example.com/api/v4/geo_nodes/2",
"status":"https://primary.example.com/api/v4/geo_nodes/2/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/2/repair"
}
}
]
경고:
web_geo_projects_url
속성은 단종 절차에 있습니다. deprecated
GitLab 14.9에서 사라질 예정입니다.
특정 Geo 노드에 대한 구성 내용 검색
GET /geo_nodes/:id
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/1"
예시 응답:
{
"id": 1,
"name": "us-node",
"url": "https://primary.example.com/",
"internal_url": "https://primary.example.com/",
"primary": true,
"enabled": true,
"current": true,
"files_max_capacity": 10,
"repos_max_capacity": 25,
"container_repositories_max_capacity": 10,
"verification_max_capacity": 100,
"selective_sync_type": "namespaces",
"selective_sync_shards": [],
"selective_sync_namespace_ids": [1, 25],
"minimum_reverification_interval": 7,
"clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit",
"_links": {
"self": "https://primary.example.com/api/v4/geo_nodes/1",
"status":"https://primary.example.com/api/v4/geo_nodes/1/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"
}
}
Geo 노드 편집
기존 Geo 노드의 설정을 업데이트합니다.
PUT /geo_nodes/:id
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 | 예 | Geo 노드의 ID입니다. |
enabled
| 부울 | 아니요 | Geo 노드가 활성화되었는지를 나타내는 플래그입니다. |
name
| 문자열 | 아니요 | Geo 노드의 고유 식별자입니다. gitlab.rb 에 설정된 geo_node_name 과 일치해야 하며, 그렇지 않은 경우 external_url 과 일치해야 합니다.
|
url
| 문자열 | 아니요 | Geo 노드의 사용자용 URL입니다. |
internal_url
| 문자열 | 아니요 | 보조 노드가 연락을 취하기 위해 주 노드에서 정의된 URL입니다. 설정되지 않은 경우 url 을 반환합니다.
|
files_max_capacity
| 정수 | 아니요 | 이 보조 노드에 대한 최대 동시성 LFS/첨부 파일 backfill을 제어합니다. |
repos_max_capacity
| 정수 | 아니요 | 이 보조 노드에 대한 최대 동시성 리포지토리 backfill을 제어합니다. |
verification_max_capacity
| 정수 | 아니요 | 이 노드에 대한 검증의 최대 동시성을 제어합니다. |
container_repositories_max_capacity
| 정수 | 아니요 | 이 노드에 대한 동시성 컨테이너 리포지토리 동기화를 제어합니다. |
sync_object_storage
| 부울 | 아니요 | 보조 Geo 노드가 객체 저장소의 blob을 복제해야 하는지 여부를 나타내는 플래그입니다. |
selective_sync_type
| 문자열 | 아니요 | 특정 그룹이나 샤드에 대해 동기화를 제한합니다. 유효한 값: "namespaces" , "shards" , 또는 null .
|
selective_sync_shards
| 배열 | 아니요 |
selective_sync_type == shards 인 경우 동기화되는 프로젝트의 저장소 저장소입니다.
|
selective_sync_namespace_ids
| 배열 | 아니요 |
selective_sync_type == namespaces 일 때 동기화해야 하는 그룹의 ID입니다.
|
minimum_reverification_interval
| 정수 | 아니요 | 리포지토리 검증이 유효한 간격(일)입니다. 만료되면 다시 확인됩니다. 이 속성은 보조 노드에 설정되어 있을 때는 아무 영향도 미치지 않습니다. |
예시 응답:
{
"id": 1,
"name": "cn-node",
"url": "https://secondary.example.com/",
"internal_url": "https://secondary.example.com/",
"primary": false,
"enabled": true,
"current": true,
"files_max_capacity": 10,
"repos_max_capacity": 25,
"container_repositories_max_capacity": 10,
"verification_max_capacity": 100,
"selective_sync_type": "namespaces",
"selective_sync_shards": [],
"selective_sync_namespace_ids": [1, 25],
"minimum_reverification_interval": 7,
"sync_object_storage": true,
"clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/sites/2/edit",
"web_geo_projects_url": "https://secondary.example.com/admin/geo/projects",
"web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/2/replication/lfs_objects",
"_links": {
"self":"https://primary.example.com/api/v4/geo_nodes/2",
"status":"https://primary.example.com/api/v4/geo_nodes/2/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/2/repair"
}
}
경고:
web_geo_projects_url
속성은 단종 절차에 있습니다. deprecated
GitLab 14.9에서 사라질 예정입니다.
Geo 노드 삭제
Geo 노드를 삭제합니다.
DELETE /geo_nodes/:id
속성 | 유형 | 필수여부 | 설명 |
---|---|---|---|
id
| 정수 | 예 | Geo 노드의 ID입니다. |
Geo 노드 복구
Geo 노드의 OAuth 인증을 복구합니다.
이 작업은 본래의 Geo 노드에 대해서만 실행할 수 있습니다.
POST /geo_nodes/:id/repair
예시 응답:
{
"id": 1,
"name": "us-node",
"url": "https://primary.example.com/",
"internal_url": "https://primary.example.com/",
"primary": true,
"enabled": true,
"current": true,
"files_max_capacity": 10,
"repos_max_capacity": 25,
"container_repositories_max_capacity": 10,
"verification_max_capacity": 100,
"clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit",
"_links": {
"self": "https://primary.example.com/api/v4/geo_nodes/1",
"status":"https://primary.example.com/api/v4/geo_nodes/1/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"
}
}
모든 Geo 노드에 대한 상태 검색
GET /geo_nodes/status
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/status"
예시 응답:
[
{
"geo_node_id": 1,
"healthy": true,
"health": "Healthy",
"health_status": "Healthy",
...
},
{
"geo_node_id": 2,
"healthy": true,
"health": "Healthy",
"health_status": "Healthy",
...
}
]
특정 Geo 노드에 대한 상태 검색
GET /geo_nodes/:id/status
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/2/status"
예시 응답:
{
"geo_node_id": 2,
"healthy": true,
"health": "Healthy",
"health_status": "Healthy",
"missing_oauth_application": false,
"db_replication_lag_seconds": 0,
"lfs_objects_count": 5,
"lfs_objects_checksum_total_count": 5,
"lfs_objects_checksummed_count": 5,
"lfs_objects_checksum_failed_count": 0,
"lfs_objects_synced_count": null,
"lfs_objects_failed_count": null,
"lfs_objects_registry_count": null,
"lfs_objects_verification_total_count": null,
"lfs_objects_verified_count": null,
"lfs_objects_verification_failed_count": null,
"lfs_objects_synced_in_percentage": "0.00%",
"lfs_objects_verified_in_percentage": "0.00%",
...
"project_repositories_synced_in_percentage": "100.00%",
"project_repositories_verified_in_percentage": "100.00%"
}
참고:
health_status
매개변수는 “Healthy” 또는 “Unhealthy” 상태 여야 하지만, health
매개변수는 비어 있거나 “Healthy”이거나 실제 오류 메시지가 포함될 수 있습니다.
현재 노드에서 발생한 프로젝트 동기화 또는 확인 실패 사항 검색
이 기능은 보조 노드에서만 작동합니다.
GET /geo_nodes/current/failures
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
type
| 문자열 | 아니요 | 실패한 객체의 유형 (repository /wiki )
|
failure_type
| 문자열 | 아니요 | 실패 유형 (sync /checksum_mismatch /verification )
|
이 엔드포인트는 페이징을 사용합니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/current/failures"
예시 응답:
[
{
"project_id": 3,
"last_repository_synced_at": "2017-10-31 14:25:55 UTC",
"last_repository_successful_sync_at": "2017-10-31 14:26:04 UTC",
"last_wiki_synced_at": "2017-10-31 14:26:04 UTC",
"last_wiki_successful_sync_at": "2017-10-31 14:26:11 UTC",
"repository_retry_count": null,
"wiki_retry_count": 1,
"last_repository_sync_failure": null,
"last_wiki_sync_failure": "Error syncing Wiki repository",
"last_repository_verification_failure": "",
"last_wiki_verification_failure": "",
"repository_verification_checksum_sha": "da39a3ee5e6b4b0d32e5bfef9a601890afd80709",
"wiki_verification_checksum_sha": "da39a3ee5e6b4b0d3255bfef9ef0189aafd80709",
"repository_checksum_mismatch": false,
"wiki_checksum_mismatch": false
}
]