์ผ๋ฐ์ ์ธ ๊ฐ๋ ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ธฐ์กด ์ฌ์ฉ์์ธ ๊ฒฝ์ฐ ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฐฐํฌ๋ฅผ ๊ณํํ ๋ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์๋ฅผ ๊ฒํ ํ์ธ์.
๋ถํ ๋ถ์ฐ๊ธฐ ํ ํด๋ก์ง
HTTPS ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ๋ค์ ๋ค์ด์ด๊ทธ๋จ์ ํ์๋ ๊ตฌ์ฑ์ ๋ง๋ญ๋๋ค.
HTTP ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ๋ค์ ๋ค์ด์ด๊ทธ๋จ์ ํ์๋ ๊ตฌ์ฑ์ ๋ง๋ญ๋๋ค.
๋ค์ด์ด๊ทธ๋จ์ ์ด๋ฒคํธ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ฌ ๊ท์น์ ์ ์๋ ์ธ๋ถ IPv4 ์ฃผ์๋ก ์ฝํ ์ธ ์์ฒญ์ ๋ณด๋ ๋๋ค.
HTTPS ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ์ ๋ฌ ๊ท์น์ ์์ฒญ์ ๋์ HTTPS ํ๋ก์๋ก ์ ๋ฌํฉ๋๋ค.
HTTP ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ์ ๋ฌ ๊ท์น์ ์์ฒญ์๋์ HTTP ํ๋ก์๋ก ์ ๋ฌํฉ๋๋ค.
๋์ ํ๋ก์๋ URL ๋งต์ ๊ท์น์ ์ฌ์ฉํ์ฌ ๋จ์ผ ๋ฐฑ์๋ ์๋น์ค๊ฐ ๋ชจ๋ ์์ฒญ์ ์์ ํ๋์ง ํ์ธํฉ๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ๋ ๋ฐฑ์๋ ์๋น์ค์ ์ธ์คํด์ค ๊ทธ๋ฃน์ด ํ๋๋ง ์๋์ง ํ์ธํ๊ณ ํด๋น ๊ทธ๋ฃน์ ๊ฐ์ ๋จธ์ (VM)์ผ๋ก ์์ฒญ์ ์ ๋ฌํฉ๋๋ค.
VM์ ์ฌ์ฉ์๊ฐ ์์ฒญํ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋จผ์ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ธ์.
SSL ์ธ์ฆ์ ๋ฆฌ์์ค ์ค์
๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋์ ํ๋ก์์ ์ฐ๊ฒฐํ ์ ์๋ SSL ์ธ์ฆ์ ๋ฆฌ์์ค๊ฐ ์์ด์ผ ํฉ๋๋ค. SSL ์ธ์ฆ์ ๋ฆฌ์์ค๋ ์ธ์ฆ์ ๋งต ๋๋ Compute Engine SSL ์ธ์ฆ์ (๊ธฐ๋ณธ ์ธ์ฆ์)์ผ ์ ์์ต๋๋ค.
์ธ์ฆ์ ๋งต
๋ค์ ๋ฌธ์ ์ค ํ๋์ ์ค๋ช ๋ ๋๋ก ์ธ์ฆ์ ๋งต์ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์น์ธ์ ์ฌ์ฉํ์ฌ ์ ์ญ Google ๊ด๋ฆฌํ ์ธ์ฆ์ ๋ฐฐํฌ
- DNS ์น์ธ์ ์ฌ์ฉํ์ฌ ์ ์ญ Google ๊ด๋ฆฌํ ์ธ์ฆ์ ๋ฐฐํฌ
- Certificate Authority Service๋ก ์ ์ญ Google ๊ด๋ฆฌํ ์ธ์ฆ์ ๋ฐฐํฌ
- ์ ์ญ ์์ฒด ๊ด๋ฆฌํ ์ธ์ฆ์ ๋ฐฐํฌ
Compute Engine SSL ์ธ์ฆ์
HTTPS ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ๋ค์ ๋ฌธ์ ์ค ํ๋์ ์ค๋ช ๋ ๋๋ก Compute Engine SSL ์ธ์ฆ์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค.
Google ๊ด๋ฆฌํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ถํ ์ค์
์ด ๊ฐ์ด๋์ ๋จ๊ณ๋ฅผ ์ํํ๋ ค๋ฉด ํ๋ก์ ํธ์์ Compute Engine ์ธ์คํด์ค, ๋ฐฉํ๋ฒฝ ๊ท์น, ์์ฝ๋ IP ์ฃผ์๋ฅผ ๋ง๋ค ์ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ํ๋ก์ ํธ ์์ ์ ๋๋ ํธ์ง์ ์ญํ ์ด ์๊ฑฐ๋ ๋ค์๊ณผ ๊ฐ์ Compute Engine IAM ์ญํ ์ด ์์ด์ผ ํฉ๋๋ค.
| ์์ | ํ์ํ ์ญํ |
|---|---|
| ์ธ์คํด์ค ๋ง๋ค๊ธฐ | ์ธ์คํด์ค ๊ด๋ฆฌ์ |
| ๋ฐฉํ๋ฒฝ ๊ท์น ์ถ๊ฐ ๋ฐ ์ญ์ | ๋ณด์ ๊ด๋ฆฌ์ |
| ๋ถํ ๋ถ์ฐ๊ธฐ ๊ตฌ์ฑ์์ ๋ง๋ค๊ธฐ | ๋คํธ์ํฌ ๊ด๋ฆฌ์ |
| ํ๋ก์ ํธ ๋ง๋ค๊ธฐ(์ ํ์ฌํญ) | ํ๋ก์ ํธ ์์ฑ์ |
์์ธํ ๋ด์ฉ์ ๋ค์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
(์ ํ์ฌํญ) BYOIP ์ฃผ์ ์ฌ์ฉ
์ฌ์ฉ์ IP ์ฌ์ฉ(BYOIP)์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์์ ๊ณต๊ฐ ์ฃผ์๋ฅผGoogle Cloud ๋ก ๊ฐ์ ธ์ Google Cloud ๋ฆฌ์์ค์ ํจ๊ป ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์์ IPv4 ์ฃผ์๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๊ตฌ์ฑํ ๋ ์ ๋ฌ ๊ท์น์ ํ๋๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์์ ์๋ด์ ๋ฐ๋ผ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ค์ ํ ๋ BYOIP ์ฃผ์๋ฅผ IP ์ฃผ์๋ก ์ ๊ณตํฉ๋๋ค.
BYOIP ์ฌ์ฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์ IP ์ฃผ์ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
๋คํธ์ํฌ ๋ฐ ์๋ธ๋ท ๊ตฌ์ฑ
์์ ๋คํธ์ํฌ ๋ฐ ์๋ธ๋ท์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ VPC ๋คํธ์ํฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
VPC ๋คํธ์ํฌ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํฌ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์๋ธ๋ท ์์ฑ ๋ชจ๋์์ ์ปค์คํ ์ ์ ํํฉ๋๋ค.
์ ์๋ธ๋ท ์น์ ์์ ๋ค์ ํ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์๋ธ๋ท ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
- IP ์คํ ์ ํ์ IPv4(๋จ์ผ ์คํ)๋ฅผ ์ ํํฉ๋๋ค.
- IP ์ฃผ์ ๋ฒ์๋ฅผ ์ ๋ ฅํฉ๋๋ค. ์ด ๋ฒ์๋ ์๋ธ๋ท์ ๊ธฐ๋ณธ IPv4 ๋ฒ์์ ๋๋ค.
์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ค๋ฅธ ๋ฆฌ์ ์ ์๋ธ๋ท์ ์ถ๊ฐํ๋ ค๋ฉด ์๋ธ๋ท ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ์ด์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
์ปค์คํ ๋ชจ๋ VPC ๋คํธ์ํฌ๋ฅผ ๋ง๋ญ๋๋ค.
gcloud compute networks create NETWORK \ --subnet-mode=custom๋คํธ์ํฌ ๋ด์์ ๋ฐฑ์๋์ฉ ์๋ธ๋ท์ ๋ง๋ญ๋๋ค.
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION๋ค์์ ๋ฐ๊ฟ๋๋ค.
NETWORK: VPC ๋คํธ์ํฌ์ ์ด๋ฆSUBNET: ์๋ธ๋ท์ ์ด๋ฆREGION: ๋ฆฌ์ ์ ์ด๋ฆ
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน ๋ง๋ค๊ธฐ
Compute Engine ๋ฐฑ์๋๋ก ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ค์ ํ๋ ค๋ฉด VM์ด ์ธ์คํด์ค ๊ทธ๋ฃน์ ์์ด์ผ ํฉ๋๋ค. ์ด ๊ฐ์ด๋์์๋ Apache๊ฐ ์คํ์ค์ธ Linux VM์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ค๊ณ ๋ถํ ๋ถ์ฐ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ์ง์ ๋ ์ธ์คํด์ค ํ ํ๋ฆฟ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ๊ด๋ฆฌํ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ์ธ๋ถ HTTPS(S) ๋ถํ ๋ถ์ฐ๊ธฐ์ ๋ฐฑ์๋ ์๋ฒ๋ฅผ ์คํํ๋ VM์ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์์๋ ๋ฐฑ์๋์์ ๋ฐ๋ชจ์ฉ์ผ๋ก ์์ฒด ํธ์คํธ ์ด๋ฆ์ ์ ๊ณตํฉ๋๋ค.
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ค๊ธฐ ์ ์ ์ธ์คํด์ค ํ ํ๋ฆฟ์ ๋ง๋ญ๋๋ค.
์ฝ์
IPv4 ํธ๋ํฝ์ ์ง์ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
Google Cloud ์ฝ์์์ ์ธ์คํด์ค ํ ํ๋ฆฟ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ์คํด์ค ํ ํ๋ฆฟ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด๋ฆ์
lb-backend-template๋ฅผ ์ ๋ ฅํฉ๋๋ค.๋ถํ ๋์คํฌ๊ฐ Debian GNU/Linux 10(buster)๊ณผ ๊ฐ์ Debian ์ด๋ฏธ์ง๋ก ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค. ์ด ์๋ด์์๋
apt-get์ฒ๋ผ Debian์์๋ง ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.๊ณ ๊ธ ์ต์ ์ ํผ์นฉ๋๋ค.
๋คํธ์ํน์ ํผ์น๊ณ ๋ค์ ํ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ๋คํธ์ํฌ ํ๊ทธ์
allow-health-check๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์น์
์์ ์์ ์ ํด๋ฆญํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํฉ๋๋ค.
- ๋คํธ์ํฌ:
NETWORK - ์๋ธ๋ท:
SUBNET - IPv4 ํธ๋ํฝ: IPv4(๋จ์ผ ์คํ)
- ๋คํธ์ํฌ:
- ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋คํธ์ํฌ ํ๊ทธ์
๊ด๋ฆฌ๋ฅผ ํผ์นฉ๋๋ค. ์์ ์คํฌ๋ฆฝํธ ํ๋์ ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
#! /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
IPv4 ํธ๋ํฝ์ ์ง์ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud compute instance-templates create TEMPLATE_NAME \
--region=REGION \
--network=NETWORK \
--subnet=SUBNET \
--stack-type=IPV4_ONLY \
--tags=allow-health-check \
--image-family=debian-10 \
--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'
Terraform
์ธ์คํด์ค ํ
ํ๋ฆฟ์ ๋ง๋ค๋ ค๋ฉด google_compute_instance_template ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ค๊ณ ์ธ์คํด์ค ํ ํ๋ฆฟ์ ์ ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ์ธ์คํด์ค ๊ทธ๋ฃน ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ์คํด์ค ๊ทธ๋ฃน ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ผ์ชฝ์์ ์ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ์ ํํฉ๋๋ค.
์ด๋ฆ์
lb-backend-example๋ฅผ ์ ๋ ฅํฉ๋๋ค.์์น์์ ๋จ์ผ ์์ญ์ ์ ํํฉ๋๋ค.
๋ฆฌ์ ์์ ์ํ๋ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
์์ญ์์ ์์ญ์ ์ ํํฉ๋๋ค.
์ธ์คํด์ค ํ ํ๋ฆฟ์์ ์ธ์คํด์ค ํ ํ๋ฆฟ
lb-backend-template์ ์ ํํฉ๋๋ค.์๋ ํ์ฅ ๋ชจ๋์์ ์ฌ์ฉ: ๊ทธ๋ฃน์ ์ธ์คํด์ค ์ถ๊ฐ ๋ฐ ์ญ์ ๋ฅผ ์ ํํฉ๋๋ค.
์ต์ ์ธ์คํด์ค ์๋ฅผ
2๋ก, ์ต๋ ์ธ์คํด์ค ์๋ฅผ2์ด์์ผ๋ก ์ค์ ํฉ๋๋ค.์ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ค๋ ค๋ฉด ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
ํ ํ๋ฆฟ์ ๊ธฐ๋ฐ์ผ๋ก ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ญ๋๋ค.
gcloud compute instance-groups managed create lb-backend-example \ --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
Terraform
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ค๋ ค๋ฉด google_compute_instance_group_manager ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
์ธ์คํด์ค ๊ทธ๋ฃน์ ์ด๋ฆ์ด ์ง์ ๋ ํฌํธ ์ถ๊ฐ
์ธ์คํด์ค ๊ทธ๋ฃน์ HTTP ์๋น์ค๋ฅผ ์ ์ํ๊ณ ํด๋น ํฌํธ์ ํฌํธ ์ด๋ฆ์ ๋งคํํฉ๋๋ค. ๋ถํ ๋ถ์ฐ ์๋น์ค๊ฐ ์ด๋ฆ์ด ์ง์ ๋ ํฌํธ๋ก ํธ๋ํฝ์ ์ ๋ฌํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ด๋ฆ์ด ์ง์ ๋ ํฌํธ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ ์ธ์คํด์ค ๊ทธ๋ฃน ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
lb-backend-example์ ํด๋ฆญํฉ๋๋ค.
์ธ์คํด์ค ๊ทธ๋ฃน์ ๊ฐ์ ํ์ด์ง์์ ์์ ์ ํด๋ฆญํฉ๋๋ค.
ํฌํธ ๋งคํ ์น์ ์์ ํฌํธ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํฌํธ ์ด๋ฆ์ผ๋ก
http๋ฅผ ์ ๋ ฅํฉ๋๋ค. ํฌํธ ๋ฒํธ๋ก80์ ์ ๋ ฅํฉ๋๋ค.
- ํฌํธ ์ด๋ฆ์ผ๋ก
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud compute instance-groups
set-named-ports ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud compute instance-groups set-named-ports lb-backend-example \
--named-ports http:80 \
--zone ZONE_A
Terraform
named_port ์์ฑ์ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน ์ํ์ ํฌํจ๋์ด ์์ต๋๋ค.
๋ฐฉํ๋ฒฝ ๊ท์น ๊ตฌ์ฑ
์ด ์์์์๋ fw-allow-health-check ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ญ๋๋ค.
Google Cloud ์ํ ์ ๊ฒ ์์คํ
์ ํธ๋ํฝ์ ํ์ฉํ๋ ์ธ๊ทธ๋ ์ค ๊ท์น์
๋๋ค.
์ด ์์์์๋ ๋์ ํ๊ทธ allow-health-check๋ฅผ ์ฌ์ฉํ์ฌ VM์ ์๋ณํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ๋ฐฉํ๋ฒฝ ์ ์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐฉํ๋ฒฝ ๊ท์น ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ญ๋๋ค.
์ด๋ฆ์
fw-allow-health-check๋ฅผ ์ ๋ ฅํฉ๋๋ค.๋คํธ์ํฌ๋ฅผ ์ ํํฉ๋๋ค.
๋์์์ ์ง์ ๋ ๋์ ํ๊ทธ๋ฅผ ์ ํํฉ๋๋ค.
allow-health-check๋ก ๋์ ํ๊ทธ ํ๋๋ฅผ ์ฑ์๋๋ค.์์ค ํํฐ๋ฅผ IPv4 ๋ฒ์๋ก ์ค์ ํฉ๋๋ค.
์์ค IPv4 ๋ฒ์๋ฅผ
35.191.0.0/16์ผ๋ก ์ค์ ํฉ๋๋ค.ํ๋กํ ์ฝ ๋ฐ ํฌํธ์์ ์ง์ ๋ ํ๋กํ ์ฝ ๋ฐ ํฌํธ๋ฅผ ์ ํํฉ๋๋ค.
tcp ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ ๋ค์ ํฌํธ ๋ฒํธ๋ก
80์ ์ ๋ ฅํฉ๋๋ค.๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \
--network=NETWORK \
--action=allow \
--direction=ingress \
--source-ranges=35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
Terraform
๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ค๋ ค๋ฉด google_compute_firewall ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
์ธ๋ถ IP ์ฃผ์ ์์ฝ
์ธ์คํด์ค๊ฐ ์ค๋น๋์ด ์คํ ์ค์ด๋ฏ๋ก ๊ณ ๊ฐ์ด ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ ์ญ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ IP ์ฃผ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
IPv4 ์ฃผ์๋ฅผ ์์ฝํ๋ ค๋ฉด ์ธ๋ถ ์์ฝ์ ํด๋ฆญํฉ๋๋ค.
์ธ๋ถ ๊ณ ์ IP ์ฃผ์ ์์ฝ ํ์ด์ง์ ์ด๋ฆ์
lb-ipv4-1์ ์ ๋ ฅํฉ๋๋ค.๋คํธ์ํฌ ์๋น์ค ๋ฑ๊ธ์ ํ๋ฆฌ๋ฏธ์์ผ๋ก ์ค์ ํฉ๋๋ค.
IP ๋ฒ์ ์ IPv4๋ก ์ค์ ํฉ๋๋ค.
์ ํ์ ์ ์ญ์ผ๋ก ์ค์ ํฉ๋๋ค.
์์ฝ์ ํด๋ฆญํฉ๋๋ค.
gcloud
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
Terraform
IP ์ฃผ์๋ฅผ ์์ฝํ๋ ค๋ฉด google_compute_global_address ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ถํ ๋ถ์ฐ๊ธฐ ์ค์
์ด ์์์์๋ ํด๋ผ์ด์ธํธ์ ๋ถํ ๋ถ์ฐ๊ธฐ ๊ฐ์ HTTPS(ํ๋ฐํธ์๋)๋ฅผ ์ฌ์ฉํฉ๋๋ค. HTTPS์ ๊ฒฝ์ฐ ํ๋ก์๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ํ๋ ์ด์์ SSL ์ธ์ฆ์ ๋ฆฌ์์ค๊ฐ ํ์ํฉ๋๋ค. Google ๊ด๋ฆฌํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ๋ฐํธ์๋์์ HTTPS๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๋ฐฑ์๋์์ HTTP๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Google์ Google Cloud VPC ๋คํธ์ํฌ ๋ด์ ์๋ Google ํ๋ฐํธ์๋(GFE)์ ๋ฐฑ์๋ ๊ฐ์ ํธ๋ํฝ์ ์๋์ผ๋ก ์ํธํํฉ๋๋ค.
์ฝ์
๋ถํ ๋ถ์ฐ๊ธฐ ์ ํ ์ ํ
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ ํ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ(HTTP/HTTPS)๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ๊ณต๊ฐ ๋๋ ๋ด๋ถ์์ ๊ณต๊ฐ(์ธ๋ถ)๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ์ ์ญ ๋๋ ๋จ์ผ ๋ฆฌ์ ๋ฐฐํฌ์์ ์ ์ญ ์ํฌ๋ก๋์ ์ ํฉ์ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์์ฑ์ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
๊ธฐ๋ณธ ๊ตฌ์ฑ
๋ถํ ๋ถ์ฐ๊ธฐ ์ด๋ฆ์ web-map-https ๋๋ web-map-http๋ฅผ ์
๋ ฅํฉ๋๋ค.
ํ๋ฐํธ์๋ ๊ตฌ์ฑ
- ํ๋ฐํธ์๋ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
- ํ๋กํ ์ฝ์ HTTPS๋ก ์ค์ ํฉ๋๋ค.
- IPv4 ํธ๋ํฝ์
IPv4๋ฅผ ์ ํํฉ๋๋ค. IP ์ฃผ์๋ฅผ ์ด์ ์ ๋ง๋lb-ipv4-1๋ก ์ค์ ํฉ๋๋ค. - ํฌํธ๋ฅผ 443์ผ๋ก ์ค์ ํฉ๋๋ค.
- ์ธ์ฆ์ ์ ์ฅ์ ์ ํ์์ ์ธ์ฆ์ ๋งต ์ฌ์ฉ ๋๋ ๊ธฐ์กด ์ธ์ฆ์ ์ฌ์ฉ์ ์ ํํฉ๋๋ค.
- ์ ํ์ ๋ฐ๋ผ ์ธ์ฆ์ ๋งต ๋๋ ๊ธฐ์กด ์ธ์ฆ์๋ฅผ ์ ํํฉ๋๋ค.
- (์ ํ์ฌํญ) SSL ์ ์ฑ
์ ๋ง๋ญ๋๋ค.
- SSL ์ ์ฑ ๋ชฉ๋ก์์ ์ ์ฑ ๋ง๋ค๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
- SSL ์ ์ฑ
์ด๋ฆ์
my-ssl-policy๋ก ์ค์ ํฉ๋๋ค. - ์ต์ TLS ๋ฒ์ ์ TLS 1.0์ ์ ํํฉ๋๋ค.
- ํ๋กํ์ ์ต์ ์ ์ ํํฉ๋๋ค. ์ฌ์ฉ ์ค์ ๋ ๊ธฐ๋ฅ ๋ฐ ์ฌ์ฉ ์ค์ง๋ ๊ธฐ๋ฅ์ด ํ์๋ฉ๋๋ค.
- ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
-
(์ ํ์ฌํญ) HTTP-HTTPS ๊ฐ ๋ฆฌ๋๋ ์
์ฌ์ฉ ์ค์ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ์ฌ ๋ฆฌ๋๋ ์
์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
์ด ์ฒดํฌ๋ฐ์ค๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ฉด HTTPS ๋ถํ ๋ถ์ฐ๊ธฐ์ ๋์ผํ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ์ถ๊ฐ์ ์ธ ๋ถ๋ถ HTTP ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ค๊ณ ์์ ๋๋ HTTP ์์ฒญ์ ๋ถํ ๋ถ์ฐ๊ธฐ์ HTTPS ํ๋ฐํธ์๋๋ก ๋ฆฌ๋๋ ์ ํฉ๋๋ค.
์ด ์ฒดํฌ๋ฐ์ค๋ HTTPS ํ๋กํ ์ฝ์ด ์ ํ๋์๊ณ ์์ฝ๋ IP ์ฃผ์๊ฐ ์ฌ์ฉ๋ ๋๋ง ์ ํํ ์ ์์ต๋๋ค.
- ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฐฑ์๋ ๊ตฌ์ฑ
- ๋ฐฑ์๋ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
- ๋ฐฑ์๋ ์๋น์ค ๋ฐ ๋ฐฑ์๋ ๋ฒํท์์ ๋ฐฑ์๋ ์๋น์ค ๋ง๋ค๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
- ๋ฐฑ์๋ ์๋น์ค ์ด๋ฆ(์:
web-backend-service)์ ์ถ๊ฐํฉ๋๋ค. - ๋ณด์ ์น์
์ผ๋ก ์ด๋ํ ๋ค์ IAP๋ฅผ ์ฌ์ฉ ์ค์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ์ก์ธ์ค ๋ณดํธ๋ฅผ ์ ํํฉ๋๋ค.
Cloud CDN๊ณผ IAP๋ ํธํ๋์ง ์์ต๋๋ค. Cloud CDN์ด ์ฌ์ฉ ์ค์ ๋ ์ํ์์ IAP๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ฉด Cloud CDN์ด ์๋์ผ๋ก ์ฌ์ฉ ์ค์ง๋ฉ๋๋ค.
-
์ ํ์ฌํญ: ๊ธฐ๋ณธ ๋ฐฑ์๋ ๋ณด์ ์ ์ฑ ์ ๊ตฌ์ฑํฉ๋๋ค. ๊ธฐ๋ณธ ๋ณด์ ์ ์ฑ ์ ์ฌ์ฉ์๊ฐ ๊ตฌ์ฑํ ๊ธฐ์ค์ ์ ํตํด ํธ๋ํฝ์ ์ ํํฉ๋๋ค. ๊ธฐ๋ณธ ๋ณด์ ์ ์ฑ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋น์จ ์ ํ ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
- Cloud Armor ๊ธฐ๋ณธ ๋ณด์ ์ ์ฑ
์ ์ ํ ํด์ ํ๋ ค๋ฉด Cloud Armor ๋ฐฑ์๋ ๋ณด์ ์ ์ฑ
๋ชฉ๋ก์์
None์ ์ ํํฉ๋๋ค. - Cloud Armor ๊ธฐ๋ณธ ๋ณด์ ์ ์ฑ ์ ๊ตฌ์ฑํ๋ ค๋ฉด Cloud Armor ๋ฐฑ์๋ ๋ณด์ ์ ์ฑ ๋ชฉ๋ก์์ ๊ธฐ๋ณธ ๋ณด์ ์ ์ฑ ์ ์ ํํฉ๋๋ค.
- ์ ์ฑ ์ด๋ฆ ํ๋์ ์๋์ผ๋ก ์์ฑ๋ ์ด๋ฆ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ณด์ ์ ์ฑ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ์์ฒญ ์ ํ๋์์ ๊ธฐ๋ณธ ์์ฒญ ์๋ฅผ ์๋ฝํ๊ฑฐ๋
1~10,000์ฌ์ด์ ์ ์๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ๊ฐ๊ฒฉ ํ๋์์ ๊ฐ๊ฒฉ์ ์ ํํฉ๋๋ค.
- ํค์ ์ ์ฉ ํ๋์์ ๋ชจ๋, IP ์ฃผ์, X-Forwarded-For IP ์ฃผ์ ๊ฐ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค. ์ด๋ฌํ ์ต์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋น์จ ์ ํ์ ์ํ ํด๋ผ์ด์ธํธ ์๋ณ์ ์ฐธ์กฐํ์ธ์.
- Cloud Armor ๊ธฐ๋ณธ ๋ณด์ ์ ์ฑ
์ ์ ํ ํด์ ํ๋ ค๋ฉด Cloud Armor ๋ฐฑ์๋ ๋ณด์ ์ ์ฑ
๋ชฉ๋ก์์
- ๋ค๋ฅธ ๊ธฐ๋ณธ ์ค์ ์ ์ ์งํฉ๋๋ค.
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํธ์คํธ ๋ฐ ๊ฒฝ๋ก ๊ท์น
ํธ์คํธ ๋ฐ ๊ฒฝ๋ก ๊ท์น์์ ๊ธฐ๋ณธ ์ค์ ์ ์ ์งํฉ๋๋ค.
๊ฒํ ๋ฐ ์๋ฃ
- ๊ฒํ ๋ฐ ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ๊ตฌ์ฑ ์ค์ ์ ๊ฒํ ํฉ๋๋ค.
- (์ ํ์ฌํญ) ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ REST API ์์ฒญ์ ๋ณด๋ ค๋ฉด ์์ํ๋ ์ฝ๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ๊ฐ ์์ฑ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
HTTPS ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ค์๊ณ HTTP-HTTPS ๋ฆฌ๋๋ ์ ์ฌ์ฉ ์ค์ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ ๊ฒฝ์ฐ -redirect ์ํฝ์ค๋ก ์์ฑ๋ HTTP ๋ถํ ๋ถ์ฐ๊ธฐ๋ ํ์๋ฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ธ๋ถ์ ๋ณด ํ๋ฉด์์ ๋ถํ ๋ถ์ฐ๊ธฐ์ IP:ํฌํธ๋ฅผ ๊ธฐ๋กํด ๋ก๋๋ค.
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 \ --global - ๋ฐฑ์๋ ์๋น์ค์ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ฐฑ์๋๋ก ์ถ๊ฐํฉ๋๋ค.
gcloud beta compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE_A \ --global
- HTTP์ ๊ฒฝ์ฐ URL ๋งต์ ๋ง๋ค์ด ์์ ์์ฒญ์ ๊ธฐ๋ณธ ๋ฐฑ์๋ ์๋น์ค๋ก ๋ผ์ฐํ
ํฉ๋๋ค.
gcloud beta compute url-maps create web-map-http \ --default-service web-backend-service
- HTTPS์ ๊ฒฝ์ฐ URL ๋งต์ ๋ง๋ค์ด ์์ ์์ฒญ์ ๊ธฐ๋ณธ ๋ฐฑ์๋ ์๋น์ค๋ก ๋ผ์ฐํ
ํฉ๋๋ค.
gcloud beta compute url-maps create web-map-https \ --default-service web-backend-service
HTTPS ํ๋ฐํธ์๋ ์ค์
HTTP ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ์ด ์น์ ์ ๊ฑด๋๋๋๋ค.
- HTTPS์ ๊ฒฝ์ฐ ์์ง ๋ง๋ค์ง ์์์ผ๋ฉด ๋ค์ ์น์
๊ณผ ๊ฐ์ด ์ ์ญ SSL ์ธ์ฆ์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ด ์์์์ SSL ์ธ์ฆ์ ๋ฆฌ์์ค์ ์ด๋ฆ์
www-ssl-cert์ ๋๋ค. - Google ๊ด๋ฆฌํ SSL ์ธ์ฆ์ ๋ฆฌ์์ค ๋ง๋ค๊ธฐ
- ์์ฒด ๊ด๋ฆฌํ SSL ์ธ์ฆ์ ๋ฆฌ์์ค ๋ง๋ค๊ธฐ
HTTPS์ ๊ฒฝ์ฐ ๋์ HTTPS ํ๋ก์๋ฅผ ๋ง๋ค์ด ์์ฒญ์ URL ๋งต์ ๋ผ์ฐํ ํฉ๋๋ค. ํ๋ก์๋ HTTPS ๋ถํ ๋ถ์ฐ์ฉ SSL ์ธ์ฆ์๋ฅผ ํฌํจํ๋ ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ผ๋ถ๋ถ์ด๋ฏ๋ก ์ด ๋จ๊ณ์์ ์ธ์ฆ์๋ ๋ก๋ํ์ธ์.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map-https \ --ssl-certificates=www-ssl-cert
- HTTPS์ ๊ฒฝ์ฐ ์ ์ญ ์ ๋ฌ ๊ท์น์ ๋ง๋ค์ด ์์ ์์ฒญ์ ํ๋ก์๋ก ๋ผ์ฐํ
ํฉ๋๋ค.
gcloud compute forwarding-rules create https-content-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
- (์ ํ์ฌํญ) HTTPS์ ๊ฒฝ์ฐ ์ ์ญ SSL ์ ์ฑ
์ ๋ง๋ค๊ณ ์ด๋ฅผ HTTPS ํ๋ก์์ ์ฐ๊ฒฐํฉ๋๋ค.
์ ์ญ SSL ์ ์ฑ ์ ๋ง๋ค๋ ค๋ฉด ๋ค์์ ์คํํฉ๋๋ค. ์ ์ญ ๋์ HTTPS ํ๋ก์์ SSL ์ ์ฑ ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.gcloud compute ssl-policies create my-ssl-policy \ --profile MODERN \ --min-tls-version 1.0
gcloud compute target-https-proxies update https-lb-proxy \ --ssl-policy my-ssl-policy
HTTP ํ๋ฐํธ์๋ ์ค์
HTTPS ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ์ด ์น์ ์ ๊ฑด๋๋๋๋ค.
- HTTP์ ๊ฒฝ์ฐ ๋์ HTTP ํ๋ก์๋ฅผ ๋ง๋ค์ด URL ๋งต์ ์์ฒญ์ ๋ผ์ฐํ
ํฉ๋๋ค.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
- HTTP์ ๊ฒฝ์ฐ ์ ์ญ ์ ๋ฌ ๊ท์น์ ๋ง๋ค์ด ์์ ์์ฒญ์ ํ๋ก์๋ก ๋ผ์ฐํ
ํฉ๋๋ค.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
-
์ํ ์ ๊ฒ์ ๋ง๋ค๋ ค๋ฉด
google_compute_health_check๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. -
๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด
google_compute_backend_service๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.์ด ์์์์๋ ๊ณ ๊ธ ํธ๋ํฝ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ผ๋ก ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ค์ ํ๋
load_balancing_scheme="EXTERNAL_MANAGED"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ ์load_balancing_scheme์EXTERNAL๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. -
URL ๋งต์ ๋ง๋ค๋ ค๋ฉด
google_compute_url_map๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. -
๋์ HTTP ํ๋ก์๋ฅผ ๋ง๋ค๋ ค๋ฉด
google_compute_target_http_proxy๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. -
์ ๋ฌ ๊ท์น์ ๋ง๋ค๋ ค๋ฉด
google_compute_global_forwarding_rule๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.์ด ์์์์๋ ๊ณ ๊ธ ํธ๋ํฝ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ผ๋ก ์ ์ญ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ค์ ํ๋
load_balancing_scheme="EXTERNAL_MANAGED"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ ์load_balancing_scheme์EXTERNAL๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ถํ ๋ถ์ฐ๊ธฐ์ ๋๋ฉ์ธ ์ฐ๊ฒฐ
๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ ํ ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ฐ๊ฒฐ๋ IP ์ฃผ์๋ฅผ ํ์ธํฉ๋๋ค(์: 30.90.80.100). ๋๋ฉ์ธ์ด ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํ๋ ค๋ฉด ๋๋ฉ์ธ ๋ฑ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ A ๋ ์ฝ๋๋ฅผ ๋ง๋ญ๋๋ค. SSL ์ธ์ฆ์์ ์ฌ๋ฌ ๋๋ฉ์ธ์ ์ถ๊ฐํ๋ค๋ฉด ๋ชจ๋ ๋ถํ ๋ถ์ฐ๊ธฐ์ IP ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ A ๋ ์ฝ๋๋ฅผ ๋๋ฉ์ธ๋ง๋ค ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด www.example.com ๋ฐ example.com์ A ๋ ์ฝ๋๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Cloud DNS๋ฅผ DNS ์ ๊ณต์ ์ฒด๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ ์ฝ๋ ์ถ๊ฐ, ์์ , ์ญ์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ธ์คํด์ค๋ก ์ ์ก๋๋ ํธ๋ํฝ ํ ์คํธ
๋ถํ ๋ถ์ฐ ์๋น์ค๊ฐ ์คํ ์ค์ด๋ฏ๋ก ์ด์ ์ ๋ฌ ๊ท์น์ผ๋ก ํธ๋ํฝ์ ์ ์กํ๊ณ ๋ค๋ฅธ ์ธ์คํด์ค๋ก ๋ถ์ฐ๋๋ ํธ๋ํฝ์ ์ดํด๋ณผ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ์์์ ๋ง๋ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฐฑ์๋ ์น์ ์์ VM์ด ์ ์์ธ์ง ํ์ธํฉ๋๋ค. ์ ์ ์ด์ ๋ VM์ด ๋ชจ๋ ์ ์์ผ๋ก ํ์๋์ด์ผ ํฉ๋๋ค(
2/2). ๊ทธ๋ ์ง ์์ผ๋ฉด ๋จผ์ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํด ๋ณด์ธ์. Google Cloud ์ฝ์์์ VM์ด ์ ์์ธ์ง ํ์ธํ๋ ๋ฐ ๋ช ๋ถ ์ ๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋ช ๋ถ ํ์๋ ๋ฐฑ์๋๊ฐ ์ ์์ผ๋ก ํ์๋์ง ์์ผ๋ฉด ๋ฐฉํ๋ฒฝ ๊ตฌ์ฑ๊ณผ ๋ฐฑ์๋ VM์ ํ ๋น๋ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ๊ฒํ ํฉ๋๋ค.- HTTPS์ ๊ฒฝ์ฐ Google์ด ๊ด๋ฆฌํ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ธ์ฆ์ ๋ฆฌ์์ค์ ์ํ๊ฐ ACTIVE์ธ์ง ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Google ๊ด๋ฆฌ SSL ์ธ์ฆ์ ๋ฆฌ์์ค ์ํ๋ฅผ ์ฐธ์กฐํ์ธ์.
- Google Cloud ์ฝ์์์ ๋ฐฑ์๋ ์ธ์คํด์ค๊ฐ ์ ์์์ ํ์ํ๋ฉด
https://IP_ADDRESS(๋๋http://IP_ADDRESS)๋ก ์ด๋ํ์ฌ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํด ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค.IP_ADDRESS๋ฅผ ๋ถํ ๋ถ์ฐ๊ธฐ์ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค. - ์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ HTTPS ํ ์คํธ์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ ์๋ฝํ๋๋ก ๋ช ์์ ์ผ๋ก ์ง์ํด์ผ ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ํ์ด์ง๋ฅผ ์ ๊ณตํ ์ธ์คํด์ค์ ์ด๋ฆ๊ณผ ์์ญ์ ํ์ํ๋ ์ฝํ
์ธ ๋ก ํ์ด์ง์ ๋ ๋๋งํด์ผ ํฉ๋๋ค(์:
Page served from: lb-backend-example-xxxx). ๋ธ๋ผ์ฐ์ ์์ ์ด ํ์ด์ง๋ฅผ ๋ ๋๋งํ์ง ์๋ ๊ฒฝ์ฐ ์ด ๊ฐ์ด๋์ ๊ตฌ์ฑ ์ค์ ์ ๊ฒํ ํ์ธ์.
gcloud
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
๋ช ๋ถ์ด ์ง๋ ํ์ ๋ค์ curl ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์ค์ ์ ํ
์คํธํ ์ ์์ต๋๋ค.
curl http://IP_ADDRESS
-๋๋-
curl https://HOSTNAME
๋ค์ ๋จ๊ณ
- ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ HTTP-HTTPS ๊ฐ ๋ฆฌ๋๋ ์ ์ ์ค์ ํ๋ ค๋ฉด ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ HTTP-HTTPS ๋ฆฌ๋๋ ์ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
- IPv6 ๋ฐ ๋ฉํฐ ๋ฆฌ์ ๋ถํ ๋ถ์ฐ์ ๋ค๋ฃจ๋ ๋ณต์กํ ์์๋ HTTPS ๋ถํ ๋ถ์ฐ๊ธฐ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ค์ ์ญ์
- IAP๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์์ IAP ์ฌ์ฉ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
- Terraform ๋ชจ๋์ ์ฌ์ฉํ๋ ค๋ฉด ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ํ Terraform ๋ชจ๋ ์์๋ฅผ ์ฐธ์กฐํ์ธ์.