๊ธฐ๋ณธ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋กœ ๋ฆฌ์†Œ์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ด ๋ฌธ์„œ์—์„œ๋Š” ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ ๋ฆฌ์†Œ์Šค๋ฅผ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

์„ค์ •์ด ๋‹ค์Œ ๊ธฐ๋ณธ ์š”๊ฑด์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ์„ค์ •

์ฝ˜์†”

  1. Google Cloud ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. Google Cloud๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  Google ์ œํ’ˆ์˜ ์‹ค์ œ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•ด ๋ณด์„ธ์š”. ์‹ ๊ทœ ๊ณ ๊ฐ์—๊ฒŒ๋Š” ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” $300์˜ ๋ฌด๋ฃŒ ํฌ๋ ˆ๋”ง์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

gcloud

gcloud config set project PROJECT_ID

PROJECT_ID๋ฅผ ์ด ๊ฐ€์ด๋“œ์— ์‚ฌ์šฉ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๊ถŒํ•œ

์ด ๋ฌธ์„œ์˜ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด๋ ค๋ฉด Google Cloud ํ”„๋กœ์ ํŠธ์—์„œ Compute Engine ๊ฐ€์ƒ ๋จธ์‹ (VM) ์ธ์Šคํ„ด์Šค, ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™, ์˜ˆ์•ฝ๋œ IP ์ฃผ์†Œ, Cloud Storage ๋ฒ„ํ‚ท์„ ๋งŒ๋“œ๋Š” ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ์†Œ์œ ์ž ๋˜๋Š” ํŽธ์ง‘์ž์ด๊ฑฐ๋‚˜ ๋‹ค์Œ Compute Engine IAM ์—ญํ• ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ํ•„์š”ํ•œ ์—ญํ• 
์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ Compute ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ์ž ์—ญํ• (roles/compute.instanceAdmin)
๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ Compute ๋ณด์•ˆ ๊ด€๋ฆฌ์ž ์—ญํ• (roles/compute.securityAdmin)
๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ์š”์†Œ ๋งŒ๋“ค๊ธฐ Compute ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž ์—ญํ• (roles/compute.networkAdmin)
ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ(์„ ํƒ์‚ฌํ•ญ) ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์ž ์—ญํ• (roles/resourcemanager.projectCreator)
Cloud Storage ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๊ด€๋ฆฌ์ž ์—ญํ• (roles/storage.objectAdmin)

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋ฆฌ์†Œ์Šค ๋งŒ๋“ค๊ธฐ

์ด ๋ฌธ์„œ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“  ํ›„ ์ด๋ฅผ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

  • VM์ด ์žˆ๋Š” ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน
  • Cloud Storage ๋ฒ„ํ‚ท
  • ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน๊ณผ Cloud Storage ๋ฒ„ํ‚ท์ด ๋ฐฑ์—”๋“œ๋กœ ํฌํ•จ๋œ HTTP ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ

๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ

์ด ์„น์…˜์—์„œ๋Š” Linux VM์œผ๋กœ Apache๋ฅผ ์‹คํ–‰ ์ค‘์ธ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์€ ์ง€์ •๋œ ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ด๋ฆ„์— lb-backend-template๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ฆฌ์ „์—์„œ REGION์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ๋ถ€ํŒ… ๋””์Šคํฌ ์„น์…˜์—์„œ ๋ถ€ํŒ… ๋””์Šคํฌ์˜ ์ด๋ฏธ์ง€๊ฐ€ Debian GNU/Linux 12(bookworm)์™€ ๊ฐ™์€ Debian ์ด๋ฏธ์ง€๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ์•ˆ๋‚ด์—์„œ๋Š” apt-get์ฒ˜๋Ÿผ Debian์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  6. ๊ณ ๊ธ‰ ์˜ต์…˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  7. ๋„คํŠธ์›Œํ‚น์„ ํด๋ฆญํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ ํ•„๋“œ์— allow-health-check๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  8. ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•˜๊ณ  ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ ํ•„๋“œ์— ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2
    
  9. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

