์ด ๋ฌธ์์์๋ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ ๋ฆฌ์์ค๋ฅผ ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
์ค์ ์ด ๋ค์ ๊ธฐ๋ณธ ์๊ฑด์ ์ถฉ์กฑํ๋์ง ํ์ธํฉ๋๋ค.
๊ธฐ๋ณธ ํ๋ก์ ํธ ์ค์
์ฝ์
- Google Cloud ๊ณ์ ์ ๋ก๊ทธ์ธํฉ๋๋ค. Google Cloud๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ณ์ ์ ๋ง๋ค๊ณ Google ์ ํ์ ์ค์ ์ฑ๋ฅ์ ํ๊ฐํด ๋ณด์ธ์. ์ ๊ท ๊ณ ๊ฐ์๊ฒ๋ ์ํฌ๋ก๋๋ฅผ ์คํ, ํ ์คํธ, ๋ฐฐํฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ $300์ ๋ฌด๋ฃ ํฌ๋ ๋ง์ด ์ ๊ณต๋ฉ๋๋ค.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
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)
|
์์ธํ ๋ด์ฉ์ ๋ค์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
- IAM์ ์ฌ์ฉํ์ฌ Cloud Load Balancing์ ๋ํ ์ก์ธ์ค ์ ์ด ๊ด๋ฆฌ
- ์ ๋ฌ ๊ท์น์ IAM ์กฐ๊ฑด
๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ๋ฆฌ์์ค ๋ง๋ค๊ธฐ
์ด ๋ฌธ์์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ๋ฆฌ์์ค๋ฅผ ๋ง๋ ํ ์ด๋ฅผ ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค.
- VM์ด ์๋ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน
- Cloud Storage ๋ฒํท
- ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน๊ณผ Cloud Storage ๋ฒํท์ด ๋ฐฑ์๋๋ก ํฌํจ๋ HTTP ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน ๋ง๋ค๊ธฐ
์ด ์น์ ์์๋ Linux VM์ผ๋ก Apache๋ฅผ ์คํ ์ค์ธ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ์ง์ ๋ ์ธ์คํด์ค ํ ํ๋ฆฟ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ๊ด๋ฆฌํ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
์ธ์คํด์ค ํ ํ๋ฆฟ ๋ง๋ค๊ธฐ
์ฝ์
Google Cloud ์ฝ์์์ ์ธ์คํด์ค ํ ํ๋ฆฟ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ์คํด์ค ํ ํ๋ฆฟ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด๋ฆ์
lb-backend-template๋ฅผ ์ ๋ ฅํฉ๋๋ค.๋ฆฌ์ ์์
REGION์ ์ ํํฉ๋๋ค.๋ถํ ๋์คํฌ ์น์ ์์ ๋ถํ ๋์คํฌ์ ์ด๋ฏธ์ง๊ฐ Debian GNU/Linux 12(bookworm)์ ๊ฐ์ Debian ์ด๋ฏธ์ง๋ก ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค. ์ด ์๋ด์์๋
apt-get์ฒ๋ผ Debian์์๋ง ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.๊ณ ๊ธ ์ต์ ์ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํน์ ํด๋ฆญํ๊ณ ๋คํธ์ํฌ ํ๊ทธ ํ๋์
allow-health-check๋ฅผ ์ ๋ ฅํฉ๋๋ค.๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ๊ณ ์์ ์คํฌ๋ฆฝํธ ํ๋์ ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
#! /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
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
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'
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน ๋ง๋ค๊ธฐ
์ฝ์
Google Cloud ์ฝ์์์ ์ธ์คํด์ค ๊ทธ๋ฃน ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ์คํด์ค ๊ทธ๋ฃน ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน(์คํ ์ดํธ๋ฆฌ์ค(Stateless))์ ์ ํํฉ๋๋ค.
์ด๋ฆ์
lb-backend-example๋ฅผ ์ ๋ ฅํฉ๋๋ค.์ธ์คํด์ค ํ ํ๋ฆฟ์์ ์ธ์คํด์ค ํ ํ๋ฆฟ
lb-backend-template์ ์ ํํฉ๋๋ค.์์น์์ ๋จ์ผ ์์ญ์ ์ ํํฉ๋๋ค.
๋ฆฌ์ ์์
REGION์ ์ ํํฉ๋๋ค.์์ญ์์
ZONE๋ฅผ ์ ํํฉ๋๋ค.์๋ ํ์ฅ ๋ชจ๋์์ ์ฌ์ฉ: ๊ทธ๋ฃน์ ์ธ์คํด์ค ์ถ๊ฐ ๋ฐ ์ญ์ ๋ฅผ ์ ํํฉ๋๋ค.
์ต์ ์ธ์คํด์ค ์ ๋ฐ ์ต๋ ์ธ์คํด์ค ์๋ฅผ
2๋ก ์ค์ ํฉ๋๋ค.ํฌํธ ๋งคํ ์น์ ์์ ํฌํธ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํฌํธ ์ด๋ฆ์ผ๋ก
http๋ฅผ ์ ๋ ฅํฉ๋๋ค. ํฌํธ ๋ฒํธ๋ก80์ ์ ๋ ฅํฉ๋๋ค.๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
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 ์ํ ํ์ธ ์์คํ
์ ํธ๋ํฝ์ ํ์ฉํ๋ ์ธ๊ทธ๋ ์ค ๊ท์น์
๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ๋ฐฉํ๋ฒฝ ์ ์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐฉํ๋ฒฝ ๊ท์น ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด๋ฆ์
fw-allow-health-check๋ฅผ ์ ๋ ฅํฉ๋๋ค.๋คํธ์ํฌ์์ default๋ฅผ ์ ํํฉ๋๋ค.
๋์์ผ๋ก ์ง์ ๋ ๋์ ํ๊ทธ๋ฅผ ์ ํํฉ๋๋ค.
๋์ ํ๊ทธ ํ๋์
allow-health-check๋ฅผ ์ ๋ ฅํฉ๋๋ค.์์ค ํํฐ๋ฅผ IPv4 ๋ฒ์๋ก ์ค์ ํฉ๋๋ค.
์์ค IPv4 ๋ฒ์๋ฅผ
35.191.0.0/16์ผ๋ก ์ค์ ํฉ๋๋ค.ํ๋กํ ์ฝ ๋ฐ ํฌํธ ์น์ ์์ ์ง์ ๋ ํ๋กํ ์ฝ ๋ฐ ํฌํธ๋ฅผ ์ ํํฉ๋๋ค.
TCP ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ ๋ค์ ํฌํธ ๋ฒํธ๋ก
80์ ์ ๋ ฅํฉ๋๋ค.๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
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 ๋ฆฌ์ ์์ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ๋ณต์ ํ๋ ๋ฉํฐ ๋ฆฌ์ ๋ฒํท์ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝํ ์ธ ์ ๊ฐ์ฉ์ฑ์ด ํฅ์๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ๋ด๊ฒฐํจ์ฑ์ด ๊ฐ์ ๋ฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ Cloud Storage ๋ฒํท ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฒํท ์ด๋ฆ ์ง์ ๋ฐ์ค์
storage-backend-bucket์ ์ ๋ ฅํ๊ณ ๊ณ์์ ํด๋ฆญํฉ๋๋ค.๋ฐ์ดํฐ ์ ์ฅ ์์น ์ ํ์ ํด๋ฆญํฉ๋๋ค.
์์น ์ ํ์ ๋ฆฌ์ ์ผ๋ก ์ค์ ํ๊ณ
REGION์ ์ง์ ํฉ๋๋ค.๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ํ์ฌํญ: ๊ณต๊ฐ ์ก์ธ์ค๊ฐ ์ฐจ๋จ๋จ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ์ด ๋ฒํท์ ๊ณต๊ฐ ์ก์ธ์ค ๋ฐฉ์ง ์ ์ฉ ์ฒดํฌ๋ฐ์ค๋ฅผ ํด์ ํ๊ณ ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
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
Cloud Shell ํ์ฑํ๋ฅผ ํด๋ฆญํฉ๋๋ค.
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 ์ ์ธ)๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๊ณต๊ฐ ๋ฒํท์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ํฌํจํ์ง ๋ง์ธ์.
๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์ค์๋ก ๋ ธ์ถ๋๋ ๊ฐ๋ฅ์ฑ์ ์ค์ด๋ ค๋ฉด ๊ณต๊ฐ ๊ฐ์ฒด์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋์ผํ ๋ฒํท์ ์ ์ฅํ์ง ๋ง์ธ์.
์ฝ์
๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ฒํท์ ๊ฐ์ฒด๋ฅผ ๋ณผ ์ ์๋ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
Google Cloud ์ฝ์์์ Cloud Storage ๋ฒํท ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
storage-backend-bucket์ด๋ฆ์ ํด๋ฆญํ ํ ๊ถํ ํญ์ ํด๋ฆญํฉ๋๋ค.์ก์ธ์ค ๊ถํ ๋ถ์ฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ์ฃผ ๊ตฌ์ฑ์ ์์์
allUsers๋ฅผ ์ ๋ ฅํฉ๋๋ค.์ญํ ์ ํ ์์์์ Cloud Storage > ์คํ ๋ฆฌ์ง ๊ฐ์ฒด ๋ทฐ์ด๋ฅผ ์ ํํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
๊ณต๊ฐ ์ก์ธ์ค ํ์ฉ์ ํด๋ฆญํฉ๋๋ค.
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 ์ฃผ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ IP ์ฃผ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
IPv4 ์ฃผ์๋ฅผ ์์ฝํ๋ ค๋ฉด ์ธ๋ถ ์์ฝ์ ํด๋ฆญํฉ๋๋ค.
์ธ๋ถ ๊ณ ์ IP ์ฃผ์ ์์ฝ ํ์ด์ง์ ์ด๋ฆ์
lb-ipv4-1์ ์ ๋ ฅํฉ๋๋ค.๋คํธ์ํฌ ์๋น์ค ๋ฑ๊ธ์ ํ๋ฆฌ๋ฏธ์์ผ๋ก ์ค์ ํฉ๋๋ค.
IP ๋ฒ์ ์ IPv4๋ก ์ค์ ํฉ๋๋ค.
์ ํ์ ์ ์ญ์ผ๋ก ์ค์ ํฉ๋๋ค.
์์ฝ์ ํด๋ฆญํฉ๋๋ค.
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(ํ๋ฐํธ์๋)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฝ์
๋ถํ ๋ถ์ฐ๊ธฐ ์ ํ ์ ํ
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ ํ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ(HTTP/HTTPS)๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ๊ณต๊ฐ ๋๋ ๋ด๋ถ์์ ๊ณต๊ฐ(์ธ๋ถ)๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ์ ์ญ ๋๋ ๋จ์ผ ๋ฆฌ์ ๋ฐฐํฌ์์ ์ ์ญ ์ํฌ๋ก๋์ ์ ํฉ์ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์์ฑ์ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
๊ธฐ๋ณธ ๊ตฌ์ฑ
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ด๋ฆ ํ๋์
web-map-http๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ํ๋ฐํธ์๋ ๊ตฌ์ฑ์ ํด๋ฆญํ๊ณ ๋ค์ ํ๋๋ฅผ ๊ตฌ์ฑํ ํ ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํ๋กํ ์ฝ: HTTP
- IP ๋ฒ์ : IPv4
- IP ์ฃผ์:
lb-ipv4-1 - ํฌํธ:
443
- ๋ฐฑ์๋ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
- ๋ฐฑ์๋ ์๋น์ค ๋ฐ ๋ฐฑ์๋ ๋ฒํท์์ ๋ฐฑ์๋ ์๋น์ค ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ ํ ๋ค์์ ์คํํฉ๋๋ค.
- ๋ค์ ํ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์ด๋ฆ:
web-backend-service - ํ๋กํ ์ฝ: HTTP
- ์ด๋ฆ์ด ์ง์ ๋ ํฌํธ: http
- ์ด๋ฆ:
- ์ํ ์ ๊ฒ ๋ชฉ๋ก์์ ์ํ ์ ๊ฒ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ ํ ๋ค์ ์ ๋ณด๋ฅผ ์
๋ ฅํฉ๋๋ค.
- ์ด๋ฆ:
http-basic-check - ํ๋กํ ์ฝ: HTTP
- ์ด๋ฆ:
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ฐฑ์๋ > ์ ๋ฐฑ์๋ ์น์
์์ ๋ค์ ํ๋๋ฅผ ๊ตฌ์ฑํ ํ ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ธ์คํด์ค ๊ทธ๋ฃน: lb-backend-example
- ํฌํธ ๋ฒํธ:
80
- ๋ก๊น ์น์ ์์ ๋ก๊น ์ฌ์ฉ ์ค์ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํฉ๋๋ค.
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ค์ ํ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
- ๋ฐฑ์๋ ์๋น์ค ๋ฐ ๋ฐฑ์๋ ๋ฒํท์์ ๋ฐฑ์๋ ๋ฒํท ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ๋ค์ ํ๋๋ฅผ ๊ตฌ์ฑํ ํ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ฐฑ์๋ ๋ฒํท ์ด๋ฆ:
cats - Cloud Storage ๋ฒํท:
storage-backend-bucket
- ๋ฐฑ์๋ ๋ฒํท ์ด๋ฆ:
- ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
- ํธ์คํธ ๋ฐ ๊ฒฝ๋ก ๊ท์น์ ํด๋ฆญํฉ๋๋ค.
cats์ ๊ฒฝ์ฐ ํธ์คํธ 2 ํ๋์*๋ฅผ, ๊ฒฝ๋ก 2 ํ๋์/never-fetch/*๋ฅผ ์ ๋ ฅํฉ๋๋ค.- ๊ฒํ ๋ฐ ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ๊ตฌ์ฑ ์ค์ ์ ๊ฒํ ํฉ๋๋ค.
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
์ํ ํ์ธ์ ๋ง๋ญ๋๋ค.
gcloud compute health-checks create http http-basic-check \ --port 80๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ง๋ญ๋๋ค.
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๋ฐฑ์๋ ์๋น์ค์ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ฐฑ์๋๋ก ์ถ๊ฐํฉ๋๋ค.
gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE \ --global๋ฐฑ์๋ ๋ฒํท์ ์ถ๊ฐํฉ๋๋ค.
gcloud compute backend-buckets create cats \ --gcs-bucket-name=storage-backend-bucket๋ค์ด์ค๋ ์์ฒญ์ ๋ฐฑ์๋ ์๋น์ค ๋ฐ ๋ฐฑ์๋ ๋ฒํท์ผ๋ก ๋ผ์ฐํ ํ๋ URL ๋งต์ ๋ง๋ญ๋๋ค.
gcloud compute url-maps create web-map-http \ --default-service web-backend-servicegcloud 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"๋์ HTTP ํ๋ก์๋ฅผ ๋ง๋ค์ด ์์ฒญ์ URL ๋งต์ผ๋ก ๋ผ์ฐํ ํฉ๋๋ค.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http๋ค์ด์ค๋ ์์ฒญ์ ํ๋ก์๋ก ๋ผ์ฐํ ํ๋ ๊ธ๋ก๋ฒ ์ ๋ฌ ๊ท์น์ ๋ง๋ญ๋๋ค.
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
์ธ์คํด์ค๋ก ์ ์ก๋๋ ํธ๋ํฝ ํ ์คํธ
๋ถํ ๋ถ์ฐ ์๋น์ค๊ฐ ์คํ ์ค์ด๋ฏ๋ก ์ด์ ์ ๋ฌ ๊ท์น์ผ๋ก ํธ๋ํฝ์ ์ ์กํ๊ณ ๋ค๋ฅธ ์ธ์คํด์ค๋ก ๋ถ์ฐ๋๋ ํธ๋ํฝ์ ์ดํด๋ณผ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
web-map-http๋ฅผ ํด๋ฆญํฉ๋๋ค.ํ๋ฐํธ์๋ ์น์ ์์ ๋ถํ ๋ถ์ฐ๊ธฐ์ IP:ํฌํธ๋ฅผ ํ์ธํฉ๋๋ค.
๋ฐฑ์๋ ์ธ์คํด์ค๋ฅผ ํ ์คํธํ๋ ค๋ฉด ์น๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์
http://IP_ADDRESS๋ฅผ ์ ๋ ฅํฉ๋๋ค.๋ธ๋ผ์ฐ์ ๋ ํ์ด์ง๋ฅผ ์ ๊ณตํ ์ธ์คํด์ค์ ์ด๋ฆ๊ณผ ์์ญ์ ํ์ํ๋ ์ฝํ ์ธ ๋ก ํ์ด์ง๋ฅผ ๋ ๋๋งํฉ๋๋ค(์:
Page served from: lb-backend-example-xxxx).๋ฐฑ์๋ ๋ฒํท์ ํ ์คํธํ๋ ค๋ฉด ์น๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์
http://IP_ADDRESS/never-fetch/three-cats.jpg๋ฅผ ์ ๋ ฅํฉ๋๋ค.๋ธ๋ผ์ฐ์ ์ ์ด๋ฏธ์ง๊ฐ ๋ ๋๋ง๋ฉ๋๋ค.
๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ๋ฆฌ์์ค ๋ง์ด๊ทธ๋ ์ด์
์ด ์น์ ์์๋ ๋ค์ ๋จ๊ณ๋ฅผ ์ํํ์ฌ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค.
- ๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. ์ ๋ฌ ๊ท์น์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด ๋จผ์ ์ ๋ฌ ๊ท์น๊ณผ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํด์ผ ํฉ๋๋ค.
- ๋ฐฑ์๋ ๋ฒํท์ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. Google Cloud ์ฝ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ๋ฌ ๊ท์น๊ณผ ํจ๊ป ๋ฐฑ์๋ ๋ฒํท์ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค.
- ์ ๋ฌ ๊ท์น์ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค.
์ํคํ ์ฒ ์ฐจ์ด๋ก ์ธํด ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ก ์ด์ ํ ๋ ํนํ HTTP/1.1 ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฐฑ์๋์ ๋ํ ์ฐ๊ฒฐ ์๊ฐ ์ฆ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ๋ฐฑ์๋ ์ธ์คํด์ค์ ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ์ฆ๊ฐํ ์ ์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋์๊ณผ ๋ง์ด๊ทธ๋ ์ด์ ํ์ ๋ฐฑ์๋ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
๋ฐฑ์๋ ์๋น์ค ๋ง์ด๊ทธ๋ ์ด์
์ฝ์
๋ง์ด๊ทธ๋ ์ด์ ์ ์ํด ๋ฐฑ์๋ ์๋น์ค ์ค๋น
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
web-map-http์ ํด๋ฆญํฉ๋๋ค.๋ง์ด๊ทธ๋ ์ด์ ํญ์ ํด๋ฆญํฉ๋๋ค.
web-backend-service์ ๊ฒฝ์ฐ ๋ฐฑ์๋ ์๋น์ค ์น์ ์์ ๋ค์ ํ๋๋ฅผ ํ์ธํ ํ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ์ํ: ์์๋์ง ์์
- ์คํค๋ง ํ๋: EXTERNAL: 100% EXTERNAL_MANAGED:0%
๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์ฐฝ์ ์ํ ๋ณ๊ฒฝ์์ ์ค๋น๋ฅผ ์ ํํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์งํํ๊ธฐ ์ ์ ์ต์ 6๋ถ ์ด์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ํ๊ฐ ํ ์คํธ ์ค๋น ์๋ฃ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ํธ๋ํฝ ์ผ๋ถ ์ ์ก
web-backend-service์ ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์ฐฝ์ ์ํ ๋ณ๊ฒฝ์์ ๋น์จ๋ณ ํ ์คํธ๋ฅผ ์ ํํฉ๋๋ค.
- ํ
์คํธ ๋น์จ์
10์ ์ ๋ ฅํฉ๋๋ค. ์ฆ, ์์ฒญ์ 10%๋ ํ ์คํธ๋ฅผ ์ํด ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์ ์ก๋๊ณ ์์ฒญ์ ๋๋จธ์ง 90%๋ ๊ณ์ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์ ์ก๋ฉ๋๋ค. ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์ํ๊ฐ ํ ์คํธ ์งํ๋ฅ ๋ก ๋ณ๊ฒฝ๋๊ณ ๋ง์ด๊ทธ๋ ์ด์ ๋น์จ์ด 10%๋ก ๋ณ๊ฒฝ๋ ๋๊น์ง ์ต์ 6๋ถ ์ด์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ํ ์คํธํ์ฌ ์์ฒญ์ด ์์๋๋ก ์ฒ๋ฆฌ๋๋์ง ํ์ธํฉ๋๋ค.
์น๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์
http://IP_ADDRESS๋ฅผ ์ ๋ ฅํฉ๋๋ค.Page served from: lb-backend-example-xxxx๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.๋ถํ ๋ถ์ฐ๊ธฐ ์ธก์ ํญ๋ชฉ์ ํ์ธํ์ฌ ์์ฒญ์ ์ ์ฒด ๊ท ํ์ด ๊ตฌ์ฑ๋ ๋ง์ด๊ทธ๋ ์ด์ ๋น์จ๊ณผ ์ผ์นํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ๊ฐ ์์๋๋ก ์๋ํ๋์ง ํ์ธํ ๋๊น์ง ์ด๋ฌํ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์ ์ก๋๋ ํธ๋ํฝ์ ๋น์จ์ ์ ์ง์ ์ผ๋ก ๋๋ฆด ์ ์์ต๋๋ค.
์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ๋ชจ๋ ํธ๋ํฝ ์ ์ก
web-backend-service์ ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์ฐฝ์ ์ํ ๋ณ๊ฒฝ์์ ๋ชจ๋ ํธ๋ํฝ ํ ์คํธ๋ฅผ ์ ํํฉ๋๋ค. ์ฆ, ๋ชจ๋ ์์ฒญ์ด ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์ ์ก๋ฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์ํ๊ฐ ๋ชจ๋ ํธ๋ํฝ ํ ์คํธ๋ก ๋ณ๊ฒฝ๋๊ณ ๋ง์ด๊ทธ๋ ์ด์ ๋น์จ์ด 100%๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ค์ ๋จ๊ณ๋ก ์งํํ๊ธฐ ์ ์ ์ต์ 6๋ถ ์ด์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
EXTERNAL_MANAGED ๋ถํ ๋ถ์ฐ ์คํค๋ง๋ก ๋ง์ด๊ทธ๋ ์ด์
web-backend-service์ ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์ฐฝ์ ์ํ ๋ณ๊ฒฝ์์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ ํํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
๋ฆฌ์์ค๊ฐ ๋ง์ด๊ทธ๋ ์ด์ ๋ ๋๊น์ง ์ต์ 6๋ถ ์ด์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ํ ์ด์ด ๋ง์ด๊ทธ๋ ์ด์ ๋จ์ผ๋ก ๋ณ๊ฒฝ๋๊ณ ์คํค๋ง ํ๋์ด EXTERNAL: 0% EXTERNAL_MANAGED:100%๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ ๋ฌ ๊ท์น์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด ๋จผ์ ์ ๋ฌ ๊ท์น๊ณผ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํด์ผ ํฉ๋๋ค. ํ์์ ๋ฐ๋ผ ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
gcloud
๋ง์ด๊ทธ๋ ์ด์ ์ ์ํด ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ค๋นํฉ๋๋ค.
gcloud compute backend-services update web-backend-service \ --external-managed-migration-state=PREPARE \ --global
์ ์ ๊ธฐ๋ค๋ฆฝ๋๋ค(์ต์ 6๋ถ ์ด์).
๋ฐฑ์๋ ์๋น์ค๋ก ์ผ๋ถ ํธ๋ํฝ(์: 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%๋ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ๋ณด๋ ๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ์ ์ก์ธ์คํฉ๋๋ค.
์น๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์
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%์ ๋๋ฌํ ๋๊น์ง ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
์ ํ์ฌํญ: ๋ฐฑ์๋ ์๋น์ค์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
ํ ์คํธ๋ฅผ ์๋ฃํ๊ณ ๋ชจ๋ ํธ๋ํฝ์ ๋ฐฑ์๋ ์๋น์ค๋ก ๋ณด๋ ๋๋ค.
gcloud compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_ALL_TRAFFIC \ --global
๋ค์ ๋จ๊ณ๋ก ์งํํ๊ธฐ ์ ์ ์ต์ 6๋ถ ์ด์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ ํ์ฌํญ: ๋ฐฑ์๋ ์๋น์ค์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
๋ฐฑ์๋ ์๋น์ค์ ์คํค๋ง๋ฅผ
EXTERNAL_MANAGED๋ก ๋ณ๊ฒฝํฉ๋๋ค.gcloud compute backend-services update web-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
๋ฐฑ์๋ ์๋น์ค๊ฐ ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์์ ํ ๋ง์ด๊ทธ๋ ์ด์ ๋ ๋๊น์ง ์ ์(์ต์ 6๋ถ ์ด์) ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ ํ์ฌํญ: ๋ฐฑ์๋ ์๋น์ค์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค. ๋ถํ ๋ถ์ฐ ์คํค๋ง๊ฐ
EXTERNAL_MANAGED๋ก ํ์๋ฉ๋๋ค.
์ ๋ฌ ๊ท์น์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด ๋จผ์ ์ ๋ฌ ๊ท์น๊ณผ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํด์ผ ํฉ๋๋ค. ํ์์ ๋ฐ๋ผ ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
๋ฐฑ์๋ ๋ฒํท ๋ง์ด๊ทธ๋ ์ด์
์ฝ์
๋ฐฑ์๋ ๋ฒํท์ ์ ๋ฌ ๊ท์น๊ณผ ํจ๊ป ๋ง์ด๊ทธ๋ ์ด์ ๋๋ฏ๋ก Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ๋ฐฑ์๋ ๋ฒํท์ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค. ๋ฐฑ์๋ ๋ฒํท์ ๊ฐ๋ณ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด Google Cloud CLI๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud
๋ง์ด๊ทธ๋ ์ด์ ์ ์ํด ๋ฐฑ์๋ ๋ฒํท์ ์ค๋นํฉ๋๋ค.
gcloud compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=PREPARE \ --global
์ ์ ๊ธฐ๋ค๋ฆฝ๋๋ค(์ต์ 6๋ถ ์ด์).
๋ฐฑ์๋ ๋ฒํท์ผ๋ก ์ผ๋ถ ํธ๋ํฝ(์: 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%๋ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ๋ณด๋ ๋๋ค.
๋ฐฑ์๋ ๋ฒํท์ ์ก์ธ์คํฉ๋๋ค.
์น๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์
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
์ ํ์ฌํญ: ๋ฐฑ์๋ ๋ฒํท์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
ํ ์คํธ๋ฅผ ์๋ฃํ๊ณ ๋ชจ๋ ํธ๋ํฝ์ ๋ฐฑ์๋ ๋ฒํท์ผ๋ก ๋ณด๋ ๋๋ค.
gcloud compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_ALL_TRAFFIC \ --global
์ ํ์ฌํญ: ๋ฐฑ์๋ ๋ฒํท์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
์ ๋ฌ ๊ท์น ๋ง์ด๊ทธ๋ ์ด์
์ฝ์
๋ง์ด๊ทธ๋ ์ด์ ์ ์ํ ์ ๋ฌ ๊ท์น ์ค๋น
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
web-map-http์ ํด๋ฆญํฉ๋๋ค.๋ง์ด๊ทธ๋ ์ด์ ํญ์ ํด๋ฆญํฉ๋๋ค.
web-map-http-forwarding-rule์ ๊ฒฝ์ฐ ์ ๋ฌ ๊ท์น ์น์ ์์ ๋ค์ ํ๋๋ฅผ ํ์ธํ ํ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ์ํ: ์์๋์ง ์์
- ์คํค๋ง ํ๋: EXTERNAL: 100% EXTERNAL_MANAGED:0%
๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์ฐฝ์ ์ํ ๋ณ๊ฒฝ์์ ์ค๋น๋ฅผ ์ ํํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์งํํ๊ธฐ ์ ์ ์ต์ 6๋ถ ์ด์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ํ๊ฐ ํ ์คํธ ์ค๋น ์๋ฃ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ํธ๋ํฝ ์ผ๋ถ ์ ์ก
web-map-http-forwarding-rule์ ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์ฐฝ์ ์ํ ๋ณ๊ฒฝ์์ ๋น์จ๋ณ ํ ์คํธ๋ฅผ ์ ํํฉ๋๋ค.
- ํ
์คํธ ๋น์จ์
10์ ์ ๋ ฅํฉ๋๋ค. ์ฆ, ์์ฒญ์ 10%๋ ํ ์คํธ๋ฅผ ์ํด ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์ ์ก๋๊ณ ์์ฒญ์ ๋๋จธ์ง 90%๋ ๊ณ์ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์ ์ก๋ฉ๋๋ค. ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์ํ๊ฐ ํ ์คํธ ์งํ๋ฅ ๋ก ๋ณ๊ฒฝ๋๊ณ ๋ง์ด๊ทธ๋ ์ด์ ๋น์จ์ด 10%๋ก ๋ณ๊ฒฝ๋ ๋๊น์ง ์ ์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ํ ์คํธํ์ฌ ์์ฒญ์ด ์์๋๋ก ์ฒ๋ฆฌ๋๋์ง ํ์ธํฉ๋๋ค.
์น๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์
http://IP_ADDRESS๋ฅผ ์ ๋ ฅํฉ๋๋ค.Page served from: lb-backend-example-xxxx๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.๋ถํ ๋ถ์ฐ๊ธฐ ์ธก์ ํญ๋ชฉ์ ํ์ธํ์ฌ ์์ฒญ์ ์ ์ฒด ๊ท ํ์ด ๊ตฌ์ฑ๋ ๋ง์ด๊ทธ๋ ์ด์ ๋น์จ๊ณผ ์ผ์นํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ๊ฐ ์์๋๋ก ์๋ํ๋์ง ํ์ธํ ๋๊น์ง ์ด๋ฌํ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์ ์ก๋๋ ํธ๋ํฝ์ ๋น์จ์ ์ ์ง์ ์ผ๋ก ๋๋ฆด ์ ์์ต๋๋ค.
์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ๋ชจ๋ ํธ๋ํฝ ์ ์ก
web-map-http-forwarding-rule์ ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์ฐฝ์ ์ํ ๋ณ๊ฒฝ์์ ๋ชจ๋ ํธ๋ํฝ ํ ์คํธ๋ฅผ ์ ํํฉ๋๋ค. ์ฆ, ๋ชจ๋ ์์ฒญ์ด ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์ ์ก๋ฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์ํ๊ฐ ๋ชจ๋ ํธ๋ํฝ ํ ์คํธ๋ก ๋ณ๊ฒฝ๋๊ณ ๋ง์ด๊ทธ๋ ์ด์ ๋น์จ์ด 100%๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ค์ ๋จ๊ณ๋ก ์งํํ๊ธฐ ์ ์ ์ต์ 6๋ถ ์ด์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
EXTERNAL_MANAGED ๋ถํ ๋ถ์ฐ ์คํค๋ง๋ก ๋ง์ด๊ทธ๋ ์ด์
web-map-http-forwarding-rule์ ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์ฐฝ์ ์ํ ๋ณ๊ฒฝ์์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ ํํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
๋ฆฌ์์ค๊ฐ ๋ง์ด๊ทธ๋ ์ด์ ๋ ๋๊น์ง ์ต์ 6๋ถ ์ด์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ํ ์ด์ด ๋ง์ด๊ทธ๋ ์ด์ ๋จ์ผ๋ก ๋ณ๊ฒฝ๋๊ณ ์คํค๋ง ํ๋์ด EXTERNAL: 0% EXTERNAL_MANAGED:100%๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
gcloud
์ ๋ฌ ๊ท์น์ ์คํค๋ง๋ฅผ
EXTERNAL_MANAGED๋ก ๋ณ๊ฒฝํฉ๋๋ค.gcloud compute forwarding-rules update web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
์ ๋ฌ ๊ท์น์ด ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์ธํ๋ผ๋ก ์์ ํ ๋ง์ด๊ทธ๋ ์ด์ ๋ ๋๊น์ง ์ ์(์ต์ 6๋ถ ์ด์) ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ ํ์ฌํญ: ์ ๋ฌ ๊ท์น์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค. ๋ถํ ๋ถ์ฐ ์คํค๋ง๊ฐ
EXTERNAL_MANAGED๋ก ํ์๋ฉ๋๋ค.