์ƒํƒœ ์ ๊ฒ€ ์‚ฌ์šฉ

Google Cloud ๋Š” ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค๊ฐ€ ํŠธ๋ž˜ํ”ฝ์— ์ œ๋Œ€๋กœ ์‘๋‹ตํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ƒํƒœ ์ ๊ฒ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ Cloud Service Mesh์˜ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ์— ์ต์ˆ™ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ์ ๊ฒ€ ๋งŒ๋“ค๊ธฐ

Google Cloud ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Google Cloud ์ฝ˜์†”์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ์„ ์™„๋ฃŒํ•  ๋•Œ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Google Cloud ์ฝ˜์†”์˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ๊ณผ ์ƒ๊ด€์—†์ด ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒํƒœ ํ™•์ธ์„ ๋จผ์ € ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๋Œ€ํ•ด ์ƒํƒœ ํ™•์ธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”, Google Cloud CLI ๋˜๋Š” REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ƒํƒœ ์ ๊ฒ€ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ์ƒํƒœ ํ™•์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. ์ƒํƒœ ์ ๊ฒ€ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ƒํƒœ ํ™•์ธ ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€์—์„œ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • ์ด๋ฆ„: ์ƒํƒœ ์ ๊ฒ€์— ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์„ค๋ช…: ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์„ค๋ช…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฒ”์œ„: ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์œ ํ˜•์— ๋”ฐ๋ผ ์ „์—ญ ๋˜๋Š” ๋ฆฌ์ „ ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ๋ฆฌ์ „์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ ๋“œ๋กญ๋‹ค์šด์—์„œ ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ํ”„๋กœํ† ์ฝœ : ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœํ† ์ฝœ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ํฌํŠธ: ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค ๋•Œ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ: ์„ ํƒ์ ์œผ๋กœ ์ƒํƒœ ํ™•์ธ ํ”„๋กœ๋ธŒ ์‹œ์Šคํ…œ์˜ ์š”์ฒญ์— ํ”„๋ก์‹œ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์š”์ฒญ ๊ฒฝ๋กœ ๋ฐ ์‘๋‹ต: HTTP, HTTPS, HTTP2 ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ์—ฐ๊ฒฐํ•  ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœ๋ธŒ ์‹œ์Šคํ…œ์˜ URL ๊ฒฝ๋กœ๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ HTTP, HTTPS, HTTP/2 ์ƒํƒœ ์ ๊ฒ€์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • ์š”์ฒญ ๋ฐ ์‘๋‹ต: TCP ๋ฐ SSL ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ์ „์†กํ•  ASCII ํ…์ŠคํŠธ ๋ฌธ์ž์—ด๊ณผ ์˜ˆ์ƒ ํ…์ŠคํŠธ ์‘๋‹ต ๋ฌธ์ž์—ด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SSL ๋ฐ TCP ์ƒํƒœ ์ ๊ฒ€์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • ํ™•์ธ ๊ฐ„๊ฒฉ: ํ•œ ํ”„๋กœ๋ธŒ์˜ ์‹œ์ž‘์—์„œ ๋‹ค์Œ ํ”„๋กœ๋ธŒ์˜ ์‹œ์ž‘๊นŒ์ง€์˜ ์‹œ๊ฐ„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    • ์ œํ•œ ์‹œ๊ฐ„: Google Cloud๊ฐ€ ํ”„๋กœ๋ธŒ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ’์€ ํ™•์ธ ๊ฐ„๊ฒฉ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ •์ƒ ๊ธฐ์ค€: VM ์ธ์Šคํ„ด์Šค๊ฐ€ ์ •์ƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์„ฑ๊ณตํ•ด์•ผ ํ•˜๋Š” ์—ฐ์† ํ”„๋กœ๋ธŒ์˜ ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    • ๋น„์ •์ƒ ๊ธฐ์ค€: VM ์ธ์Šคํ„ด์Šค๊ฐ€ ๋น„์ •์ƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํŒจํ•ด์•ผ ํ•˜๋Š” ์—ฐ์† ํ”„๋กœ๋ธŒ์˜ ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  4. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  • ์ „์—ญ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด ์ ์ ˆํ•œ compute health-checks create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute health-checks create PROTOCOL NAME \
        --global \
        --description=DESCRIPTION \
        --check-interval=CHECK_INTERVAL \
        --timeout=TIMEOUT \
        --healthy-threshold=HEALTHY_THRESHOLD \
        --unhealthy-threshold=UNHEALTHY_THRESHOLD \
        PORT_SPECIFICATION \
        ADDITIONAL_FLAGS
    
  • ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด ์ ์ ˆํ•œ compute health-checks create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute health-checks create PROTOCOL NAME \
        --region=REGION \
        --description=DESCRIPTION \
        --check-interval=CHECK_INTERVAL \
        --timeout=TIMEOUT \
        --healthy-threshold=HEALTHY_THRESHOLD \
        --unhealthy-threshold=UNHEALTHY_THRESHOLD \
        PORT_SPECIFICATION \
        ADDITIONAL_FLAGS
    

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROTOCOL์€ ์ƒํƒœ ์ ๊ฒ€์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. GRPC, GRPC_WITH_TLS, HTTP, HTTPS, HTTP2, SSL, TCP์ด ์œ ํšจํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

  • NAME์€ ์ƒํƒœ ํ™•์ธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํŠน์ • ํ”„๋กœ์ ํŠธ ๋‚ด: ๊ฐ ์ „์—ญ ์ƒํƒœ ์ ๊ฒ€์—๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„์ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์€ ํ•ด๋‹น ๋ฆฌ์ „ ๋‚ด์—์„œ ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • REGION: ์ƒํƒœ ์ ๊ฒ€์˜ ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ๋ฆฌ์ „๋ณ„ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๊ฒฝ์šฐ ์ƒํƒœ ์ ๊ฒ€ ๋ฆฌ์ „์ด ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ๋ฆฌ์ „๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • DESCRIPTION์€ ์„ ํƒ์‚ฌํ•ญ์ธ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • CHECK_INTERVAL์€ ํ•˜๋‚˜์˜ ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœ๋ธŒ ์‹œ์Šคํ…œ์˜ ์—ฐ๊ฒฐ์ด ์‹œ์ž‘๋œ ํ›„๋ถ€ํ„ฐ ๋‹ค์Œ ํ”„๋กœ๋ธŒ ์‹œ์ž‘๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋‹จ์œ„๋Š” ์ดˆ์ž…๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด Google Cloud ์—์„œ๋Š” 5s(5์ดˆ)๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • TIMEOUT์€ Google Cloud๊ฐ€ ํ”„๋กœ๋ธŒ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. TIMEOUT ๊ฐ’์€ CHECK_INTERVAL ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์œ„๋Š” ์ดˆ์ž…๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ์—์„œ๋Š” 5s(5์ดˆ)๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • HEALTHY_THRESHOLD ๋ฐ UNHEALTHY_THRESHOLD๋Š” VM ์ธ์Šคํ„ด์Šค๊ฐ€ ์ •์ƒ ๋˜๋Š” ๋น„์ •์ƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•ด์•ผ ํ•˜๋Š” ์—ฐ์† ํ”„๋กœ๋ธŒ์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ๋Š” ๊ธฐ๋ณธ ๊ธฐ์ค€์  2๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • PORT_SPECIFICATION: ํฌํŠธ ์ง€์ • ํ”Œ๋ž˜๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ ์ง€์ •์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • ADDITIONAL_FLAGS๋Š” ํฌํŠธ์™€ PROTOCOL์— ๋Œ€ํ•œ ์˜ต์…˜์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐํƒ€ ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค. HTTP, HTTPS, HTTP/2 ์ƒํƒœ ์ ๊ฒ€์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ, SSL ๋ฐ TCP ์ƒํƒœ ์ ๊ฒ€์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ ๋˜๋Š” gRPC ์ƒํƒœ ์ ๊ฒ€์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Terraform

