상태 확인 만들기

Google Cloud Platform(GCP)은 VM 인스턴스가 트래픽에 제대로 응답하는지 확인하는 상태 확인 메커니즘을 제공합니다. 이 문서에서는 부하 분산기에 대한 상태 확인을 만들고 사용하는 방법을 설명합니다.

이 페이지는 상태 확인 개념에 익숙하며 GCP 방화벽 규칙을 이해하는 사용자를 대상으로 합니다.

상태 확인 카테고리, 프로토콜, 포트

GCP는 카테고리프로토콜 별로 상태 확인을 구성합니다.

상태 확인에는 상태 확인이전 상태 확인이라는 두 가지 카테고리가 있습니다. 각 카테고리는 서로 다른 프로토콜 집합과 상태 확인에 사용되는 포트 지정 수단을 지원합니다.

대부분의 부하 분산기는 이전 상태 확인이 아닌 상태 확인을 사용하지만 네트워크 부하 분산에 대해서는 이전 상태 확인을 사용해야 합니다. 상태 확인 개념 페이지에서 상태 확인 선택하기를 참조하여 적절한 카테고리, 프로토콜, 포트 지정 방법을 확인합니다.

상태 확인을 위해 선택한 프로토콜은 부하 분산기에서 사용하는 프로토콜과 일치할 필요가 없으며 경우에 따라서는 일치가 불가능합니다. 자세한 내용은 프로토콜 및 부하 분산기를 참조하세요.

'상태 확인'이라는 용어는 이전 상태 확인을 가리키지 않습니다. 이 문서에서 이전 상태 확인은 '이전 상태 확인'이라고 명시적으로 언급됩니다.

상태 확인 만들기

GCP를 사용하면 GCP Console에서 부하 분산기의 백엔드 구성을 완료할 때 상태 확인을 만들거나 선택할 수 있습니다.

GCP Console에서 부하 분산기 구성과 별도로 상태 확인을 만들 수도 있습니다. 이는 상태 확인을 먼저 만들어야 하거나 여러 부하 분산기에 대해 상태 확인을 사용해야 하는 경우에 유용합니다. GCP Console, gcloud 명령줄 도구, 또는 REST API를 사용하여 상태 확인을 만들 수 있습니다. 이 섹션의 배경 정보를 검토한 후 상태 확인 만들기 및 수정으로 넘어갑니다.

네트워크 부하 분산기는 GCP Console에서 네트워크 부하 분산기의 백엔드 구성을 완료할 때 만들거나 선택할 수 있는 이전 상태 확인을 사용해야 합니다. 이전 상태 확인을 별도로 만들려면 gcloud 명령줄 도구 또는 REST API를 사용해야 합니다. 자세한 내용은 이전 상태 확인을 참조하세요.

모든 상태 확인에 사용되는 플래그

다음 플래그는 프로토콜에 관계없이 모든 상태 확인에 공통입니다.

gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \
    --description=DESCRIPTION \
    --check-interval=CHECK_INTERVAL \
    --timeout=TIMEOUT \
    --healthy-threshold=HEALTHY_THRESHOLD \
    --unhealthy-threshold=UNHEALTHY_THRESHOLD \
    ...additional flags

각 항목의 의미는 다음과 같습니다.

  • PROTOCOL은 상태 확인에 사용되는 프로토콜을 정의합니다. 유효한 옵션은 http, https, http2, ssl, tcp입니다.
  • HEALTH_CHECK_NAME은 상태 확인의 이름입니다. 프로젝트 내에서 각 상태 확인에는 고유한 이름이 있어야 합니다.
  • DESCRIPTION은 선택사항인 설명입니다.
  • CHECK_INTERVAL은 하나의 상태 확인 프로브 시스템의 연결이 시작된 후부터 다음 프로브 시작까지 걸리는 시간입니다. 단위는 초입니다. 생략할 경우 GCP는 5s(5초)를 값으로 사용합니다.
  • TIMEOUT은 GCP가 프로브에 대한 응답을 대기하는 시간입니다. TIMEOUT 값은 CHECK_INTERVAL보다 작거나 같아야 합니다. 단위는 초입니다. 생략할 경우 GCP는 5s(5초)를 값으로 사용합니다.
  • HEALTHY_THRESHOLDUNHEALTHY_THRESHOLD는 VM 인스턴스가 정상 또는 비정상으로 간주되려면 성공하거나 실패해야 하는 연속 프로브의 수를 지정합니다. 둘 중 하나를 생략하면 GCP는 기본 임계값 2를 사용합니다.
  • 추가 플래그는 포트를 지정하기 위한 기타 플래그 및 PROTOCOL 전용 옵션입니다. 이러한 플래그는 다음 섹션에서 설명할 것입니다.

포트 사양 플래그

상태 확인을 위해서는 프로토콜 외에 포트도 지정해야 합니다. 포트를 지정하는 방법은 부하 분산기 유형 및 백엔드 서비스에서 사용하는 백엔드 유형에 따라 다릅니다. 다음 표는 유효한 부하 분산기 및 백엔드 조합에 대한 포트 사양 옵션을 보여줍니다. 표에서 인스턴스 그룹이라는 용어는 비관리형 인스턴스 그룹, 관리형 인스턴스 그룹, 또는 관리형 영역 인스턴스 그룹을 의미합니다.

