보조 러너

Tier: Premium, Ultimate Offering: Self-managed

보조 사이트에 대한 Geo 프록시를 사용하면 gitlab-runner를 보조 사이트에 등록할 수 있습니다. 이는 기본 인스턴스의 부하를 분산시킵니다.

note
파이프라인의 첫 번째 단계에서 시작되는 작업은 거의 항상 Git 클론 요청이 기본 사이트로 전달됩니다. 이는 이러한 클론이 일반적으로 Git 데이터가 보조 사이트에 의해 복제되고 검증되기 전에 발생하기 때문입니다. 이후 단계도 보조 사이트에서 제공될 것이라는 보장은 없으며, 예를 들어 Git 변경 사항이 크거나 대역폭이 작거나 파이프라인 단계가 짧을 수 있습니다. 대부분의 경우, 파이프라인의 후속 단계는 보조 사이트에서 Git 데이터 를 제공합니다. 이슈 446176는 첫 번째 단계 클론 요청이 보조 사이트에서 제공될 가능성을 높이기 위한 개선을 제안합니다.

위치 인식 공용 URL(통합 URL)로 보조 러너 사용하기

위치 인식 DNS를 사용하면, 활성화된 기능 플래그가 추가 구성 없이 작동합니다. 보조 사이트와 동일한 위치에 러너를 설치하고 등록하면, 가장 가까운 사이트와 자동으로 통신하며, 보조 사이트의 데이터가 오래된 경우에만 기본 사이트로 프록시합니다.

별도의 URL로 보조 러너 사용하기

별도의 보조 URL을 사용할 경우, 러너는 다음과 같이 구성되어야 합니다:

  1. 보조 외부 URL로 등록해야 합니다.
  2. clone_url을 설정하여 보조 인스턴스의 external_url로 구성해야 합니다.

보조 러너를 사용한 계획된 장애 전환 처리

계획된 장애 전환을 실행할 때, 보조 러너는 로컬 인스턴스와 지속적으로 연결을 유지하려고 합니다. 이는 러너 용량을 감소시키며, 이를 고려해야 할 수 있습니다.

위치 인식 공용 URL로

위치 인식 DNS를 사용하면, 모든 러너가 자동으로 가장 가까운 Geo 사이트에 연결됩니다.

새로운 기본으로 장애 전환할 때:

  • 이전 기본이 여전히 DNS 레코드에 있는 동안, 이전 기본과 연결되었던 모든 러너는 여전히 이전 기본에서 작업을 수신하려고 시도합니다. 접근할 수 없으면, 러너는 이것을 감지합니다 및 인스턴스가 복원된 후에는 오랜 시간 동안 요청을 중지합니다.
  • 여러 보조 노드가 있는 경우, 초기 장애 전환 후 나머지 보조 노드는 새로운 기본으로 복제될 때까지 비정상 상태입니다. 이들에게 연결된 러너는 체크인을 할 수 없으며, 건강 검사도 시작됩니다.
  • Geo DNS 항목에서 비정상 노드를 제거하면, 러너는 다음으로 가까운 인스턴스를 선택합니다. 아키텍처에 따라, 이는 원하는 결과가 아닐 수 있으며, 감소된 상태에서 사이트를 압도할 수 있습니다.

이 문제를 완화하기 위해, 사이트가 100% 기능을 회복할 때까지 일부 러너를 일시 중지하거나 종료할 수 있습니다.

이 문제에 대해 걱정하지 않는다면, 이곳에서 할 일은 없습니다.

별도의 URL 사용 시

  • 이전 주 브랜치를 서비스를 재개하는 경우, 이전 주 브랜치 러너를 일시 중지하여 온라인으로 돌아올 때까지 대기하게 할 수 있습니다. 이는 헬스 체크가 시작되는 것을 방지합니다.

  • 이전 주 브랜치가 반환되지 않거나 일시적으로 러너 용량이 감소하는 것을 피하고 싶다면, 주 러너를 새 주 브랜치에 연결하도록 재구성해야 합니다.

  • 여러 개의 보조 주 브랜치를 사용할 경우, 러너는 일시 중지되거나 종료되거나 새 주 브랜치에 연결하도록 재구성되어야 하며, 이 과정에서 새 주 브랜치로 복제되어야 합니다.

러너 일시 중지

다음 방법을 사용하려면 관리자 접근 권한이 필요합니다:

  • 관리자 영역을 통해:

    1. 왼쪽 사이드바 하단에서 관리자를 선택합니다.

    2. 설정 > 러너를 선택합니다.

    3. 일시 중지할 러너를 식별합니다.

    4. 일시 중지할 각 러너 옆의 pause 버튼을 선택합니다.

    5. 장애 조치가 완료된 후, 이전 단계에서 일시 중지한 러너를 다시 활성화합니다.

  • 러너 API 사용:

    1. 관리자 접근 권한이 있는 개인 접근 토큰을 가져오거나 생성합니다.

    2. 러너 목록을 가져옵니다. API 사용으로 목록을 필터링할 수 있습니다.

    3. 일시 중지할 러너를 식별하고 그들의 id를 기록합니다.

    4. 각 러너를 일시 중지하려면 API 문서를 따릅니다.

    5. 장애 조치가 완료된 후, paused=false로 설정하여 API를 사용해 러너 목록을 다시 활성화합니다.