보조 러너

Tier: Premium, Ultimate Offering: Self-managed

보조 사이트를 위한 Geo 프록시를 사용하면 gitlab-runner를 보조 사이트에 등록할 수 있습니다. 이렇게 함으로써 주 사이트의 부하가 줄어듭니다.

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

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

위치 인식 공용 URL을 사용하면, 피처 플래그가 활성화된 상태로 아무 추가 구성 없이 작동합니다. 동일한 위치에 있는 보조 사이트에 러너를 설치하고 등록한 후, 가장 가까운 사이트와 자동으로 통신하며, 보조 사이트가 오래될 경우에만 주 사이트로 프록시를 합니다.

별도의 URL을 사용하여 보조 러너 사용

별도의 보조 URL을 사용하여, 러너는 다음과 같아야 합니다:

  1. 보조 외부 URL로 등록되어야 합니다.
  2. 보조 인스턴스의 external_url로 설정된 clone_url을 가져와야 합니다.

보조 러너로 계획된 장애 조치 다루기

계획된 장애 조치를 수행하는 경우, 보조 러너는 지역 인스턴스와 대화하려고 시도합니다. 이는 러너 용량이 감소되는 결과를 낳으며 고려해야할 사항일 수 있습니다.

위치 인식 공용 URL을 사용하는 경우

위치 인식 공용 URL을 사용할 때, 모든 러너는 자동으로 가장 가까운 Geo 사이트에 연결됩니다.

새로운 주 사이트로 장애 조치를 수행하는 경우:

  • 이전 주 사이트가 DNS 레코드에 남아 있는 동안, 이전에 이전 주 사이트에 연결되어 있던 러너들은 여전히 이전 주 사이트에서 작업을 수행하려고 시도합니다. 이 사이트에 액세스할 수 없다면, 러너는 이를 감지하고 인스턴스가 다시 돌아오고 나서 오랜 기간 동안 요청을 중단합니다.
  • 여러 보조 노드가 있다면, 초기 장애 조치 이후 나머지 보조 노드는 복제될 때까지 비정상적인 상태입니다. 이들에 연결된 러너는 이후에 확인을 할 수 없으며, 이들의 상태 확인도 실행됩니다.
  • Geo DNS 항목에서 비정상적인 노드를 제거하면, 러너는 다음으로 가장 가까운 인스턴스를 선택합니다. 아키텍처에 따라, 이는 원하는 결과가 아닐 수 있습니다. 왜냐하면 축소된 상태에서 사이트를 압도할 수 있기 때문입니다.

위의 문제들을 해소하기 위해 사이트가 100% 운영 상태로 돌아올 때까지 어떤 조치가 필요할 수 있습니다.

이러한 문제에 대해 걱정하지 않는다면, 여기에는 할 일이 없습니다.

별도의 URL을 사용하는 경우

  • 이전 주 사이트로 복귀하는 경우, 이전 주 사이트의 러너를 일시 중지할 수 있습니다. 이렇게 하면 상태 확인이 시작되지 않습니다.
  • 이전 주 사이트가 복귀하지 않거나 임시적으로 줄어든 러너 용량을 피하고자 하는 경우, 주 러너는 새로운 주 사이트에 연결하도록 재구성되어야 합니다.
  • 여러 보조가 사용 중이라면, 러너는 일시 중지, 종료, 또는 복제 중에 새로운 주 사이트에 연결하도록 재구성되어야 합니다.

러너 일시 중지

다음 방법 중 하나를 사용하려면 관리자 액세스 권한이 있어야 합니다:

  • 관리 영역을 통해:
    1. 왼쪽 사이드바에서 맨 아래에 있는 관리 영역을 선택합니다.
    2. 설정 > 러너를 선택합니다.
    3. 일시 중지하려는 러너를 식별합니다.
    4. 각 러너 옆의 일시 중지 버튼을 선택합니다.
    5. 이전 단계에서 일시 중지한 러너를 다시 시작하기 전까지, 일시 중지한 러너의 일시 중지를 해제합니다.
  • Runners API를 사용:
    1. 관리자 액세스 권한으로 개인 액세스 토큰을 얻거나 생성합니다.
    2. 러너 디렉터리을 가져옵니다. API를 사용하여 디렉터리을 필터링할 수 있습니다.
    3. 일시 중지하려는 러너를 식별하고, 그들의 id를 메모합니다.
    4. 각 러너를 일시 중지하기 위해 API 문서에 따릅니다.
    5. 장애 조치가 완료되면, API를 사용하여 일시 중지한 러너의 일시 중지를 해제합니다. (paused=false으로 설정)