상태 확인은 한 가지 유형의 포트 사양만 사용할 수 있습니다.

부하 분산기 백엔드 유형 포트 사양
내부 TCP/UDP 부하 분산 인스턴스 그룹 다음 옵션1 중 하나를 선택하세요.
--port: 1에서 65535 사이의 숫자로 포트를 지정합니다.
--port-name: 인스턴스 그룹이 내보낸 이름이 지정된 포트를 지정합니다.
내부 부하 분산기의 백엔드 서비스에는 어떠한 종류의 포트 사양도 없으므로 내부 부하 분산기와 연결된 상태 검사에 --use-serving-port 플래그를 사용할 수 없습니다.
내부 HTTP(S) 부하 분산
TCP 프록시 부하 분산
SSL 프록시 부하 분산
HTTP(S) 부하 분산
네트워크 엔드포인트 그룹 다음 옵션1 중 하나를 선택하세요.
--port: 1에서 65535 사이의 숫자로 포트를 지정합니다.
--use-serving-port2: 네트워크 엔드포인트 그룹의 각 엔드포인트에서 지정한 포트를 사용합니다.
인스턴스 그룹 다음 옵션1 중 하나를 선택하세요.
--port: 1에서 65535 사이의 숫자로 포트를 지정합니다.
--port-name: 인스턴스 그룹이 내보낸 이름이 지정된 포트를 지정합니다.
--use-serving-port2: 백엔드 서비스가 사용하도록 구성된 동일한 인스턴스 그룹 이름이 지정된 포트를 사용합니다.

1포트 사양 조합은 다음과 같은 방식으로 해결됩니다.

  • --use-serving-port가 지정되면 --port, --port-name은 모두 지정될 수 없습니다.
  • --port--port-name이 모두 지정된 경우 --port가 우선합니다.
  • 셋 다 지정되지 않았을 경우 기본값은 --port=80입니다.

2베타: --use-serving-port가 필요한 경우 다음 베타 gcloud 명령어를 사용해야합니다.

HTTP, HTTPS, HTTP/2 상태 확인을 위한 선택적 플래그

공통 플래그 및 포트 스펙 외에도 HTTP, HTTPS, HTTP/2 상태 확인에 다음 선택적 플래그를 사용할 수 있습니다. 이 예시에서는 기본 간격, 시간 제한, 상태 임계값 기준으로 포트 80을 사용하여 hc-http-port-80이라는 이름의 HTTP 상태 확인을 만듭니다.

gcloud compute health-checks create http hc-http-port-80 \
    --description="Simple HTTP port 80 health check" \
    --check-interval=5s \
    --timeout=5s \
    --healthy-threshold=2 \
    --unhealthy-threshold=2 \
    --port=80 \
    --host=HOST \
    --proxy-header=PROXY_HEADER \
    --request-path=REQUEST_PATH \
    --response=RESPONSE
  • 프로토콜은 http(이 예시의 경우), https, 또는 http2가 될 수 있습니다.
  • HOST는 호스트 HTTP 헤더 제공을 허용합니다. 생략하면 부하 분산기 전달 규칙의 IP 주소가 사용됩니다.
  • PROXY_HEADERNONE 또는 PROXY_V1 중 하나여야 합니다. 생략하면 GCP는 NONE을 사용합니다. PROXY_V1 값은 헤더 PROXY UNKNOWN\r\n을 추가합니다.
  • REQUEST_PATH는 GCP가 상태 확인 요청을 보낼 때 사용하는 URL 경로를 지정합니다. 생략하면 상태 확인 요청이 /로 전송됩니다.
  • RESPONSE는 선택적 예상 응답을 정의합니다. 응답 문자열은 다음 규칙을 따라야 합니다.
    • 응답 문자열은 ASCII 문자, 숫자, 공백으로 구성되어야 합니다.
    • 응답 문자열의 최대 길이는 1,024자입니다.
    • 와일드 카드 일치는 지원되지 않습니다.
    • 콘텐츠 기반 검사는 도치를 지원하지 않습니다. 예를 들어 HAProxy의 ! 는 지원되지 않습니다.

GCP는 수신된 응답 본문의 첫 번째 1,024바이트의 아무 곳에서 예상되는 응답 문자열을 발견하고 HTTP 상태가 200(OK)인 경우 프로브는 성공한 것으로 간주됩니다.

--request-path--response 플래그는 상태 확인 프로브의 성공 기준을 수정합니다.

SSL 및 TCP 상태 확인을 위한 선택적 플래그

공통 플래그 및 포트 사양 외에도 다음 선택적 플래그를 SSL 및 TCP 상태 확인에 사용할 수 있습니다. 이 예시에서는 기본 간격, 시간 제한, 상태 임계값 기준으로 포트 3268을 사용하여 hc-tcp-3268라는 이름의 TCP 상태 확인을 만듭니다.