์ „์—ญ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด google_compute_health_check ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

resource "google_compute_health_check" "health_check_tcp_with_logging" {
  provider = google-beta

  name = "health-check-tcp"

  timeout_sec        = 1
  check_interval_sec = 1

  tcp_health_check {
    port = "22"
  }

  log_config {
    enable = true
  }
}

๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด google_compute_region_health_check ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

resource "google_compute_region_health_check" "default" {
  name               = "tcp-health-check-region-west"
  timeout_sec        = 5
  check_interval_sec = 5
  tcp_health_check {
    port = "80"
  }
  region = "us-west1"
}

Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ Terraform ๋ช…๋ น์–ด๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

API

  • ์ „์—ญ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด healthChecks.insert๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด regionHealthChecks.insert๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ์ ๊ฒ€ ์ˆ˜์ •

์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•˜์—ฌ ์ƒํƒœ ์ ๊ฒ€์„ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€(๋˜๋Š” ๋ฐ˜๋Œ€๋กœ)์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒํƒœ ์ ๊ฒ€์˜ ์ด๋ฆ„์ด๋‚˜ ๋ฒ”์œ„(์˜ˆ: ์ „์—ญ์—์„œ ๋ฆฌ์ „์œผ๋กœ)๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ƒํƒœ ์ ๊ฒ€ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ์ƒํƒœ ํ™•์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. ์ƒํƒœ ์ ๊ฒ€์„ ํด๋ฆญํ•˜์—ฌ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  3. ์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜์ •์„ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ํ•„์š”์— ๋”ฐ๋ผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    • ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ์ƒํƒœ ์ ๊ฒ€์˜ ์ด๋ฆ„๊ณผ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ƒํƒœ ์ ๊ฒ€ ๋‚˜์—ด์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ์ƒํƒœ ์ ๊ฒ€ ์ด๋ฆ„, ํ”„๋กœํ† ์ฝœ, ๋ฒ”์œ„๋ฅผ ์ œ์™ธํ•˜๊ณ  ๊ณตํ†ต ํ”Œ๋ž˜๊ทธ, ํฌํŠธ ์ง€์ • ํ”Œ๋ž˜๊ทธ, ๊ธฐํƒ€ ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์ ํ•ฉํ•œ compute health-checks update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋Š” ํ”Œ๋ž˜๊ทธ์˜ ๊ฒฝ์šฐ ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ์„ค์ •์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

    • ์ „์—ญ ์ƒํƒœ ์ ๊ฒ€์˜ ์ˆ˜์ • ์˜ˆ์‹œ: ๋‹ค์Œ ๋ช…๋ น์–ด๋Š” ํ™•์ธ ๊ฐ„๊ฒฉ, ์ œํ•œ ์‹œ๊ฐ„, ์š”์ฒญ ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ hc-http-port-80๋ผ๋Š” ์ „์—ญ HTTP ์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute health-checks update http hc-http-port-80 \
          --global \
          --check-interval=20s \
          --timeout=15s \
          --request-path="/health"
      
    • ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์˜ ์ˆ˜์ • ์˜ˆ์‹œ: ๋‹ค์Œ ๋ช…๋ น์–ด๋Š” ํฌํŠธ ์ง€์ •์„ ๋ณ€๊ฒฝํ•˜์—ฌ hc-west1-tcp-ldap์ด๋ผ๋Š” us-west1์˜ ๋ฆฌ์ „๋ณ„ TCP ์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute health-checks update tcp hc-west1-tcp-ldap \
          --region=us-west1 \
          --port=631
      

API

  1. ์ƒํƒœ ์ ๊ฒ€์˜ ์ด๋ฆ„๊ณผ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ƒํƒœ ์ ๊ฒ€ ๋‚˜์—ด์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ์ƒํƒœ ์ ๊ฒ€ ์ด๋ฆ„, ํ”„๋กœํ† ์ฝœ, ๋ฒ”์œ„๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‹ค์Œ API ํ˜ธ์ถœ์„ ํ†ตํ•ด ๊ณตํ†ต ํ”Œ๋ž˜๊ทธ, ํฌํŠธ ์ง€์ • ํ”Œ๋ž˜๊ทธ, ๊ธฐํƒ€ ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. patch API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์— ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •๋˜์ง€ ์•Š์€ ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ์„ค์ •์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ํ™•์ธ ๋‚˜์—ด

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ƒํƒœ ์ ๊ฒ€ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ์ƒํƒœ ํ™•์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. ์ƒํƒœ ์ ๊ฒ€์„ ํด๋ฆญํ•˜์—ฌ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ด…๋‹ˆ๋‹ค.