gcloud compute instance-templates create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud compute instance-templates create lb-backend-template \
    --region=REGION \
    --network=default \
    --subnet=default \
    --tags=allow-health-check \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์œผ๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ƒˆ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน(์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless))์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. ์ด๋ฆ„์— lb-backend-example๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  5. ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ์—์„œ ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ lb-backend-template์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. ์œ„์น˜์—์„œ ๋‹จ์ผ ์˜์—ญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  7. ๋ฆฌ์ „์—์„œ REGION์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  8. ์˜์—ญ์—์„œ ZONE๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  9. ์ž๋™ ํ™•์žฅ ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ: ๊ทธ๋ฃน์— ์ธ์Šคํ„ด์Šค ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ์ˆ˜ ๋ฐ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ 2๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  10. ํฌํŠธ ๋งคํ•‘ ์„น์…˜์—์„œ ํฌํŠธ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  11. ํฌํŠธ ์ด๋ฆ„์œผ๋กœ http๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํฌํŠธ ๋ฒˆํ˜ธ๋กœ 80์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

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

gcloud

gcloud compute instance-groups managed create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud compute instance-groups managed create lb-backend-example \
    --template=lb-backend-template \
    --size=2 --zone=ZONE

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์— ์ด๋ฆ„์ด ์ง€์ •๋œ ํฌํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone ZONE

๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๊ตฌ์„ฑ

์ด ์„น์…˜์—์„œ๋Š” fw-allow-health-check ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ค๊ณ  ๋Œ€์ƒ ํƒœ๊ทธ allow-health-check๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VM์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ƒํƒœ ํ™•์ธ ์‹œ์Šคํ…œ์˜ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ฐฉํ™”๋ฒฝ ์ •์ฑ… ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…์œผ๋กœ ์ด๋™

  2. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ด๋ฆ„์— fw-allow-health-check๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  4. ๋„คํŠธ์›Œํฌ์—์„œ default๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ๋Œ€์ƒ์œผ๋กœ ์ง€์ •๋œ ๋Œ€์ƒ ํƒœ๊ทธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. ๋Œ€์ƒ ํƒœ๊ทธ ํ•„๋“œ์— allow-health-check๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  7. ์†Œ์Šค ํ•„ํ„ฐ๋ฅผ IPv4 ๋ฒ”์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  8. ์†Œ์Šค IPv4 ๋ฒ”์œ„๋ฅผ 35.191.0.0/16์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  9. ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ ์„น์…˜์—์„œ ์ง€์ •๋œ ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  10. TCP ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ 80์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

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

gcloud

gcloud compute firewall-rules create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud compute firewall-rules create fw-allow-health-check \
    --network=default \
    --action=allow \
    --direction=ingress \
    --source-ranges=35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

Cloud Storage ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ

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

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud Storage ๋ฒ„ํ‚ท ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud Storage ๋ฒ„ํ‚ท์œผ๋กœ ์ด๋™

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

  3. ๋ฒ„ํ‚ท ์ด๋ฆ„ ์ง€์ • ๋ฐ•์Šค์— storage-backend-bucket์„ ์ž…๋ ฅํ•˜๊ณ  ๊ณ„์†์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ฐ์ดํ„ฐ ์ €์žฅ ์œ„์น˜ ์„ ํƒ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์œ„์น˜ ์œ ํ˜•์„ ๋ฆฌ์ „์œผ๋กœ ์„ค์ •ํ•˜๊ณ  REGION์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

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

  7. ์„ ํƒ์‚ฌํ•ญ: ๊ณต๊ฐœ ์•ก์„ธ์Šค๊ฐ€ ์ฐจ๋‹จ๋จ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์ด ๋ฒ„ํ‚ท์— ๊ณต๊ฐœ ์•ก์„ธ์Šค ๋ฐฉ์ง€ ์ ์šฉ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํ•ด์ œํ•˜๊ณ  ํ™•์ธ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

gcloud storage buckets create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฒ„ํ‚ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud storage buckets create gs://storage-backend-bucket \
    --default-storage-class=standard \
    --location=REGION --uniform-bucket-level-access