gcloud compute health-checks create tcp hc-tcp-3268 \
    --description="Health check: TCP 3268" \
    --check-interval=5s \
    --timeout=5s \
    --healthy-threshold=2 \
    --unhealthy-threshold=2 \
    --port=3268 \
    --proxy-header=PROXY_HEADER \
    --request=REQUEST_STRING \
    --response=RESPONSE_STRING
  • 프로토콜은 tcp(이 예시의 경우) 또는 ssl이 될 수 있습니다.
  • PROXY_HEADERNONE 또는 PROXY_V1 중 하나여야 합니다. 생략하면 GCP는 NONE을 사용합니다. PROXY_V1 값은 헤더 PROXY UNKNOWN\r\n을 추가합니다.
  • REQUEST_STRING: TCP 또는 SSL 세션이 설정되면 최대 1,024 ASCII까지의 문자열을 전송할 수 있습니다.
  • RESPONSE_STRING: 예상 응답에 최대 1,024ASCII의 문자열을 제공할 수 있습니다.

--request--response 플래그는 상태 확인 프로브의 성공 기준을 수정합니다. --response 플래그를 단독으로 또는 --request 플래그와 함께 사용하는 경우 반환되는 응답은 예상된 응답 문자열과 정확하게 일치해야 합니다.

상태 확인 만들기 및 수정

상태 확인을 수정하여 상태 확인을 이전 상태 검사로 또는 그 반대로 변환할 수 없습니다.

Console

GCP Console은 상태 확인과 이전 상태 확인을 모두 나열합니다. 상태 확인 및 이전 상태 확인을 편집할 수 있습니다. 하지만 GCP Console의 상태 확인 페이지에서는 이전 상태 확인을 만들 수 없습니다.

상태 확인을 만들려면 다음 단계를 따르세요.

  1. Google Cloud Platform Console에서 상태 확인 페이지로 이동합니다.
    상태 확인 페이지로 이동
  2. 상태 확인 만들기를 클릭합니다.
  3. 상태 확인 만들기 페이지에서 다음 정보를 입력합니다.
    • 이름: 상태 확인에 이름을 입력합니다.
    • 설명: 원하는 경우 설명을 제공합니다.
    • 프로토콜 : 상태 확인 프로토콜을 선택합니다.
    • 포트: 포트 번호를 입력합니다.
    • 프록시 프로토콜: 선택적으로 상태 확인 프로브 시스템의 요청에 프록시 헤더를 추가 할 수 있습니다.
    • 요청 경로 및 응답: HTTP, HTTPS, HTTP2 프로토콜에 대해 연결할 상태 확인 프로브 시스템의 URL 경로를 선택적으로 제공 할 수 있습니다. 자세한 정보는 HTTP, HTTPS, HTTP/2 상태 확인에 대한 선택적 플래그를 참조하세요.
    • 요청응답: TCP 및 SSL 프로토콜에 대해 전송할 ASCII 텍스트 문자열과 예상 텍스트 응답 문자열을 지정할 수 있습니다. 자세한 내용은 SSL 및 TCP 상태 확인에 대한 선택적 플래그를 참조하세요.
    • 확인 간격: 한 프로브의 시작에서 다음 프로브의 시작까지의 시간을 정의합니다.
    • 제한 시간: 프로브에 대한 GCP 응답 대기 시간을 정의합니다. 해당 값은 확인 간격보다 작거나 같아야 합니다.
    • 정상 기준: VM 인스턴스가 정상으로 간주되도록 하기 위해 성공해야 하는 연속 프로브의 수를 정의합니다.
    • 비정상 기준: VM 인스턴스가 비정상으로 간주되도록 하기 위해 실패해야 하는 연속 프로브의 수를 정의합니다.
  4. 만들기를 클릭합니다.

상태 확인을 수정하려면 다음 단계를 따르세요.

  1. Google Cloud Platform Console에서 상태 확인 페이지로 이동합니다.
    상태 확인 페이지로 이동
  2. 세부 정보를 보려면 상태 확인을 클릭하세요.
  3. 상태 확인을 수정해야 하는 경우 편집을 클릭하고 다음을 수행합니다.
    • 필요에 따라 매개변수를 변경합니다.
    • 저장을 클릭합니다.

gcloud

  1. 상태 확인을 표시하려면 다음 gcloud 명령어를 사용하세요.

    gcloud compute health-checks list
    
  2. 상태 확인을 확인한 다음 HEALTH_CHECK_NAME을 상태 확인의 이름으로 대체한 적절한 gcloud 명령어를 사용하여 상태 확인을 설명합니다.

    gcloud compute health-checks describe HEALTH_CHECK_NAME
    
  3. 상태 확인을 수정하려면 HEALTH_CHECK_NAME을 해당 이름으로 대체한 적절한 gcloud 명령어를 사용합니다. 상태 확인 이름과 프로토콜을 제외하고 공통 플래그, 포트 사양 플래그, 선택적 플래그를 수정할 수 있습니다. gcloud compute health-checks update 명령어로 상태 확인을 수정하면 생략된 플래그에 대해 사전 구성된 설정이 보존됩니다. 다음 명령어는 검사 간격, 시간 제한, 요청 경로를 변경하여 상태 확인을 수정한 예시입니다.

    gcloud compute health-checks update http hc-http-port-80 \
        --check-interval=20s \
        --timeout=15s \
        --request-path="/health"
    