gcloud

์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด compute health-checks list ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ „์—ญ ์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute health-checks list \
        --global
    
  • ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. REGION_LIST๋ฅผ ์ฟผ๋ฆฌํ•  Google Cloud ๋ฆฌ์ „์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud compute health-checks list \
        --regions=REGION_LIST
    

์ƒํƒœ ํ™•์ธ์˜ ์ด๋ฆ„๊ณผ ๋ฒ”์œ„๋ฅผ ์•Œ๋ฉด compute health-checks describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๊ตฌ์„ฑ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ „์—ญ ์ƒํƒœ ์ ๊ฒ€์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด NAME์„ ํ•ด๋‹น ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud compute health-checks describe NAME \
        --global
    
  • ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด NAME์„ ํ•ด๋‹น ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ณ  REGION์„ ํ•ด๋‹น ๋ฆฌ์ „์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud compute health-checks describe NAME \
        --region=REGION
    

API

์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ์ ๊ฒ€์˜ ํ˜„์žฌ ๊ตฌ์„ฑ์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ

์ด ์„น์…˜์—์„œ๋Š” ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํฌํŠธ ์ง€์ •๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ํ”Œ๋ž˜๊ทธ๋Š” gcloud ๋˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํฌํŠธ ์ง€์ • ํ”Œ๋ž˜๊ทธ

Google Cloud CLI ๋˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ ์ƒํƒœ ์ ๊ฒ€์˜ ํฌํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ๋Š” ์œ ํšจํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋ฐ ๋ฐฑ์—”๋“œ ์กฐํ•ฉ์— ๋Œ€ํ•œ ํฌํŠธ ์ง€์ • ์˜ต์…˜์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์ด๋ผ๋Š” ์šฉ์–ด๋Š” ๋น„๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน, ์˜์—ญ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋˜๋Š” ๋ฆฌ์ „ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ƒํƒœ ์ ๊ฒ€์€ ํ•œ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํฌํŠธ ์ง€์ •๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œํ’ˆ ๋ฐฑ์—”๋“œ ์œ ํ˜• ํฌํŠธ ์ง€์ • ์˜ต์…˜
์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋ฐ ์ง€์›๋˜๋Š” NEG

--port: 1์—์„œ 65535๊นŒ์ง€์˜ ์ˆซ์ž๋กœ TCP ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์—์„œ ์ด๋ฆ„์ด ์ง€์ •๋œ ํฌํŠธ๋ฅผ ๊ตฌ๋…ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‚ด๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ ์ ๊ฒ€์—์„œ --use-serving-port ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ๋ฐฑ์—”๋“œ๋กœ ์ƒˆ ์—ฐ๊ฒฐ์„ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ํŒจํ‚ท์„ ๋ฐฑ์—”๋“œ๋กœ ์ง์ ‘ ์ „๋‹ฌํ•˜๋Š” ํŒจ์Šค ์Šค๋ฃจ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋Œ€์ƒ ํ’€ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์€ ํฌํŠธ ๋ฒˆํ˜ธ(--port) ์‚ฌ์–‘์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋ฐ ์ง€์›๋˜๋Š” NEG

--port: 1์—์„œ 65535๊นŒ์ง€์˜ ์ˆซ์ž๋กœ TCP ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์—์„œ ์ด๋ฆ„์ด ์ง€์ •๋œ ํฌํŠธ๋ฅผ ๊ตฌ๋…ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‚ด๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ ์ ๊ฒ€์—์„œ --use-serving-port ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ๋ฐฑ์—”๋“œ๋กœ ์ƒˆ ์—ฐ๊ฒฐ์„ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ํŒจํ‚ท์„ ๋ฐฑ์—”๋“œ๋กœ ์ง์ ‘ ์ „๋‹ฌํ•˜๋Š” ํŒจ์Šค ์Šค๋ฃจ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๋ฆฌ์ „ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๋ฆฌ์ „ ๊ฐ„ ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๋ฆฌ์ „ ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

์ „์—ญ ์™ธ๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๊ธฐ์กด ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๋ฆฌ์ „ ์™ธ๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๋ฆฌ์ „ ๊ฐ„ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋ฉ”์‹œ
์ง€์›๋˜๋Š” NEG
  • --port: 1์—์„œ 65535๊นŒ์ง€์˜ ์ˆซ์ž๋กœ TCP ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • --use-serving-port: ๋„คํŠธ์›Œํฌ ์—”๋“œํฌ์ธํŠธ ๊ทธ๋ฃน์— ์žˆ๋Š” ๊ฐ ์—”๋“œํฌ์ธํŠธ์˜ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน
  • --port: 1์—์„œ 65535๊นŒ์ง€์˜ ์ˆซ์ž๋กœ TCP ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • --use-serving-port: ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์—์„œ ๊ตฌ๋…ํ•˜๋Š” ํฌํŠธ์™€ ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค ๋•Œ ํฌํŠธ ์‚ฌ์–‘์„ ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ์—์„œ ๋‹ค์Œ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒํƒœ ์ ๊ฒ€์˜ ํ”„๋กœํ† ์ฝœ์ด TCP ๋˜๋Š” HTTP์ด๋ฉด --port=80์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒํƒœ ํ™•์ธ์˜ ํ”„๋กœํ† ์ฝœ์ด SSL, HTTPS ๋˜๋Š” HTTP2์ด๋ฉด --port=443์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒํƒœ ์ ๊ฒ€์˜ ํ”„๋กœํ† ์ฝœ์ด GRPC ๋˜๋Š” GRPC_WITH_TLS์ด๋ฉด ๋ฌต์‹œ์  ๊ธฐ๋ณธ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ ํฌํŠธ ์ง€์ •์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HTTP, HTTPS, HTTP/2 ์ƒํƒœ ํ™•์ธ์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ

๊ณตํ†ต ํ”Œ๋ž˜๊ทธ ๋ฐ ํฌํŠธ ์ง€์ • ์™ธ์—๋„ HTTP, HTTPS, HTTP/2 ์ƒํƒœ ํ™•์ธ์— ๋‹ค์Œ ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๊ธฐ๋ณธ ๊ฐ„๊ฒฉ, ์ œํ•œ ์‹œ๊ฐ„, ์ƒํƒœ ์ž„๊ณ—๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ํฌํŠธ 80์„ ์‚ฌ์šฉํ•˜์—ฌ hc-http-port-80์ด๋ผ๋Š” ์ด๋ฆ„์˜ HTTP ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud compute health-checks create HTTP_PROTOCOL hc-http-port-80 \
    COMMON_FLAGS \
    PORT_SPECIFICATION \
    --host=HOST \
    --proxy-header=PROXY_HEADER \
    --request-path=REQUEST_PATH \
    --response=RESPONSE
  • HTTP_PROTOCOL: http(TLS๊ฐ€ ์—†๋Š” HTTP/1.1), https(TLS๊ฐ€ ์žˆ๋Š” HTTP/1.1) ๋˜๋Š” http2(TLS๊ฐ€ ์žˆ๋Š” HTTP/2)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • COMMON_FLAGS: ๊ณตํ†ต ํ”Œ๋ž˜๊ทธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ ์ ˆ์ฐจ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • PORT_SPECIFICATION: ํฌํŠธ ์ง€์ • ํ”Œ๋ž˜๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ ์ง€์ •์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • HOST๋ฅผ ํ†ตํ•ด Host HTTP ํ—ค๋”๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ „๋‹ฌ ๊ทœ์น™์˜ IP ์ฃผ์†Œ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • PROXY_HEADER๋Š” NONE ๋˜๋Š” PROXY_V1 ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ๋Š” NONE์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. PROXY_V1์˜ ๊ฐ’์€ ํ—ค๋” PROXY UNKNOWN\r\n์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • REQUEST_PATH๋Š” Google Cloud ๊ฐ€ ์ƒํƒœ ์ ๊ฒ€ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” URL ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ์ƒํƒœ ์ ๊ฒ€ ์š”์ฒญ์ด /๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • RESPONSE๋Š” ์„ ํƒ์  ์˜ˆ์ƒ ์‘๋‹ต์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ๋ฌธ์ž์—ด์€ ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์‘๋‹ต ๋ฌธ์ž์—ด์€ ASCII ๋ฌธ์ž, ์ˆซ์ž, ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์‘๋‹ต ๋ฌธ์ž์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 1,024์ž์ž…๋‹ˆ๋‹ค.
    • ์™€์ผ๋“œ ์นด๋“œ ์ผ์น˜๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ๊ฒ€์‚ฌ๋Š” ๋„์น˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด HAProxy์—์„œ ! ๊ฐ™์€ ์—ฐ์‚ฐ์ž๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Google Cloud ๋Š” ์ˆ˜์‹ ๋œ ์‘๋‹ต ๋ณธ๋ฌธ์˜ ์ฒซ ๋ฒˆ์งธ 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 \
    COMMON_FLAGS \
    PORT_SPECIFICATION \
    --proxy-header=PROXY_HEADER \
    --request=REQUEST_STRING \
    --response=RESPONSE_STRING
  • ํ”„๋กœํ† ์ฝœ์€ tcp(์ด ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ) ๋˜๋Š” ssl์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • COMMON_FLAGS: ๊ณตํ†ต ํ”Œ๋ž˜๊ทธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ ์ ˆ์ฐจ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • PORT_SPECIFICATION: ํฌํŠธ ์ง€์ • ํ”Œ๋ž˜๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ ์ง€์ •์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • PROXY_HEADER๋Š” NONE ๋˜๋Š” PROXY_V1 ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ๋Š” NONE์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. PROXY_V1์˜ ๊ฐ’์€ ํ—ค๋” PROXY UNKNOWN\r\n์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • REQUEST_STRING: TCP ๋˜๋Š” SSL ์„ธ์…˜์ด ์„ค์ •๋˜๋ฉด ์ตœ๋Œ€ 1,024๊ฐœ์˜ ASCII ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • RESPONSE_STRING: ์˜ˆ์ƒ ์‘๋‹ต์— ์ตœ๋Œ€ 1,024ASCII์˜ ๋ฌธ์ž์—ด์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--request ๋ฐ --response ํ”Œ๋ž˜๊ทธ๋Š” ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœ๋ธŒ์˜ ์„ฑ๊ณต ๊ธฐ์ค€์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. --response ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ --request ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜๋œ ์‘๋‹ต์€ ์˜ˆ์ƒ๋œ ์‘๋‹ต ๋ฌธ์ž์—ด๊ณผ ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

gRPC ์ƒํƒœ ํ™•์ธ์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ

๋ฐฑ์—”๋“œ gRPC ์„œ๋ฒ„๋Š” gRPC ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœํ† ์ฝœ์— ์„ค๋ช…๋œ ๋Œ€๋กœ gRPC ์ƒํƒœ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.Google Cloud ๋Š” ๋ฐฑ์—”๋“œ์—์„œ ์ƒํƒœ ์„œ๋น„์Šค์˜ Check ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ HealthCheckRequest ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. gRPC ์„œ๋น„์Šค ์ด๋ฆ„์ด ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ์š”์ฒญ์˜ ์„œ๋น„์Šค ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋นˆ ๋ฌธ์ž์—ด๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