Cloud Storage ๋ฒ„ํ‚ท์œผ๋กœ ์ฝ˜ํ…์ธ  ์ „์†ก

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ๋งŒ๋“  ํ›„ ๋ฒ„ํ‚ท์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๊ณต๊ฐœ Cloud Storage ๋ฒ„ํ‚ท์—์„œ ์ž์ฒด Cloud Storage ๋ฒ„ํ‚ท์œผ๋กœ ๋‹ค์Œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. Cloud Shell ํ™œ์„ฑํ™”๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  2. Cloud Shell์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://storage-backend-bucket/never-fetch/

Google Cloud ์ฝ˜์†”์—์„œ ๋ฒ„ํ‚ท์˜ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์— ์žˆ๋Š” ์ƒˆ๋กœ๊ณ ์นจ์„ ํด๋ฆญํ•˜์—ฌ ํŒŒ์ผ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Cloud Storage ๋ฒ„ํ‚ท์„ ๊ณต๊ฐœ์ ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •

Cloud Storage ๋ฒ„ํ‚ท์„ ๊ณต๊ฐœ์ ์œผ๋กœ ์ฝ๊ธฐ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•˜๋ฉด ์ธํ„ฐ๋„ท์˜ ๋ˆ„๊ตฌ๋‚˜ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋‚˜์—ด ๋ฐ ํ‘œ์‹œํ•˜๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(ACL ์ œ์™ธ)๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ๋ฒ„ํ‚ท์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ์‹ค์ˆ˜๋กœ ๋…ธ์ถœ๋˜๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ด๋ ค๋ฉด ๊ณต๊ฐœ ๊ฐ์ฒด์™€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋™์ผํ•œ ๋ฒ„ํ‚ท์— ์ €์žฅํ•˜์ง€ ๋งˆ์„ธ์š”.

์ฝ˜์†”

๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฒ„ํ‚ท์˜ ๊ฐ์ฒด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud Storage ๋ฒ„ํ‚ท ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud Storage ๋ฒ„ํ‚ท์œผ๋กœ ์ด๋™

  2. storage-backend-bucket ์ด๋ฆ„์„ ํด๋ฆญํ•œ ํ›„ ๊ถŒํ•œ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์ƒˆ ์ฃผ ๊ตฌ์„ฑ์› ์ƒ์ž์— allUsers๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  5. ์—ญํ•  ์„ ํƒ ์ƒ์ž์—์„œ Cloud Storage > ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๋ทฐ์–ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  7. ๊ณต๊ฐœ ์•ก์„ธ์Šค ํ—ˆ์šฉ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

gcloud storage buckets add-iam-policy-binding ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฒ„ํ‚ท์˜ ๊ฐ์ฒด ๋ณด๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

gcloud storage buckets add-iam-policy-binding gs://storage-backend-bucket \
    --member=allUsers \
    --role=roles/storage.objectViewer

์™ธ๋ถ€ IP ์ฃผ์†Œ ์˜ˆ์•ฝ

์ธ์Šคํ„ด์Šค๊ฐ€ ์ค€๋น„๋˜์–ด ์‹คํ–‰ ์ค‘์ด๋ฏ€๋กœ ๊ณ ๊ฐ์ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ „์—ญ ๊ณ ์ • ์™ธ๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ IP ์ฃผ์†Œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    IP ์ฃผ์†Œ๋กœ ์ด๋™

  2. IPv4 ์ฃผ์†Œ๋ฅผ ์˜ˆ์•ฝํ•˜๋ ค๋ฉด ์™ธ๋ถ€ ์˜ˆ์•ฝ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์™ธ๋ถ€ ๊ณ ์ • IP ์ฃผ์†Œ ์˜ˆ์•ฝ ํŽ˜์ด์ง€์˜ ์ด๋ฆ„์— lb-ipv4-1์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  4. ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค ๋“ฑ๊ธ‰์„ ํ”„๋ฆฌ๋ฏธ์—„์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  5. IP ๋ฒ„์ „์„ IPv4๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  6. ์œ ํ˜•์„ ์ „์—ญ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  7. ์˜ˆ์•ฝ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

์™ธ๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์˜ˆ์•ฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global
  

์˜ˆ์•ฝ๋œ IPv4 ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global
  

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