API

  1. healthChecks.list API 호출로 상태 확인을 나열할 수 있습니다.

  2. 상태 확인의 이름을 알면 healthChecks.get API 호출을 사용하여 구성 세부정보를 가져올 수 있습니다.

  3. 상태 확인을 수정해야 하는 경우 다음 API 호출을 사용합니다.

이전 상태 확인

이전 상태 확인 만들기

이 섹션에서는 네트워크 부하 분산기에 필요한 이전 상태 확인을 만드는 방법을 설명합니다.

Console

GCP Console의 상태 확인 페이지에는 상태 확인과 이전 상태 확인이 모두 표시되지만 GCP Console에서는 이전 상태 확인을 만들 수 없습니다. GCP Console의 네트워크 부하 분산기 페이지를 사용해야지만 이전 상태 확인을 만들 수 있습니다.

gcloud

네트워크 부하 분산기의 이전 상태 확인을 만들려면 다음 gcloud 명령어를 사용합니다.

gcloud compute LEGACY_CHECK_TYPE create LEGACY_HEALTH_CHECK_NAME \
    --description=DESCRIPTION \
    --check-interval=CHECK_INTERVAL \
    --timeout=TIMEOUT \
    --healthy-threshold=HEALTHY_THRESHOLD \
    --unhealthy-threshold=UNHEALTHY_THRESHOLD \
    --host=HOST \
    --port=PORT \
    --request-path=REQUEST_PATH

각 항목의 의미는 다음과 같습니다.

  • LEGACY_CHECK_TYPE은 이전 HTTP 상태 확인을 위한 http-health-checks 또는 이전 HTTPS 상태 확인을 위한 https-health-checks입니다. 네트워크 부하 분산기의 이전 상태 확인을 만드는 경우 http-health-checks를 사용해야 합니다.
  • LEGACY_HEALTH_CHECK_NAME은 이전 상태 확인의 이름입니다. 프로젝트 내에서 각 이전 상태 확인에는 고유한 이름이 있어야 합니다.
  • DESCRIPTION은 선택사항인 설명입니다.
  • CHECK_INTERVAL은 한 프로브의 시작에서 다음 프로브의 시작까지의 시간을 정의합니다. 단위는 초입니다. 생략할 경우 GCP는 5s(5초)를 값으로 사용합니다.
  • TIMEOUT은 프로브에 대한 GCP의 응답 대기 시간입니다. TIMEOUT 값은 CHECK_INTERVAL보다 작거나 같아야 합니다. 단위는 초입니다. 생략할 경우 GCP는 5s(5초)를 값으로 사용합니다.
  • HEALTHY_THRESHOLDUNHEALTHY_THRESHOLD는 VM 인스턴스가 정상 또는 비정상으로 간주되려면 성공하거나 실패해야 하는 연속 프로브의 수를 지정합니다. 둘 중 하나를 생략하면 GCP는 기본 임계값 2를 사용합니다.
  • HOST는 호스트 HTTP 헤더 제공을 허용합니다. 생략하면 부하 분산기 전달 규칙의 IP 주소가 사용됩니다.
  • PORT에서는 포트 번호를 제공할 수 있습니다. 생략하면 GCP는 80을 사용합니다.
  • REQUEST_PATH는 GCP가 상태 확인 요청을 보낼 때 사용하는 URL 경로를 지정합니다. 생략하면 상태 확인 요청이 /로 전송됩니다.

API

네트워크 부하 분산기에 다음 API 호출을 사용하여 이전 상태 확인을 만들 수 있습니다.

이전 상태 확인 보기 및 수정

Console

GCP Console은 상태 확인 페이지에서 상태 확인과 이전 상태 확인을 모두 나열합니다. 기존의 이전 상태 확인을 수정하려면 다음 단계를 따르세요.

  1. Google Cloud Platform Console에서 상태 확인 페이지로 이동합니다.
    상태 확인 페이지로 이동
  2. 세부 정보를 보려면 상태 확인을 클릭하세요.
  3. 상태 확인을 수정해야 하는 경우 편집을 클릭하고 다음을 수행합니다.
    • 필요에 따라 매개변수를 변경합니다.
    • 저장을 클릭합니다.

gcloud

  1. 네트워크 부하 분산기의 이전 상태 확인을 나열하려면 다음 gcloud 명령어를 사용합니다.

    gcloud compute http-health-checks list
    
  2. 이전 상태 확인을 확인한 다음 LEGACY_HEALTH_CHECK_NAME을 이전 상태 확인 이름으로 대체한 적절한 gcloud 명령어를 사용하여 상태 확인을 설명합니다.

    gcloud compute http-health-checks describe LEGACY_HEALTH_CHECK_NAME
    
  3. 이전 상태 확인을 수정해야 하는 경우 LEGACY_HEALTH_CHECK_NAME을 이전 상태 확인의 이름으로 대체한 적절한 gcloud 명령어를 사용합니다. gcloud로 상태 확인을 수정하면 생략한 플래그의 기존 설정이 유지됩니다.

    gcloud compute http-health-checks update LEGACY_HEALTH_CHECK_NAME \
        ...other options
    

    여기서 ...기타 옵션이전 상태 확인을 만드는 옵션입니다.