gRPC ์ƒํƒœ ์ ๊ฒ€์€ gRPC ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ VM ๋˜๋Š” NEG์—์„œ ์‹คํ–‰๋˜๋Š” ํŠน์ • gRPC ์„œ๋น„์Šค์˜ ์ด๋ฆ„์ธ ๋ฌธ์ž์—ด(์ตœ๋Œ€ 1,024 ASCII ๋ฌธ์ž ๊ธธ์ด)์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด gRPC ์ƒํƒœ ์ ๊ฒ€์— ๋‹ค์Œ ํ”Œ๋ž˜๊ทธ(์„ ํƒ์‚ฌํ•ญ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

--grpc-service-name=GRPC_SERVICE_NAME

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ ๋ฐฑ์—”๋“œ์˜ gRPC ์ƒํƒœ ์„œ๋น„์Šค์— ๋‹ค์Œ ์„œ๋น„์Šค ๋ฐ ์ƒํƒœ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ œ๊ณต ์ƒํƒœ๊ฐ€ SERVING์ธ MyPackage.ServiceA
  • ์ œ๊ณต ์ƒํƒœ๊ฐ€ NOT_SERVING์ธ MyPackage.ServiceB
  • ์ œ๊ณต ์ƒํƒœ๊ฐ€ NOT_SERVING์ธ ๋นˆ ์„œ๋น„์Šค ์ด๋ฆ„

๋‹ค์Œ๊ณผ ๊ฐ™์ด MyPackage.ServiceA์— ๋Œ€ํ•ด ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ, ์„œ๋น„์Šค ์ƒํƒœ๊ฐ€ SERVING์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœ๋ธŒ๊ฐ€ HEALTHY๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

gcloud beta compute health-checks create grpc MyGrpcHealthCheckServiceA \
    --grpc-service-name=MyPackage.ServiceA

MyPackage.ServiceB์— ๋Œ€ํ•ด ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ, ์„œ๋น„์Šค ์ƒํƒœ๊ฐ€ NOT_SERVING์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœ๋ธŒ๊ฐ€ UNHEALTHY๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

gRPC ์ƒํƒœ ์„œ๋น„์Šค์— ๋“ฑ๋ก๋˜์ง€ ์•Š์€ MyPackage.ServiceC์— ๋Œ€ํ•ด ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ, ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœ๋ธŒ๊ฐ€ UNHEALTHY์™€ ๋™์ผํ•œ gRPC ์ƒํƒœ NOT_FOUND๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋นˆ ์„œ๋น„์Šค ์ด๋ฆ„์— ๋Œ€ํ•ด ์ƒํƒœ ํ™•์ธ์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ, ๋นˆ ์„œ๋น„์Šค ์ด๋ฆ„์ด NOT_SERVING ์ƒํƒœ๋กœ ๋“ฑ๋ก๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ ํ™•์ธ ํ”„๋กœ๋ธŒ๊ฐ€ UNHEALTHY ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ์ƒํƒœ ํ™•์ธ

์ด ์„น์…˜์—์„œ๋Š” ๊ธฐ์กด HTTP ๋ฐ HTTPS ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์€ ์ƒํƒœ ์ ๊ฒ€์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๊ณ , ์ƒํƒœ ์ ๊ฒ€์„ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ์ง€์›ํ•˜๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์œ ํ˜•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€ ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

Google Cloud ์ฝ˜์†”์˜ ์ƒํƒœ ์ ๊ฒ€ ํŽ˜์ด์ง€์— ์ƒํƒœ ์ ๊ฒ€๊ณผ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์ด ๋‚˜์—ด๋˜์–ด ๋ชจ๋‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Google Cloud ์ฝ˜์†”์˜ ์ƒํƒœ ์ ๊ฒ€ ํŽ˜์ด์ง€์—์„œ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋™์•ˆ์—๋งŒ Google Cloud ์ฝ˜์†”์—์„œ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋‹จ๋…์œผ๋กœ ๋งŒ๋“ค๋ ค๋ฉด ์ด ์„น์…˜์˜ gcloud ๋˜๋Š” API ์•ˆ๋‚ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud

๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด compute http-health-checks create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud compute LEGACY_CHECK_TYPE create 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๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • NAME์€ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๊ฐ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์—๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • DESCRIPTION์€ ์„ ํƒ์‚ฌํ•ญ์ธ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.
  • CHECK_INTERVAL์€ ํ•œ ํ”„๋กœ๋ธŒ์˜ ์‹œ์ž‘์—์„œ ๋‹ค์Œ ํ”„๋กœ๋ธŒ์˜ ์‹œ์ž‘๊นŒ์ง€์˜ ์‹œ๊ฐ„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์œ„๋Š” ์ดˆ์ž…๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ์—์„œ๋Š” 5s(5์ดˆ)๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • TIMEOUT์€ Google Cloud ๊ฐ€ ํ”„๋กœ๋ธŒ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. TIMEOUT ๊ฐ’์€ CHECK_INTERVAL ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์œ„๋Š” ์ดˆ์ž…๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด Google Cloud ์—์„œ๋Š” 5s(5์ดˆ)๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • HEALTHY_THRESHOLD ๋ฐ UNHEALTHY_THRESHOLD๋Š” VM ์ธ์Šคํ„ด์Šค๊ฐ€ ์ •์ƒ ๋˜๋Š” ๋น„์ •์ƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•ด์•ผ ํ•˜๋Š” ์—ฐ์† ํ”„๋กœ๋ธŒ์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ๋Š” ๊ธฐ๋ณธ ๊ธฐ์ค€์  2๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • HOST๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ HTTP ํ—ค๋”๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ „๋‹ฌ ๊ทœ์น™์˜ IP ์ฃผ์†Œ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • PORT๋ฅผ ํ†ตํ•ด ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ๋Š” 80์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • REQUEST_PATH๋Š” Google Cloud๊ฐ€ ์ƒํƒœ ์ ๊ฒ€ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” URL ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ์ƒํƒœ ์ ๊ฒ€ ์š”์ฒญ์ด /๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

API

  • ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด httpHealthChecks.insert API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด HTTPS ์ƒํƒœ ์ ๊ฒ€์„ ๋งŒ๋“ค๋ ค๋ฉด httpsHealthChecks.insert๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Terraform

  • ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด google_compute_http_health_check ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด HTTPS ์ƒํƒœ ์ ๊ฒ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด google_compute_https_health_check ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€ ์ˆ˜์ •

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ƒํƒœ ์ ๊ฒ€ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ์ƒํƒœ ํ™•์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. ์ƒํƒœ ์ ๊ฒ€์„ ํด๋ฆญํ•˜์—ฌ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  3. ์ˆ˜์ • ์„ ํด๋ฆญํ•˜๊ณ  ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  • ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด compute http-health-checks update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NAME์„ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. gcloud๋กœ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•˜๋ฉด ์ƒ๋žตํ•œ ํ”Œ๋ž˜๊ทธ์˜ ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ์„ค์ •์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. OTHER_OPTIONS๋Š” ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€ ๋งŒ๋“ค๊ธฐ์— ์„ค๋ช…๋œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

    gcloud compute http-health-checks update NAME \
      OTHER_OPTIONS
    
  • ๊ธฐ์กด HTTPS ์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด compute https-health-checks update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NAME์„ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. gcloud๋กœ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ์ˆ˜์ •ํ•˜๋ฉด ์ƒ๋žตํ•œ ํ”Œ๋ž˜๊ทธ์˜ ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ์„ค์ •์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. OTHER_OPTIONS๋Š” ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€ ๋งŒ๋“ค๊ธฐ์— ์„ค๋ช…๋œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

    gcloud compute https-health-checks update NAME \
      OTHER_OPTIONS
    

API

๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์˜ ์ด๋ฆ„๊ณผ ์œ ํ˜•์„ ์ œ์™ธํ•˜๊ณ  ์ƒ์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. patch API ํ˜ธ์ถœ์€ ํŒจ์น˜ ์š”์ฒญ์— ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •๋˜์ง€ ์•Š์€ ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ์„ค์ •์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ์ƒํƒœ ํ™•์ธ ๋‚˜์—ด

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ƒํƒœ ์ ๊ฒ€ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ์ƒํƒœ ํ™•์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ํด๋ฆญํ•˜์„ธ์š”.

gcloud

  1. ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด compute http-health-checks list ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute http-health-checks list
    

    ๊ธฐ์กด HTTPS ์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด compute https-health-checks list ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute https-health-checks list
    
  2. ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด compute http-health-checks describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NAME์„ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud compute http-health-checks describe NAME
    

    ๊ธฐ์กด HTTPS ์ƒํƒœ ์ ๊ฒ€์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด compute https-health-checks describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NAME์„ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud compute https-health-checks describe NAME
    

API

  1. ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    • httpHealthChecks.list๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

    • httpsHealthChecks.list๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด HTTPS ์ƒํƒœ ์ ๊ฒ€์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

  2. ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    • httpHealthChecks.get์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    • httpsHealthChecks.get์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด HTTPS ์ƒํƒœ ์ ๊ฒ€์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ

์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœ๋ฒ„ IP ๋ฒ”์œ„์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๋˜๋Š” ๋ชจ๋“  VM์— ์ ์šฉ๋˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ํŠน์ • ๋Œ€์ƒ ํƒœ๊ทธ๋กœ ์‹๋ณ„๋œ VM ์ธ์Šคํ„ด์Šค์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” Google Cloud ์ƒํƒœ ์ ๊ฒ€ ์‹œ์Šคํ…œ์—์„œ VM ์ธ์Šคํ„ด์Šค๋กœ ๋ณด๋‚ด๋Š” ๋ชจ๋“  TCP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. TCP ํŠธ๋ž˜ํ”ฝ์—๋Š” SSL, HTTP, HTTPS, HTTP/2 ํŠธ๋ž˜ํ”ฝ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ TCP ํ”„๋กœํ† ์ฝœ๋กœ ํฌํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํฌํŠธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ํŠน์ • ์ƒํƒœ ์ ๊ฒ€์—๋งŒ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ์— tcp:80์„ ์‚ฌ์šฉํ•˜๋ฉด ํฌํŠธ 80์—์„œ TCP ํŠธ๋ž˜ํ”ฝ์ด ํ—ˆ์šฉ๋˜๋ฏ€๋กœ Google Cloud ๋Š” ํฌํŠธ 80์—์„œ HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VM์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํฌํŠธ 443์—์„œ HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ฐฉํ™”๋ฒฝ ์ •์ฑ… ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…์œผ๋กœ ์ด๋™
  2. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€์—์„œ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฆ„: ๊ทœ์น™์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” fw-allow-health-checks๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ๋„คํŠธ์›Œํฌ: VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ์šฐ์„ ์ˆœ์œ„: ์šฐ์„ ์ˆœ์œ„์˜ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์ธ๊ทธ๋ ˆ์Šค ํŠธ๋ž˜ํ”ฝ์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ทœ์น™๋ณด๋‹ค ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ–๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠธ๋ž˜ํ”ฝ ๋ฐฉํ–ฅ: ์ธ๊ทธ๋ ˆ์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ์ผ์น˜ ์‹œ ์ž‘์—…: ํ—ˆ์šฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ€์ƒ: ์ง€์ •๋œ ๋Œ€์ƒ ํƒœ๊ทธ๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ๋Œ€์ƒ ํƒœ๊ทธ ํ•„๋“œ์— ํƒœ๊ทธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” allow-health-checks๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์†Œ์Šค ํ•„ํ„ฐ: IP ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ์†Œ์Šค IP ๋ฒ”์œ„: ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์œ ํ˜•, ํŠธ๋ž˜ํ”ฝ ์œ ํ˜•, ์ƒํƒœ ์ ๊ฒ€ ์œ ํ˜•์— ๋”ฐ๋ผ ์†Œ์Šค IP ๋ฒ”์œ„๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋ธŒ IP ๋ฒ”์œ„ ๋ฐ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    • ํ—ˆ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ: tcp ๋ฐ ์ƒํƒœ ์ ๊ฒ€์— ๊ตฌ์„ฑ๋œ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. TCP๋Š” ๋ชจ๋“  ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
    • ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๋˜๋Š” ๊ฐ ์ธ์Šคํ„ด์Šค์— ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒˆ ์ธ๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์ ์šฉ๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋กœ allow-health-checks๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ๋‹ค์Œ gcloud ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌGoogle Cloud ์ƒํƒœ ์ ๊ฒ€ ์‹œ์Šคํ…œ์—์„œ allow-health-checks ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” VPC ๋„คํŠธ์›Œํฌ์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋“ค์–ด์˜ค๋Š” TCP ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๋Š” fw-allow-health-checks๋ผ๋Š” ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์œ ํ˜•์— ๋”ฐ๋ผ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ IPv6 ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๋ธŒ IP ๋ฒ”์œ„ ๋ฐ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์ง‘ํ•ฉ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

    NETWORK_NAME์„ VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ณ  PORT๋ฅผ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create fw-allow-health-checks \
        --network=NETWORK_NAME \
        --action=ALLOW \
        --direction=INGRESS \
        --source-ranges=SOURCE_IP_RANGE \
        --target-tags=allow-health-checks \
        --rules=tcp:PORT

    SOURCE_IP_RANGE ๊ฐ’์€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์œ ํ˜•, ํŠธ๋ž˜ํ”ฝ ์œ ํ˜•, ์ƒํƒœ ์ ๊ฒ€ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ”„๋กœ๋ธŒ IP ๋ฒ”์œ„ ๋ฐ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๋˜๋Š” ๊ฐ ์ธ์Šคํ„ด์Šค์— ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒˆ ์ธ๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์ ์šฉ๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋กœ allow-health-checks๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋ฌธ์„œ ๋ฐ API ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ด€๋ จ ๋ฌธ์„œ:

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์ƒํƒœ ์ ๊ฒ€ ์—ฐ๊ฒฐ

์•„์ง ์ƒํƒœ ์ ๊ฒ€์„ ์„ ํƒํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ƒํƒœ ์ ๊ฒ€ ๊ฐœ์š”: ์ƒํƒœ ์ ๊ฒ€ ์„ ํƒ์„ ๊ฒ€ํ† ํ•˜์„ธ์š”.

์ƒํƒœ ์ ๊ฒ€์„ ์ƒˆ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ํ•ด๋‹น ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์„ค์ • ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ด ์„น์…˜์—์„œ๋Š” ์ƒํƒœ ์ ๊ฒ€์„ ๊ธฐ์กด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” ๋‹ค์Œ ์ž‘์—…์„ ์ด๋ฏธ ์™„๋ฃŒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

์ƒํƒœ ์ ๊ฒ€์„ ๊ธฐ์กด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  3. ์ˆ˜์ • ์„ ํด๋ฆญํ•œ ๋‹ค์Œ ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ƒํƒœ ์ ๊ฒ€ ๋ฉ”๋‰ด์—์„œ ์ƒํƒœ ์ ๊ฒ€์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

์ƒํƒœ ์ ๊ฒ€์„ ๊ธฐ์กด์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ด๋ฆ„๊ณผ ๋ฒ”์œ„๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋ฐ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋‹น ํ•˜๋‚˜์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—๋Š” ๋‹จ์ผ URL ๋งต๊ณผ ์—ฐ๊ฒฐ๋œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋‚ด๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๋Œ€ํ•œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute backend-services list \
          --region=REGION \
          --filter="loadBalancingScheme=INTERNAL"
      
    • ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๋Œ€ํ•œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute backend-services list \
          --region=REGION \
          --filter="loadBalancingScheme=EXTERNAL"
      
    • ์ „์—ญ ์™ธ๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL_MANAGED" \
          --filter="protocol=(SSL,TCP)"
      
    • ๊ธฐ์กด ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๋Œ€ํ•œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=(SSL,TCP)"
      
    • ๋ฆฌ์ „ ๊ฐ„ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๋Œ€ํ•œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=INTERNAL_MANAGED" \
          --filter="protocol=(SSL,TCP)"
      
    • ๋ฆฌ์ „๋ณ„ ์™ธ๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute backend-services list \
          --region=REGION \
          --filter="loadBalancingScheme=EXTERNAL_MANAGED" \
          --filter="protocol=(SSL,TCP)"
      
    • ๋ฆฌ์ „๋ณ„ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute backend-services list \
          --region=REGION \
          --filter="loadBalancingScheme=INTERNAL_MANAGED" \
          --filter="protocol=(SSL,TCP)"
      
    • ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ, ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ, ๋ฆฌ์ „ ๊ฐ„ ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ํ•˜๋ ค๋ฉด ๋จผ์ € URL ๋งต์„ ์‹๋ณ„ํ•œ ๋‹ค์Œ ๋งต์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๋Œ€ํ•œ URL ๋งต๊ณผ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋Š” ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค ๋“ฑ๊ธ‰์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ „์—ญ์ ์ž…๋‹ˆ๋‹ค. URL_MAP_NAME์„ URL ๋งต์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ์‘๋‹ต์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

      gcloud compute url-maps list \
          --global
      
      gcloud compute url-maps describe URL_MAP_NAME \
          --global
      
    • ๋ฆฌ์ „ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋˜๋Š” ๋ฆฌ์ „ ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ํ•˜๋ ค๋ฉด ๋จผ์ € URL ๋งต์„ ์‹๋ณ„ํ•œ ๋‹ค์Œ ๋งต์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ URL ๋งต๊ณผ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋Š” ๋ชจ๋‘ ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. REGION_LIST๋ฅผ ์ฟผ๋ฆฌํ• Google Cloud ๋ฆฌ์ „์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. URL_MAP_NAME์„ URL ๋งต ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ณ  REGION์„ ํ•ด๋‹น ๋ฆฌ์ „์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ์‘๋‹ต์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

      gcloud compute url-maps list \
          --regions=REGION_LIST
      
      gcloud compute url-maps describe URL_MAP_NAME \
          --region=REGION
      
  2. ์ƒํƒœ ์ ๊ฒ€์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ ์ ๊ฒ€ ๋‚˜์—ด์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  3. compute backend-services update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ์ ๊ฒ€์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋Š” ๋‹จ์ผ ์ƒํƒœ ํ™•์ธ์„ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด์—์„œ BACKEND_SERVICE_NAME์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ณ , HEALTH_CHECK_NAME์„ ์ƒํƒœ ์ ๊ฒ€ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ณ , ํ•„์š”ํ•˜๋ฉด REGION์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋‚˜ ์ƒํƒœ ์ ๊ฒ€ ๋˜๋Š” ๋‘˜ ๋‹ค์˜Google Cloud ๋ฆฌ์ „์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • ๋‚ด๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ƒํƒœ ์ ๊ฒ€์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋Š” ๋ฆฌ์ „ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ์ „์—ญ ๋˜๋Š” ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ๋Š” ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€ ์ฐธ์กฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ์ „์—ญ ์ƒํƒœ ์ ๊ฒ€์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ --health-checks-region ๋Œ€์‹  --global-health-checks๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --region=REGION \
          --health-checks=HEALTH_CHECK_NAME \
          --health-checks-region=REGION
      
    • ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ƒํƒœ ์ ๊ฒ€์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋Š” ๋ฆฌ์ „ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ๋ฆฌ์ „๋ณ„ ์ƒํƒœ ์ ๊ฒ€์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --region=REGION \
          --health-checks=HEALTH_CHECK_NAME \
          --health-checks-region=REGION
      
    • ์ „์—ญ ์™ธ๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ, ๊ธฐ๋ณธ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ, ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ, ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋˜๋Š” ๋ฆฌ์ „ ๊ฐ„ ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ƒํƒœ ์ ๊ฒ€์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋ฐ ์ƒํƒœ ์ ๊ฒ€์€ ์ด๋Ÿฌํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๋Œ€ํ•ด ์ „์—ญ์ ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ ๋‘˜ ์ด์ƒ์˜ ์ƒํƒœ ์ ๊ฒ€์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --global \
          --health-checks HEALTH_CHECK_NAME \
          --global-health-checks
      
    • ๋ฆฌ์ „ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ, ๋ฆฌ์ „ ์™ธ๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ, ๋ฆฌ์ „ ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋˜๋Š” ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ƒํƒœ ์ ๊ฒ€์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€ ์ƒํƒœ ์ ๊ฒ€ ๋ชจ๋‘ ๋ฆฌ์ „ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” ๋‘˜ ์ด์ƒ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‘˜ ์ด์ƒ์˜ ์ƒํƒœ ์ ๊ฒ€์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --region=REGION \
          --health-checks=HEALTH_CHECK_NAME \
          --health-checks-region=REGION
      

API

  1. backendServices.list API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ์ƒํƒœ ์ ๊ฒ€์„ ๋ด…๋‹ˆ๋‹ค.

  3. ์ƒํƒœ ์ ๊ฒ€์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ API ํ˜ธ์ถœ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€ ์—ฐ๊ฒฐ

๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ์ƒˆ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋Œ€์ƒ ํ’€์„ ์‚ฌ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ด ์„น์…˜์—์„œ๋Š” ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” ๋‹ค์Œ ์ž‘์—…์„ ์ด๋ฏธ ์™„๋ฃŒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

์ƒํƒœ ์ ๊ฒ€์„ ๊ธฐ์กด์˜ ๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  3. ์ˆ˜์ • ์„ ํด๋ฆญํ•œ ๋‹ค์Œ ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ƒํƒœ ์ ๊ฒ€ ๋ฉ”๋‰ด์—์„œ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  5. ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

์ƒํƒœ ์ ๊ฒ€์„ ๊ธฐ์กด์˜ ๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋Œ€์ƒ ํ’€์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—๋Š” ๋Œ€์ƒ ํ’€์ด ํ•˜๋‚˜ ์ด์ƒ ์žˆ์œผ๋ฉฐ ๋ณด์กฐ ๋ฐฑ์—… ํ’€์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    gcloud compute target-pools list
    
  2. HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋ด…๋‹ˆ๋‹ค.

  3. ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋Œ€์ƒ ํ’€์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด์—์„œ TARGET_POOL_NAME์„ ๋Œ€์ƒ ํ’€์˜ ์ด๋ฆ„์œผ๋กœ, REGION์„ ๋ฆฌ์ „์œผ๋กœ, LEGACY_CHECK_NAME์„ ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์€ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ๋Œ€์ƒ ํ’€์—์„œ ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute target-pools remove-health-checks TARGET_POOL_NAME \
          --region=REGION \
          --http-health-check LEGACY_CHECK_NAME
      
    • ๋Œ€์ƒ ํ’€์— ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

API

  1. targetPools.list API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ƒ ํ’€์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๊ธฐ์กด ์ƒํƒœ ์ ๊ฒ€์„ ๋ณด๊ณ  ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ธฐ์กด HTTP ์ƒํƒœ ์ ๊ฒ€์„ ๋Œ€์ƒ ํ’€๊ณผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด targetPools.addHealthCheck API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ์ ๊ฒ€ ์ƒํƒœ ํ™•์ธ

์ƒํƒœ ์ ๊ฒ€์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋˜๋Š” ๋Œ€์ƒ ํ’€๊ณผ ์—ฐ๊ฒฐํ•˜๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์ฆ‰๊ฐ์ ์ธ ์ƒํƒœ ์ ๊ฒ€ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์š”์•ฝ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฐฑ์—”๋“œ์—์„œ ์ •์ƒ ์—ด์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋˜๋Š” ๋„คํŠธ์›Œํฌ ์—”๋“œํฌ์ธํŠธ ๊ทธ๋ฃน์˜ ์ƒํƒœ๊ฐ€ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

gcloud

  • ๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ด๋ฆ„๊ณผ ๋ฒ”์œ„(์ „์—ญ ๋˜๋Š” ๋ฆฌ์ „)๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ๋ฒ”์œ„์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    compute backend-services get-health ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๊ฒฝ์šฐ NAME์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ, REGION์„ ํ•ด๋‹น ๋ฆฌ์ „์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • ์ „์—ญ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ฆ‰๊ฐ์ ์ธ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

      gcloud compute backend-services get-health GLOBAL_BACKEND_SERVICE_NAME \
          --global
      
    • ๋ฆฌ์ „๋ณ„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ฆ‰๊ฐ์ ์ธ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

      gcloud compute backend-services get-health REGIONAL_BACKEND_SERVICE_NAME \
          --region=REGION
      
  • ๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๊ฒฝ์šฐ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋Œ€์ƒ ํ’€์˜ ์ด๋ฆ„๊ณผ ๋ฆฌ์ „์„ ์‹๋ณ„ํ•œ ํ›„ compute target-pools get-health ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NAME์„ ๋Œ€์ƒ ํ’€์˜ ์ด๋ฆ„์œผ๋กœ, REGION์„ ๋ฆฌ์ „์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud compute target-pools get-health TARGET_POOL_NAME \
        --region=REGION
    

API

  • ๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ด๋ฆ„๊ณผ ๋ฒ”์œ„(์ „์—ญ ๋˜๋Š” ๋ฆฌ์ „)๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ๋ฒ”์œ„์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • ์ „์—ญ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ฆ‰๊ฐ์ ์ธ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด backendServices.getHealth๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • ๋ฆฌ์ „๋ณ„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ฆ‰๊ฐ์ ์ธ ์ƒํƒœ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด regionBackendServices.getHealth๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋Œ€์ƒ ํ’€ ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ํŒจ์Šค ์Šค๋ฃจ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๊ฒฝ์šฐ targetPools.getHealth๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.