์ด ์„น์…˜์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ฐ„์— HTTP(ํ”„๋ŸฐํŠธ์—”๋“œ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์œ ํ˜• ์„ ํƒ

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ถ€ํ•˜ ๋ถ„์‚ฐ์œผ๋กœ ์ด๋™

  2. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์œ ํ˜•์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ(HTTP/HTTPS)๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ณต๊ฐœ ๋˜๋Š” ๋‚ด๋ถ€์—์„œ ๊ณต๊ฐœ(์™ธ๋ถ€)๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ์ „์—ญ ๋˜๋Š” ๋‹จ์ผ ๋ฆฌ์ „ ๋ฐฐํฌ์—์„œ ์ „์—ญ ์›Œํฌ๋กœ๋“œ์— ์ ํ•ฉ์„ ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ƒ์„ฑ์— ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ตฌ์„ฑ

  1. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ด๋ฆ„ ํ•„๋“œ์— web-map-http๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  2. ํ”„๋ŸฐํŠธ์—”๋“œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    • ํ”„๋กœํ† ์ฝœ: HTTP
    • IP ๋ฒ„์ „: IPv4
    • IP ์ฃผ์†Œ: lb-ipv4-1
    • ํฌํŠธ: 443
  3. ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋ฐ ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์—์„œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•œ ํ›„ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    1. ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
      • ์ด๋ฆ„: web-backend-service
      • ํ”„๋กœํ† ์ฝœ: HTTP
      • ์ด๋ฆ„์ด ์ง€์ •๋œ ํฌํŠธ: http
    2. ์ƒํƒœ ์ ๊ฒ€ ๋ชฉ๋ก์—์„œ ์ƒํƒœ ์ ๊ฒ€ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•œ ํ›„ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
      • ์ด๋ฆ„: http-basic-check
      • ํ”„๋กœํ† ์ฝœ: HTTP
    3. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    4. ๋ฐฑ์—”๋“œ > ์ƒˆ ๋ฐฑ์—”๋“œ ์„น์…˜์—์„œ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
      • ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน: lb-backend-example
      • ํฌํŠธ ๋ฒˆํ˜ธ: 80
    5. ๋กœ๊น… ์„น์…˜์—์„œ ๋กœ๊น… ์‚ฌ์šฉ ์„ค์ • ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    6. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ํ™•์ธ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋ฐ ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์—์„œ ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท ์ด๋ฆ„: cats
    • Cloud Storage ๋ฒ„ํ‚ท: storage-backend-bucket
  7. ํ™•์ธ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  8. ํ˜ธ์ŠคํŠธ ๋ฐ ๊ฒฝ๋กœ ๊ทœ์น™์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  9. cats์˜ ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ 2 ํ•„๋“œ์— *๋ฅผ, ๊ฒฝ๋กœ 2 ํ•„๋“œ์— /never-fetch/*๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  10. ๊ฒ€ํ†  ๋ฐ ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  11. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ ์„ค์ •์„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.
  12. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ์ƒํƒœ ํ™•์ธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  2. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute backend-services create web-backend-service \
        --load-balancing-scheme=EXTERNAL \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check \
        --enable-logging \
        --logging-sample-rate=1.0 \
        --enable-cdn \
        --global
    
  3. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์— ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ๋ฐฑ์—”๋“œ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute backend-services add-backend web-backend-service \
        --instance-group=lb-backend-example \
        --instance-group-zone=ZONE \
        --global
    
  4. ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute backend-buckets create cats \
        --gcs-bucket-name=storage-backend-bucket
    
  5. ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋ฐ ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” URL ๋งต์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute url-maps create web-map-http \
        --default-service web-backend-service
    
    gcloud compute url-maps add-path-matcher web-map-http \
        --path-matcher-name=cats-path-matcher \
        --default-backend-bucket=cats \
        --new-hosts="*" \
        --backend-bucket-path-rules="/never-fetch/*=cats"
    
  6. ๋Œ€์ƒ HTTP ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค์–ด ์š”์ฒญ์„ URL ๋งต์œผ๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map=web-map-http
    
  7. ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ํ”„๋ก์‹œ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ์ „๋‹ฌ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules create web-map-http-forwarding-rule \
        --load-balancing-scheme=EXTERNAL \
        --address=lb-ipv4-1 \
        --global \
        --target-http-proxy=http-lb-proxy \
        --ports=80
    

์ธ์Šคํ„ด์Šค๋กœ ์ „์†ก๋˜๋Š” ํŠธ๋ž˜ํ”ฝ ํ…Œ์ŠคํŠธ

๋ถ€ํ•˜ ๋ถ„์‚ฐ ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ฏ€๋กœ ์ด์ œ ์ „๋‹ฌ ๊ทœ์น™์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๊ณ  ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„์‚ฐ๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ถ€ํ•˜ ๋ถ„์‚ฐ์œผ๋กœ ์ด๋™

  2. web-map-http๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ํ”„๋ŸฐํŠธ์—”๋“œ ์„น์…˜์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP:ํฌํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— http://IP_ADDRESS๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ๋ธŒ๋ผ์šฐ์ €๋Š” ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•œ ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„๊ณผ ์˜์—ญ์„ ํ‘œ์‹œํ•˜๋Š” ์ฝ˜ํ…์ธ ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: Page served from: lb-backend-example-xxxx).

  5. ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— http://IP_ADDRESS/never-fetch/three-cats.jpg๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ๋ธŒ๋ผ์šฐ์ €์— ์ด๋ฏธ์ง€๊ฐ€ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๋ฆฌ์†Œ์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ด ์„น์…˜์—์„œ๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌ ๊ทœ์น™์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ๋จผ์ € ์ „๋‹ฌ ๊ทœ์น™๊ณผ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ „๋‹ฌ ๊ทœ์น™๊ณผ ํ•จ๊ป˜ ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ „๋‹ฌ ๊ทœ์น™์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜ ์ฐจ์ด๋กœ ์ธํ•ด ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋กœ ์ด์ „ํ•  ๋•Œ ํŠนํžˆ HTTP/1.1 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋™์•ˆ๊ณผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ›„์— ๋ฐฑ์—”๋“œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ฝ˜์†”

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ์ค€๋น„

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ถ€ํ•˜ ๋ถ„์‚ฐ์œผ๋กœ ์ด๋™

  2. web-map-http์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. web-backend-service์˜ ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ์„น์…˜์—์„œ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ํ™•์ธํ•œ ํ›„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    • ์ƒํƒœ: ์‹œ์ž‘๋˜์ง€ ์•Š์Œ
    • ์Šคํ‚ค๋งˆ ํ™œ๋™: EXTERNAL: 100% EXTERNAL_MANAGED:0%
  5. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์ฐฝ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์—์„œ ์ค€๋น„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 6๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ƒํƒœ๊ฐ€ ํ…Œ์ŠคํŠธ ์ค€๋น„ ์™„๋ฃŒ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ํŠธ๋ž˜ํ”ฝ ์ผ๋ถ€ ์ „์†ก

  1. web-backend-service์˜ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์ฐฝ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์—์„œ ๋น„์œจ๋ณ„ ํ…Œ์ŠคํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ํ…Œ์ŠคํŠธ ๋น„์œจ์— 10์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์š”์ฒญ์˜ 10%๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์ „์†ก๋˜๊ณ  ์š”์ฒญ์˜ ๋‚˜๋จธ์ง€ 90%๋Š” ๊ณ„์† ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  4. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ƒํƒœ๊ฐ€ ํ…Œ์ŠคํŠธ ์ง„ํ–‰๋ฅ ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋น„์œจ์ด 10%๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ์ตœ์†Œ 6๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  5. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์š”์ฒญ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— http://IP_ADDRESS๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Page served from: lb-backend-example-xxxx ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

  6. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋•Œ๊นŒ์ง€ ์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์ „์†ก๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์˜ ๋น„์œจ์„ ์ ์ง„์ ์œผ๋กœ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ์ „์†ก

  1. web-backend-service์˜ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์ฐฝ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์—์„œ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ํ…Œ์ŠคํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ์š”์ฒญ์ด ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  3. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ƒํƒœ๊ฐ€ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ํ…Œ์ŠคํŠธ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋น„์œจ์ด 100%๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 6๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

EXTERNAL_MANAGED ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์Šคํ‚ค๋งˆ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  1. web-backend-service์˜ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์ฐฝ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋  ๋•Œ๊นŒ์ง€ ์ตœ์†Œ 6๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ƒํƒœ ์—ด์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋จ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ์Šคํ‚ค๋งˆ ํ™œ๋™์ด EXTERNAL: 0% EXTERNAL_MANAGED:100%๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ „๋‹ฌ ๊ทœ์น™์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ๋จผ์ € ์ „๋‹ฌ ๊ทœ์น™๊ณผ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute backend-services update web-backend-service \
      --external-managed-migration-state=PREPARE \
      --global
    

    ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค(์ตœ์†Œ 6๋ถ„ ์ด์ƒ).

  2. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋กœ ์ผ๋ถ€ ํŠธ๋ž˜ํ”ฝ(์˜ˆ: 10%)์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    gcloud compute backend-services update web-backend-service \
      --external-managed-migration-state=TEST_BY_PERCENTAGE \
      --external-managed-migration-testing-percentage=10 \
      --global
    

    ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค(์ตœ์†Œ 6๋ถ„ ์ด์ƒ).

    ๋ฆฌ์†Œ์Šค๊ฐ€ ์ค€๋น„๋˜๋ฉด ์š”์ฒญ์˜ 10%๋ฅผ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋ณด๋‚ด๊ณ  90%๋Š” ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  3. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

    ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— http://IP_ADDRESS๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Page served from: lb-backend-example-xxxx ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋น„์œจ์„ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

    gcloud compute backend-services update web-backend-service \
      --external-managed-migration-state=TEST_BY_PERCENTAGE \
      --external-managed-migration-testing-percentage=50 \
      --global
    

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

    100%์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

  4. ์„ ํƒ์‚ฌํ•ญ: ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  5. ํ…Œ์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    gcloud compute backend-services update web-backend-service \
      --external-managed-migration-state=TEST_ALL_TRAFFIC \
      --global
    

    ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 6๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  6. ์„ ํƒ์‚ฌํ•ญ: ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  7. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์Šคํ‚ค๋งˆ๋ฅผ EXTERNAL_MANAGED๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute backend-services update web-backend-service \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --global
    

    ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์™„์ „ํžˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋  ๋•Œ๊นŒ์ง€ ์ž ์‹œ(์ตœ์†Œ 6๋ถ„ ์ด์ƒ) ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  8. ์„ ํƒ์‚ฌํ•ญ: ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์Šคํ‚ค๋งˆ๊ฐ€ EXTERNAL_MANAGED๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ „๋‹ฌ ๊ทœ์น™์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ๋จผ์ € ์ „๋‹ฌ ๊ทœ์น™๊ณผ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ฝ˜์†”

๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์€ ์ „๋‹ฌ ๊ทœ์น™๊ณผ ํ•จ๊ป˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋˜๋ฏ€๋กœ Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด Google Cloud CLI๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules update web-map-http-forwarding-rule \
      --external-managed-backend-bucket-migration-state=PREPARE \
      --global
    

    ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค(์ตœ์†Œ 6๋ถ„ ์ด์ƒ).

  2. ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์œผ๋กœ ์ผ๋ถ€ ํŠธ๋ž˜ํ”ฝ(์˜ˆ: 10%)์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules update web-map-http-forwarding-rule \
      --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \
      --external-managed-backend-bucket-migration-testing-percentage=10 \
      --global
    

    ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค(์ตœ์†Œ 6๋ถ„ ์ด์ƒ).

    ๋ฆฌ์†Œ์Šค๊ฐ€ ์ค€๋น„๋˜๋ฉด ์š”์ฒญ์˜ 10%๋ฅผ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋ณด๋‚ด๊ณ  90%๋Š” ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  3. ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

    ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— http://IP_ADDRESS/never-fetch/three-cats.jpg๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์–‘์ด ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋น„์œจ์„ ๋†’์ž…๋‹ˆ๋‹ค. 100%์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules update web-map-http-forwarding-rule \
      --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \
      --external-managed-backend-bucket-migration-testing-percentage=50 \
      --global
    
  4. ์„ ํƒ์‚ฌํ•ญ: ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  5. ํ…Œ์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules update web-map-http-forwarding-rule \
      --external-managed-backend-bucket-migration-state=TEST_ALL_TRAFFIC \
      --global
    
  6. ์„ ํƒ์‚ฌํ•ญ: ๋ฐฑ์—”๋“œ ๋ฒ„ํ‚ท์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ „๋‹ฌ ๊ทœ์น™ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ฝ˜์†”

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ์ „๋‹ฌ ๊ทœ์น™ ์ค€๋น„

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ถ€ํ•˜ ๋ถ„์‚ฐ์œผ๋กœ ์ด๋™

  2. web-map-http์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. web-map-http-forwarding-rule์˜ ๊ฒฝ์šฐ ์ „๋‹ฌ ๊ทœ์น™ ์„น์…˜์—์„œ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ํ™•์ธํ•œ ํ›„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    • ์ƒํƒœ: ์‹œ์ž‘๋˜์ง€ ์•Š์Œ
    • ์Šคํ‚ค๋งˆ ํ™œ๋™: EXTERNAL: 100% EXTERNAL_MANAGED:0%
  5. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์ฐฝ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์—์„œ ์ค€๋น„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 6๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ƒํƒœ๊ฐ€ ํ…Œ์ŠคํŠธ ์ค€๋น„ ์™„๋ฃŒ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ํŠธ๋ž˜ํ”ฝ ์ผ๋ถ€ ์ „์†ก

  1. web-map-http-forwarding-rule์˜ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์ฐฝ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์—์„œ ๋น„์œจ๋ณ„ ํ…Œ์ŠคํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ํ…Œ์ŠคํŠธ ๋น„์œจ์— 10์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์š”์ฒญ์˜ 10%๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์ „์†ก๋˜๊ณ  ์š”์ฒญ์˜ ๋‚˜๋จธ์ง€ 90%๋Š” ๊ณ„์† ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  4. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ƒํƒœ๊ฐ€ ํ…Œ์ŠคํŠธ ์ง„ํ–‰๋ฅ ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋น„์œจ์ด 10%๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  5. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์š”์ฒญ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— http://IP_ADDRESS๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Page served from: lb-backend-example-xxxx ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

  6. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋•Œ๊นŒ์ง€ ์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์ „์†ก๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์˜ ๋น„์œจ์„ ์ ์ง„์ ์œผ๋กœ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ์ „์†ก

  1. web-map-http-forwarding-rule์˜ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์ฐฝ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์—์„œ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ํ…Œ์ŠคํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ์š”์ฒญ์ด ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  3. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ƒํƒœ๊ฐ€ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ํ…Œ์ŠคํŠธ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋น„์œจ์ด 100%๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 6๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

EXTERNAL_MANAGED ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์Šคํ‚ค๋งˆ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  1. web-map-http-forwarding-rule์˜ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์ฐฝ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋  ๋•Œ๊นŒ์ง€ ์ตœ์†Œ 6๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ƒํƒœ ์—ด์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋จ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ์Šคํ‚ค๋งˆ ํ™œ๋™์ด EXTERNAL: 0% EXTERNAL_MANAGED:100%๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

gcloud

  1. ์ „๋‹ฌ ๊ทœ์น™์˜ ์Šคํ‚ค๋งˆ๋ฅผ EXTERNAL_MANAGED๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules update web-map-http-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --global
    

    ์ „๋‹ฌ ๊ทœ์น™์ด ์ „์—ญ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์ธํ”„๋ผ๋กœ ์™„์ „ํžˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋  ๋•Œ๊นŒ์ง€ ์ž ์‹œ(์ตœ์†Œ 6๋ถ„ ์ด์ƒ) ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  2. ์„ ํƒ์‚ฌํ•ญ: ์ „๋‹ฌ ๊ทœ์น™์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์Šคํ‚ค๋งˆ๊ฐ€ EXTERNAL_MANAGED๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„