API

  1. 네트워크 부하 분산기의 이전 상태 확인을 나열하려면 다음 API 호출을 사용합니다.

  2. 상태 확인의 이름을 알면 다음 API 호출을 사용하여 구성 세부정보를 가져올 수 있습니다.

  3. 이전 상태 확인을 수정해야 하는 경우 다음 API 호출을 사용합니다.

방화벽 규칙

상태 확인 프로버 IP 범위에서 트래픽을 허용하려면 부하 분산되는 모든 VM에 적용되는 인그레스 방화벽 규칙을 만들어야 합니다. 다음 예시에서는 대상 태그 별로 VM 인스턴스에 적용할 수 있는 방화벽 규칙을 만듭니다. 방화벽 규칙 대상 지정에 대한 자세한 내용은 방화벽 규칙 개요네트워크 태그 구성에서 대상에 대한 설명을 참조하세요.

각 예시는 GCP 상태 확인 시스템에서 VM 인스턴스로 보내는 모든 TCP 트래픽을 허용합니다. TCP 트래픽에는 SSL, HTTP, HTTPS, HTTP/2 트래픽이 포함됩니다. 원하는 경우 TCP 프로토콜로 포트를 지정할 수도 있습니다. 그러나 포트를 지정하면 방화벽 규칙이 특정 상태 확인에만 적용될 수 있습니다. 프로토콜 및 포트에 tcp:80을 사용하면 포트 80에서 TCP 트래픽이 허용되므로 GCP는 포트 80에서 HTTP를 사용하여 VM에 연결할 수 있지만 포트 443에서 HTTPS를 사용하여 연결할 수는 없습니다.

상태 확인 규칙

다음 예시에서는 다음 부하 분산기에 대한 인그레스 방화벽 규칙을 만듭니다.

  • 내부 TCP/UDP 부하 분산(상태 확인)
  • 내부 HTTP(S) 부하 분산(상태 확인)
  • TCP 프록시 부하 분산(상태 확인)
  • SSL 프록시 부하 분산(상태 확인)
  • HTTP(S) 부하 분산(상태 확인 기존 상태 확인)

이러한 부하 분산기에 대한 상태 확인(HTTP(S) 부하 분산에 사용되는 이전 상태 확인을 포함)을 위한 소스 IP 범위는 다음과 같습니다.

  • 35.191.0.0/16
  • 130.211.0.0/22

내부 HTTP(S) 부하 분산에 한해 소스 IP 범위는 프록시 전용 서브넷의 모든 IP 주소입니다.

네트워크 부하 분산 규칙을 만들려면 다음 섹션의 네트워크 부하 분산 규칙을 참조하세요.

Console

  1. Google Cloud Platform Console의 방화벽 규칙 페이지로 이동합니다.
    방화벽 규칙 페이지로 이동
  2. 방화벽 규칙 만들기를 클릭합니다.
  3. 방화벽 규칙 만들기 페이지에서 다음 정보를 입력합니다.
    • 이름: 규칙의 이름을 입력합니다. 이 예시에서는 fw-allow-health-checks를 사용합니다.
    • 네트워크: VPC 네트워크를 선택합니다.
    • 우선순위: 우선순위의 번호를 입력합니다. 숫자가 낮을수록 우선순위가 높습니다. 방화벽 규칙이 인그레스 트래픽을 거부할 수 있는 다른 규칙보다 높은 우선 순위를 갖도록 해야 합니다.
    • 트래픽 방향: 인그레스를 선택합니다.
    • 일치 시 작업: 허용을 선택합니다.
    • 대상: 지정된 대상 태그를 선택한 다음 대상 태그 텍스트 상자에 태그를 입력합니다. 이 예시에서는 allow-health-checks를 사용합니다.
    • 소스 필터: IP 범위를 선택합니다.
    • 소스 IP 범위: 35.191.0.0/16,130.211.0.0/22
    • 허용되는 프로토콜 및 포트 : tcp를 사용합니다. TCP는 모든 상태 확인 프로토콜의 기본 프로토콜입니다.
    • 만들기를 클릭합니다.
  4. 부하 분산되는 각 인스턴스에 네트워크 태그를 추가하여 새 인그레스 방화벽 규칙이 적용되게 합니다. 이 예시에서는 네트워크 태그로 allow-health-checks를 사용합니다.

gcloud

  1. allow-health-checks 태그로 네트워크의 인스턴스에 들어오는 연결을 허용하는 fw-allow-health-checks라는 이름의 방화벽 규칙을 만들려면 다음 gcloud 명령어를 사용합니다. NETWORK_NAME을 네트워크 이름으로 바꿉니다.

    gcloud compute firewall-rules create fw-allow-health-checks \
        --network NETWORK_NAME \
        --action ALLOW \
        --direction INGRESS \
        --source-ranges 35.191.0.0/16,130.211.0.0/22 \
        --target-tags allow-health-checks \
        --rules tcp
  2. 부하 분산되는 각 인스턴스에 네트워크 태그를 추가하여 새 인그레스 방화벽 규칙이 적용되게 합니다. 이 예시에서는 네트워크 태그로 allow-health-checks를 사용합니다.

자세한 내용은 gcloud 방화벽 규칙 문서API 문서를 참조하세요.

네트워크 부하 분산 규칙

다음 예시에서는 이전 상태 확인이 필요한 네트워크 부하 분산에 대한 인그레스 방화벽 규칙을 만듭니다. 네트워크 부하 분산의 이전 상태 확인을 위한 소스 IP 범위는 다음과 같습니다.

  • 35.191.0.0/16
  • 209.85.152.0/22
  • 209.85.204.0/22

Console

  1. Google Cloud Platform Console의 방화벽 규칙 페이지로 이동합니다.
    방화벽 규칙 페이지로 이동
  2. 방화벽 규칙 만들기를 클릭합니다.
  3. 방화벽 규칙 만들기 페이지에서 다음 정보를 입력합니다.
    • 이름: 규칙의 이름을 입력합니다. 이 예시에서는 fw-allow-network-lb-health-checks를 사용합니다.
    • 네트워크: VPC 네트워크를 선택합니다.
    • 우선순위: 우선순위의 번호를 입력합니다. 숫자가 낮을수록 우선순위가 높습니다. 방화벽 규칙이 인그레스 트래픽을 거부할 수 있는 다른 규칙보다 높은 우선 순위를 갖도록 해야 합니다.
    • 트래픽 방향: 인그레스를 선택합니다.
    • 일치 시 작업: 허용을 선택합니다.
    • 대상: 지정된 대상 태그를 선택한 다음 대상 태그 텍스트 상자에 태그를 입력합니다. 이 예시에서는 allow-network-lb-health-checks를 사용합니다.
    • 소스 필터: IP 범위를 선택합니다.
    • 소스 IP 범위: 35.191.0.0/16, 209.85.152.0/22, 209.85.204.0/22
    • 허용되는 프로토콜 및 포트 : tcp를 사용합니다. TCP는 HTTP 및 HTTPS의 기본 프로토콜입니다.
    • 만들기를 클릭합니다.
  4. 부하 분산되는 각 인스턴스에 네트워크 태그를 추가하여 새 인그레스 방화벽 규칙이 적용되게 합니다. 이 예시에서는 네트워크 태그로 allow-network-lb-health-checks를 사용합니다.

gcloud

  1. allow-network-lb-health-checks 태그로 네트워크의 인스턴스에 들어오는 연결을 허용하는 fw-allow-network-lb-health-checks라는 이름의 방화벽 규칙을 만들려면 다음 gcloud 명령어를 사용합니다. NETWORK_NAME을 네트워크 이름으로 바꿉니다.

    gcloud compute firewall-rules create fw-allow-network-lb-health-checks \
        --network NETWORK_NAME \
        --action ALLOW \
        --direction INGRESS \
        --source-ranges 35.191.0.0/16,209.85.152.0/22,209.85.204.0/22 \
        --target-tags allow-network-lb-health-checks \
        --rules tcp
  2. 부하 분산되는 각 인스턴스에 네트워크 태그를 추가하여 새 인그레스 방화벽 규칙이 적용되게 합니다. 이 예시에서는 네트워크 태그로 allow-network-lb-health-checks를 사용합니다.

자세한 내용은 gcloud 방화벽 규칙 문서API 문서를 참조하세요.

부하 분산기와 연결

프로토콜 및 부하 분산기

프로토콜이 부하 분산기의 백엔드 서비스 또는 대상 풀에서 사용하는 프로토콜과 일치하는 상태 확인(또는 이전 상태 확인)을 사용하는 것이 가장 좋습니다. 그러나 상태 확인 프로토콜과 부하 분산기 프로토콜이 반드시 동일할 필요는 없습니다. 예를 들면 다음과 같습니다.

  • 내부 TCP/UDP 부하 분산의 경우 백엔드 서비스의 프로토콜로만 TCP 또는 UDP를 사용할 수 있습니다. 내부 부하 분산기 뒤의 VM으로부터 HTTP 트래픽을 제공하는 경우 HTTP 프로토콜을 사용하여 상태 확인을 수행하는 것이 좋습니다.

  • 이전 상태 확인은 HTTP 프로토콜로 제한됩니다. 네트워크 부하 분산기를 사용하여 TCP 트래픽을 분산하는 경우 상태 확인 프로브에 응답할 수 있도록 부하 분산되는 VM에서 HTTP 서비스를 실행해야 합니다.

백엔드 서비스 상태 확인

이 섹션에서는 다음 유형의 부하 분산기에 대한 상태 확인을 백엔드 서비스와 연결하는 방법을 설명합니다.

  • 내부 TCP/UDP 부하 분산
  • 내부 HTTP(S) 부하 분산
  • TCP 프록시 부하 분산
  • SSL 프록시 부하 분산
  • HTTP(S) 부하 분산

이 페이지에서는 다음 작업을 이미 완료했다고 가정합니다.

상태 확인을 새 내부, TCP 프록시, SSL 프록시, 또는 HTTP(S) 부하 분산기와 연결하려면 해당 부하 분산기의 설정 가이드를 참조하세요.

Console

상태 확인을 기존 내부, TCP 프록시, SSL 프록시, HTTP(S) 부하 분산기와 연결하려면 다음 단계를 따르세요.

  1. Google Cloud Platform Console의 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. 부하 분산기를 클릭하여 세부정보를 봅니다.
  3. 수정을 클릭한 다음 백엔드 구성을 클릭합니다.
  4. 상태 확인 메뉴에서 상태 확인을 선택합니다.
  5. 업데이트를 클릭합니다.

gcloud

상태 확인을 기존 내부, TCP 프록시, SSL 프록시, HTTP(S) 부하 분산기와 연결하려면 다음 단계를 따르세요.

  1. 백엔드 서비스 또는 부하 분산기에서 사용되는 서비스를 식별합니다. 내부, TCP 프록시, SSL 프록시 부하 분산기에는 전체 부하 분산기에 대해 하나의 백엔드 서비스만 있습니다. HTTP(S) 부하 분산기에는 URL 맵과 연결된 백엔드 서비스가 하나 이상 있습니다.

    • 내부 TCP/UDP 부하 분산기의 백엔드 서비스를 나열하려면 다음 명령어를 실행합니다. 백엔드 서비스의 이름과 리전을 식별합니다.

      gcloud compute backend-services list \
          --filter="loadBalancingScheme=INTERNAL"
      
    • 내부 HTTP 부하 분산기의 백엔드 서비스를 나열하려면 다음 명령어를 실행합니다. 백엔드 서비스의 이름과 리전을 식별합니다.

      gcloud compute backend-services list \
          --filter="loadBalancingScheme=INTERNAL_MANAGED"
      
    • TCP 프록시 부하 분산기의 백엔드 서비스를 나열하려면 다음 명령어를 실행합니다.

      gcloud compute backend-services list \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=TCP"
      
    • SSL 프록시 부하 분산기의 백엔드 서비스를 나열하려면 다음 명령어를 실행합니다.

      gcloud compute backend-services list \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=SSL"
      
    • HTTP(S) 부하 분산을 위한 백엔드 서비스를 식별하려면 URL 맵을 식별한 다음 URL_MAP_NAME을 URL 맵의 이름으로 대체하여 이를 설명합니다. 사용하는 백엔드 서비스는 응답의 pathMatchers 섹션에 나열됩니다.

      gcloud compute url-maps list
      gcloud compute url-maps describe URL_MAP_NAME
      
  2. 상태 확인을 식별합니다. 필요한 경우 상태 확인을 봅니다.

  3. 상태 확인을 백엔드 서비스와 연결합니다. 다음 명령어에서 BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 대체하고 HEALTH_CHECK_NAME을 상태 확인 이름으로 대체합니다. 이 명령어는 백엔드 서비스와 관련된 모든 상태 확인을 대체합니다. 대부분의 경우 백엔드 서비스에는 하나의 상태 확인만 연결됩니다.

    • 내부 부하 분산기의 백엔드 서비스 상태 확인을 변경하려면 다음 명령어를 사용합니다. 내부 부하 분산기의 백엔드 서비스는 리전을 기반으로 해서 해당 이름과 함께 REGION을 지정해야 합니다.

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --region REGION \
          --health-checks HEALTH_CHECK_NAME
      
    • TCP 프록시, SSL 프록시, HTTP(S) 부하 분산기의 백엔드 서비스 상태 확인을 변경하려면 다음 명령어를 사용합니다.

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --global \
          --health-checks HEALTH_CHECK_NAME
      

API

  1. backendServices.list API 호출을 사용하여 백엔드 서비스를 나열할 수 있습니다.

  2. 상태 확인을 봅니다.

  3. 상태 확인을 백엔드 서비스와 연결하려면 다음 API 호출 중 하나를 사용합니다.

네트워크 부하 분산에 대한 이전 상태 확인

이 섹션에서는 네트워크 부하 분산을 위해 대상 풀에 이전 상태 확인을 연결하는 방법을 설명합니다. 이 페이지에서는 다음 작업을 이미 완료했다고 가정합니다.

이전 상태 확인을 새 네트워크 부하 분산기와 연결하려면 네트워크 부하 분산 설정하기를 참조하세요. 새 네트워크 부하 분산기를 만들 때는 이전 상태 확인을 대상 풀과 연결해야 합니다.

Console

상태 확인을 기존 네트워크 부하 분산기와 연결하려면 다음 단계를 따르세요.

  1. Google Cloud Platform Console의 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. 네트워크 부하 분산기를 클릭하여 세부정보를 봅니다.
  3. 수정을 클릭한 다음 백엔드 구성을 클릭합니다.
  4. 상태 확인 메뉴에서 기존 상태 확인을 선택합니다. 조건에 부합하는 이전 상태 확인만 표시됩니다.
  5. 업데이트를 클릭합니다.

gcloud

상태 확인을 기존 네트워크 부하 분산기와 연결하려면 다음 단계를 따르세요.

  1. 대상 풀을 식별합니다. 네트워크 부하 분산기에는 적어도 하나의 대상 풀이 있으며 보조 백업 풀이 있을 수 있습니다.

    gcloud compute target-pools list
    
  2. HTTP 프로토콜을 사용하여 이전 상태 확인을 식별합니다. 필요한 경우 이전 상태 확인을 봅니다.

  3. 레거시 상태 확인을 대상 풀에 연결합니다. 다음 명령어에서 TARGET_POOL_NAME을 대상 풀의 이름으로, REGION을 리전으로, LEGACY_HEALTH_CHECK_NAME을 이전 상태 확인의 이름으로 바꿉니다. 이전 상태 확인은 HTTP 프로토콜을 사용해야합니다.

    • 대상 풀에서 이전 HTTP 상태 확인을 제거하려면 다음 명령어를 사용합니다.

      gcloud compute target-pools remove-health-checks TARGET_POOL_NAME \
          --region REGION \
          --http-health-check LEGACY_HEALTH_CHECK_NAME
      
    • 대상 풀에 이전 HTTP 상태 확인을 추가하려면 다음 명령어를 사용합니다.

      gcloud compute target-pools add-health-checks TARGET_POOL_NAME \
          --region REGION \
          --http-health-check LEGACY_HEALTH_CHECK_NAME
      

API

  1. targetPools.list API 호출을 사용하여 대상 풀을 나열할 수 있습니다.

  2. 이전 상태 확인을 보고 이전 HTTP 상태 확인을 식별합니다.

  3. 이전 HTTP 상태 확인을 대상 풀과 연결하려면 targetPools.addHealthCheck API 호출을 사용합니다.

IP 주소 범위를 차단하여 상태 확인 문제해결

일부 상황에서는 의도적으로 상태 확인에 실패하는 것이 좋습니다. 문제 해결 활동의 일부로 특정 VM이 상태 확인에 실패하도록 만들거나 종료 절차의 일부로 상태 확인에 실패하도록 만들 수 있습니다.

상태 확인 IP 범위에 대한 액세스를 일시적으로 차단하여 상태 확인 또는 이전 상태 확인을 강제로 실패시킬 수 있습니다. 이 예시에서는 Linux VM에서 실행되는 iptables 방화벽 소프트웨어를 사용하여 상태 확인을 실패하는 방법을 보여줍니다.

VM이 상태 확인 및 기존 상태 확인 검사를 실패하게 하려면 다음 예시에서 HEALTH_CHECK_PORT를 적절한 TCP 포트 번호로 바꾼 iptables 명령어를 실행합니다. VM이 종료될 때 의도적으로 프로브를 실패하게 하려면 상태 확인의 확인 간격과 비정상 임계값에 따라 적절한 지연이 뒤따르는 종료 스크립트에 다음과 같은 iptables 명령어를 추가할 수 있습니다.

$ sudo iptables -I INPUT 1 -m state --state NEW \
-s 35.191.0.0/16 -p tcp --destination-port HEALTH_CHECK_PORT \
-j REJECT --reject-with tcp-reset
$ sudo iptables -I INPUT 1 -m state --state NEW \
-s 130.211.0.0/22 -p tcp --destination-port HEALTH_CHECK_PORT \
-j REJECT --reject-with tcp-reset
$ sudo iptables -I INPUT 1 -m state --state NEW \
-s 209.85.152.0/22 -p tcp --destination-port HEALTH_CHECK_PORT \
-j REJECT --reject-with tcp-reset
$ sudo iptables -I INPUT 1 -m state --state NEW \
-s 209.85.204.0/22 -p tcp --destination-port HEALTH_CHECK_PORT \
-j REJECT --reject-with tcp-reset

iptables 규칙을 제거하려면 HEALTH_CHECK_PORT를 상태 확인의 TCP 포트로 대체하여 다음 명령어를 실행합니다.

$ sudo iptables -D INPUT -m state --state NEW \
-s 35.191.0.0/16 -p tcp --destination-port HEALTH_CHECK_PORT \
-j REJECT --reject-with tcp-reset
$ sudo iptables -D INPUT -m state --state NEW \
-s 130.211.0.0/22 -p tcp --destination-port HEALTH_CHECK_PORT \
-j REJECT --reject-with tcp-reset
$ sudo iptables -D INPUT -m state --state NEW \
-s 209.85.152.0/22 -p tcp --destination-port HEALTH_CHECK_PORT \
-j REJECT --reject-with tcp-reset
$ sudo iptables -D INPUT -m state --state NEW \
-s 209.85.204.0/22 -p tcp --destination-port HEALTH_CHECK_PORT \
-j REJECT --reject-with tcp-reset
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...