์ด ๋ฌธ์์์๋ Compute Engine VM์์ ์คํ๋๋ ์๋น์ค์ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
ํน์ ๋ฆฌ์ ์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ ์ฃผ๋ก ๊ดํ ๊ถ ๊ท์ ์ค์ ์๊ตฌ์ฌํญ์ด ์๋ ์ํฌ๋ก๋์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ ํ๋ฆฌ๋ฏธ์ ๋ฐ ํ์ค ๋คํธ์ํฌ ์๋น์ค ๋ฑ๊ธ์ ์ง์ํ๋ฏ๋ก ํ์ค ๋คํธ์ํฌ ๋ฑ๊ธ ์ด๊ทธ๋ ์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ํ์ํ ์ํฌ๋ก๋ ๋ํ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
์ด ๊ฐ์ด๋๋ฅผ ์งํํ๊ธฐ ์ ์ ๋ค์ ์ฌํญ์ ์์งํ์ธ์.
๊ถํ
์ด ๊ฐ์ด๋๋ฅผ ์งํํ๋ ค๋ฉด ํ๋ก์ ํธ์์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ๋คํธ์ํฌ๋ฅผ ์์ ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ํ๋ก์ ํธ ์์ ์ ๋๋ ํธ์ง์์ด๊ฑฐ๋ ๋ค์ Compute Engine IAM ์ญํ ์ ๋ชจ๋ ๋ณด์ ํด์ผ ํฉ๋๋ค.
์์ | ํ์ํ ์ญํ |
---|---|
๋คํธ์ํฌ, ์๋ธ๋ท, ๋ถํ ๋ถ์ฐ๊ธฐ ๊ตฌ์ฑ์์ ๋ง๋ค๊ธฐ | ๋คํธ์ํฌ ๊ด๋ฆฌ์ |
๋ฐฉํ๋ฒฝ ๊ท์น ์ถ๊ฐ ๋ฐ ์ญ์ | ๋ณด์ ๊ด๋ฆฌ์ |
์ธ์คํด์ค ๋ง๋ค๊ธฐ | ์ธ์คํด์ค ๊ด๋ฆฌ์ |
์์ธํ ๋ด์ฉ์ ๋ค์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค์ ๊ฐ์
๋ค์๊ณผ ๊ฐ์ ๋๋ต์ ์ธ ๊ตฌ์ฑ ํ๋ฆ์ ์ค๋ช ์ ๋ฐ๋ผ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ๋จ๊ณ๋ ๋ค์ด์ด๊ทธ๋จ์ ๋ฒํธ๋ฅผ ๋ํ๋ ๋๋ค.
๋ค์ด์ด๊ทธ๋จ์์ ๋ณผ ์ ์๋ฏ์ด ์ด ์์์์๋ ํ๋์ ๋ฐฑ์๋ ์๋น์ค์ ๋ ๊ฐ์ ๋ฐฑ์๋ ์ธ์คํด์ค ๊ทธ๋ฃน์ด ์๋ us-west1
๋ฆฌ์ ์ VPC ๋คํธ์ํฌ์ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์
๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ญ๋๋ค.
๋ค์ด์ด๊ทธ๋จ์ ํ์๋ ํญ๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ ๊ฐ์ ์๋ธ๋ท์ด ์๋ VPC ๋คํธ์ํฌ:
์๋ธ๋ท ํ๋๋ ๋ฐฑ์๋(์ธ์คํด์ค ๊ทธ๋ฃน)์ ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ IP ์ฃผ์ ๋ฒ์๋
10.1.2.0/24
์ ๋๋ค.๋ค๋ฅธ ์๋ธ๋ท์
us-west1
๋ฆฌ์ ์ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ๋๋ค. ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ VPC ๋คํธ์ํฌ์ ๊ฐ ๋ฆฌ์ ์ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท ํ๋๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ํด๋น ๋ฆฌ์ ์ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ํด๋น ๋ฆฌ์ ์ ๋ชจ๋ ๋ฆฌ์ ๋ถํ ๋ถ์ฐ๊ธฐ ๊ฐ์ ๊ณต์ ๋ฉ๋๋ค. ๋ถํ ๋ถ์ฐ๊ธฐ์์ ์๋น์ค์ ๋ฐฑ์๋๋ก ๋ณด๋ธ ํจํท์ ์์ค ์ฃผ์๋ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์์ ํ ๋น๋ฉ๋๋ค. ์ด ์์์์ ๋ฆฌ์ ์ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ๊ธฐ๋ณธ IP ์ฃผ์ ๋ฒ์๋ ๊ถ์ฅ ์๋ธ๋ท ํฌ๊ธฐ์ธ10.129.0.0/23
์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ์ฐธ์กฐํ์ธ์.
๋คํธ์ํฌ์์ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท ํธ๋ํฝ ํ๋ฆ์ ํ์ฉํ๋ ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋๋ค. ์ฆ,
10.129.0.0/23
(์ด ์์์์ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท ๋ฒ์)์ TCP ํฌํธ80
,443
,8080
ํธ๋ํฝ์ ํ์ฉํ๋ ํ๋์ ๊ท์น์ ์ถ๊ฐํฉ๋๋ค. ์ํ ์ ๊ฒ ํ๋ก๋ธ์ ๋ ๋ค๋ฅธ ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋๋ค.๋ฐฑ์๋ ์ธ์คํด์ค.
์ธ์คํด์ค ๊ทธ๋ฃน:
- Compute Engine VM ๋ฐฐํฌ๋ฅผ ์ํ ๊ด๋ฆฌํ ๋๋ ๋น๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน
- GKE ๋ฐฐํฌ๋ฅผ ์ํ NEG
๊ฐ ์์ญ์์ ๋ฐฐํฌ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ฐฑ์๋ ๊ทธ๋ฃน ์ ํ์ ์กฐํฉํ ์ ์์ต๋๋ค.
๋ฐฑ์๋ ์ค๋น ์ํ๋ฅผ ๋ณด๊ณ ํ๋ ๋ฆฌ์ ๋ณ ์ํ ์ ๊ฒ์ ๋๋ค.
๋ฐฑ์๋์ ์ฌ์ฉ ๋ฐ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฆฌ์ ๋ณ ๋ฐฑ์๋ ์๋น์ค์ ๋๋ค.
๋ฆฌ์ ๋ณ URL ๋งต์ ์์ฒญ์ URL์ ํ์ฑํ๊ณ ์์ฒญ URL์ ํธ์คํธ์ ๊ฒฝ๋ก์ ๋ฐ๋ผ ํน์ ๋ฐฑ์๋ ์๋น์ค๋ก ์์ฒญ์ ์ ๋ฌํฉ๋๋ค.
์ฌ์ฉ์๋ก๋ถํฐ ์์ฒญ์ ์์ ํ์ฌ URL ๋งต์ ์ ๋ฌํ๋ ๋ฆฌ์ ๋ณ ๋์ HTTP ๋๋ HTTPS ํ๋ก์์ ๋๋ค. HTTPS์ ๊ฒฝ์ฐ ๋ฆฌ์ ๋ณ SSL ์ธ์ฆ์ ๋ฆฌ์์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. HTTPS ๋ถํ ๋ถ์ฐ์ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ๋์ ํ๋ก์๊ฐ SSL ์ธ์ฆ์ ๋๋ ์ธ์ฆ์ ๊ด๋ฆฌ์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ SSL ํธ๋ํฝ์ ๋ณตํธํํ ์ ์์ต๋๋ค. ๋์ ํ๋ก์๋ HTTP๋ HTTPS๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ํฝ์ ์ธ์คํด์ค์ ์ ๋ฌํ ์ ์์ต๋๋ค.
๊ฐ ์์ ์์ฒญ์ ๋์ ํ๋ก์๋ก ์ ๋ฌํ๊ธฐ ์ํ ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ง ์ ๋ฌ ๊ท์น์ ๋๋ค.
์ ๋ฌ ๊ท์น๊ณผ ์ฐ๊ฒฐ๋ ์ธ๋ถ IP ์ฃผ์๋ ๋ถํ ๋ถ์ฐ๊ธฐ์ IP ์ฃผ์ ์์ฝ์ ์ค๋ช ๋๋ก
gcloud compute addresses create
๋ช ๋ น์ด๋ฅผ ํตํด ์์ฝ๋ฉ๋๋ค.
๋คํธ์ํฌ ๋ฐ ์๋ธ๋ท ๊ตฌ์ฑ
๋ถํ ๋ถ์ฐ๊ธฐ์ ๋ฐฑ์๋๋ฅผ ์ํ ์๋ธ๋ท ํ ๊ฐ์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ํ๋ก์๋ฅผ ์ํ ์๋ธ๋ท ํ ๊ฐ, ์ด ๋ ๊ฐ ์๋ธ๋ท์ด ์๋ VPC ๋คํธ์ํฌ๊ฐ ํ์ํฉ๋๋ค. ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ ๋ฆฌ์ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ํธ๋ํฝ ์์ค๊ฐ ๋ถํ ๋ถ์ฐ๊ธฐ์ ๋์ผํ ๋ฆฌ์ ์ ์๋ธ๋ท์ ์๋ ๊ฒฝ์ฐ VPC ๋คํธ์ํฌ ๋ด์ ํธ๋ํฝ์ด ๋ถํ ๋ถ์ฐ๊ธฐ๋ก ๋ผ์ฐํ ๋ฉ๋๋ค.
์ด ์์์์๋ ๋ค์ VPC ๋คํธ์ํฌ, ๋ฆฌ์ ๋ฐ ์๋ธ๋ท์ ์ฌ์ฉํฉ๋๋ค.
๋คํธ์ํฌ. ๋คํธ์ํฌ๋ ์ปค์คํ ๋ชจ๋ VPC ๋คํธ์ํฌ์ด๋ฉฐ ์ด๋ฆ์
lb-network
์ ๋๋ค.๋ฐฑ์๋ ์๋ธ๋ท.
us-west1
๋ฆฌ์ ์ ์๋backend-subnet
์ด๋ผ๋ ์ด๋ฆ์ ์๋ธ๋ท์ ๊ธฐ๋ณธ IP ๋ฒ์๋ก10.1.2.0/24
๋ฅผ ์ฌ์ฉํฉ๋๋ค.ํ๋ก์ ์๋ธ๋ท.
us-west1
๋ฆฌ์ ์ ์๋proxy-only-subnet
์ด๋ผ๋ ์ด๋ฆ์ ์๋ธ๋ท์ ๊ธฐ๋ณธ IP ๋ฒ์๋ก10.129.0.0/23
์ ์ฌ์ฉํฉ๋๋ค.
๋ฐฑ์๋ ๋คํธ์ํฌ ๋ฐ ์๋ธ๋ท ๊ตฌ์ฑ
์ฝ์
Google Cloud ์ฝ์์์ VPC ๋คํธ์ํฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
VPC ๋คํธ์ํฌ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด๋ฆ์
lb-network
๋ฅผ ์ ๋ ฅํฉ๋๋ค.์๋ธ๋ท ์น์ ์์ ๋ค์์ ์ํํฉ๋๋ค.
- ์๋ธ๋ท ์์ฑ ๋ชจ๋๋ฅผ ์ปค์คํ ์ผ๋ก ์ค์ ํฉ๋๋ค.
- ์ ์๋ธ๋ท ์น์
์ ๋ค์ ์ ๋ณด๋ฅผ ์
๋ ฅํฉ๋๋ค.
- ์ด๋ฆ:
backend-subnet
- ๋ฆฌ์ :
us-west1
- IP ์ฃผ์ ๋ฒ์:
10.1.2.0/24
- ์ด๋ฆ:
- ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud compute networks create
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ปค์คํ VPC ๋คํธ์ํฌ๋ฅผ ๋ง๋ญ๋๋ค.gcloud compute networks create lb-network --subnet-mode=custom
gcloud compute networks subnets create
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌus-west1
๋ฆฌ์ ์lb-network
๋คํธ์ํฌ์ ์๋ธ๋ท์ ๋ง๋ญ๋๋ค.gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
Terraform
VPC ๋คํธ์ํฌ๋ฅผ ๋ง๋ค๋ ค๋ฉด google_compute_network
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
lb-network
๋คํธ์ํฌ์ VPC ์๋ธ๋ท์ ๋ง๋ค๋ ค๋ฉด google_compute_subnetwork
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
API
networks.insert
๋ฉ์๋์ ๋ํดPOST
์์ฒญ์ ์ํํฉ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "routingConfig": { "routingMode": "REGIONAL" }, "name": "lb-network", "autoCreateSubnetworks": false }
subnetworks.insert
๋ฉ์๋์ ๋ํดPOST
์์ฒญ์ ์ํํฉ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "backend-subnet", "network": "projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "region": "projects/PROJECT_ID/regions/us-west1", }
ํ๋ก์ ์ ์ฉ ์๋ธ๋ท ๊ตฌ์ฑ
ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ Google์ด ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ Envoy ํ๋ก์๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉํ๋ IP ์ฃผ์ ์งํฉ์ ์ ๊ณตํฉ๋๋ค. ํ๋ก์๋ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๊ณ ๋ฐฑ์๋์ ์ ์ฐ๊ฒฐ์ ๋ง๋ญ๋๋ค.
์ด ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ lb-network
VPC ๋คํธ์ํฌ์ ๋์ผํ ๋ฆฌ์ ์ ์๋ ๋ชจ๋ Envoy ๊ธฐ๋ฐ ๋ฆฌ์ ๋ถํ ๋ถ์ฐ๊ธฐ์์ ์ฌ์ฉ๋ฉ๋๋ค. ๋คํธ์ํฌ๋น ๋ฆฌ์ ๋ณ ํ์ฑ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ํ๋๋ง ์์ ์ ์์ต๋๋ค.
์ฝ์
๋ํ Google Cloud ์ฝ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋์ค์ ๋ถํ ๋ถ์ฐ ํ์ด์ง์์ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ๋ง๋ค ์ ์์ต๋๋ค.
์ง๊ธ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Google Cloud ์ฝ์์์ VPC ๋คํธ์ํฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
VPC ๋คํธ์ํฌ์ ์ด๋ฆ(
lb-network
)์ ํด๋ฆญํฉ๋๋ค.์๋ธ๋ท ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด๋ฆ์
proxy-only-subnet
๋ฅผ ์ ๋ ฅํฉ๋๋ค.๋ฆฌ์ ์์
us-west1
์ ์ ํํฉ๋๋ค.์ฉ๋๋ฅผ ๋ฆฌ์ ๋ณ ๊ด๋ฆฌํ ํ๋ก์๋ก ์ค์ ํฉ๋๋ค.
IP ์ฃผ์ ๋ฒ์์
10.129.0.0/23
์ ์ ๋ ฅํฉ๋๋ค.์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud compute networks subnets
create
๋ช
๋ น์ด๋ก ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ๋ง๋ญ๋๋ค.
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-west1 \ --network=lb-network \ --range=10.129.0.0/23
Terraform
lb-network
๋คํธ์ํฌ์ VPC ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ๋ง๋ค๋ ค๋ฉด google_compute_subnetwork
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
API
subnetworks.insert
๋ฉ์๋๋ก ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "proxy-only-subnet", "ipCidrRange": "10.129.0.0/23", "network": "projects/PROJECT_ID/global/networks/lb-network", "region": "projects/PROJECT_ID/regions/us-west1", "purpose": "REGIONAL_MANAGED_PROXY", "role": "ACTIVE" }
๋ฐฉํ๋ฒฝ ๊ท์น ๊ตฌ์ฑ
์ด ์์์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
fw-allow-health-check
. ๋ถํ ๋ถ์ฐ๋๋ ์ธ์คํด์ค์ ์ ์ฉ๋๋ ์ธ๊ทธ๋ ์ค ๊ท์น์ผ๋ก Google Cloud์ํ ์ ๊ฒ ์์คํ (130.211.0.0/22
๋ฐ35.191.0.0/16
์ฐธ์กฐ)์ ๋ชจ๋ TCP ํธ๋ํฝ์ ํ์ฉํฉ๋๋ค. ์ด ์์์์๋load-balanced-backend
๋์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฉํ๋ฒฝ ๊ท์น์ด ์ ์ฉ๋๋ VM์ ์๋ณํฉ๋๋ค.fw-allow-proxies
: ๋ถํ ๋ถ์ฐ๋๋ ์ธ์คํด์ค์ ์ ์ฉ๋๋ ์ธ๊ทธ๋ ์ค ๊ท์น์ผ๋ก ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ด๋ฆฌํ ํ๋ก์๋ก๋ถํฐ ํฌํธ80
,443
,8080
๋ก์ TCP ํธ๋ํฝ์ ํ์ฉํฉ๋๋ค. ์ด ์์์์๋ ๋์ ํ๊ทธload-balanced-backend
๋ฅผ ์ฌ์ฉํด์ ๋ฐฉํ๋ฒฝ ๊ท์น์ด ์ ์ฉ๋๋ VM์ ์๋ณํฉ๋๋ค.
์ด๋ฌํ ๋ฐฉํ๋ฒฝ ๊ท์น์ด ์์ผ๋ฉด ๊ธฐ๋ณธ ๊ฑฐ๋ถ ์ธ๊ทธ๋ ์ค ๊ท์น์ ๋ฐฑ์๋ ์ธ์คํด์ค๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ์ฐจ๋จํฉ๋๋ค.
๋์ ํ๊ทธ๋ ๋ฐฑ์๋ ์ธ์คํด์ค๋ฅผ ์ ์ํฉ๋๋ค. ๋์ ํ๊ทธ๊ฐ ์์ผ๋ฉด VPC ๋คํธ์ํฌ์ ๋ชจ๋ ๋ฐฑ์๋ ์ธ์คํด์ค์ ๋ฐฉํ๋ฒฝ ๊ท์น์ด ์ ์ฉ๋ฉ๋๋ค. ๋ฐฑ์๋ VM์ ๋ง๋ค ๋๋ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน ๋ง๋ค๊ธฐ์ ๋์จ ๋๋ก ์ง์ ๋ ๋์ ํ๊ทธ๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ๋ฐฉํ๋ฒฝ ์ ์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐฉํ๋ฒฝ ๊ท์น ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌGoogle Cloud ์ํ ์ ๊ฒ์ ํ์ฉํ๋ ๊ท์น์ ๋ง๋ญ๋๋ค.
- ์ด๋ฆ:
fw-allow-health-check
- ๋คํธ์ํฌ:
lb-network
- ํธ๋ํฝ ๋ฐฉํฅ: ์ธ๊ทธ๋ ์ค
- ์ผ์น ์ ์์ : ํ์ฉ
- ๋์: ์ง์ ๋ ๋์ ํ๊ทธ
- ๋์ ํ๊ทธ:
load-balanced-backend
- ์์ค ํํฐ: IPv4 ๋ฒ์
- ์์ค IPv4 ๋ฒ์:
130.211.0.0/22
๋ฐ35.191.0.0/16
- ํ๋กํ ์ฝ ๋ฐ ํฌํธ:
- ์ง์ ๋ ํ๋กํ ์ฝ ๋ฐ ํฌํธ๋ฅผ ์ ํํฉ๋๋ค.
- TCP ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ ํ ํฌํธ ๋ฒํธ์
80
์ ์ ๋ ฅํฉ๋๋ค.
๊ถ์ฅ์ฌํญ์ ๋ฐ๋ผ์ ์ํ ํ์ธ์ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ์ผ์นํ๋ ํ๋กํ ์ฝ ๋ฐ ํฌํธ๋ก ์ด๋ฌํ ๊ท์น์ ์ ํํฉ๋๋ค. ํ๋กํ ์ฝ ๋ฐ ํฌํธ์tcp:80
์ ์ฌ์ฉํ๋ฉด Google Cloud ๊ฐ ํฌํธ80
์์ HTTP๋ฅผ ์ฌ์ฉํ์ฌ VM์ ์ฐ๊ฒฐํ ์ ์์ง๋ง ํฌํธ443
์์ HTTPS๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ ์๋ ์์ต๋๋ค.
- ์ด๋ฆ:
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฐฉํ๋ฒฝ ๊ท์น ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ๋ถํ ๋ถ์ฐ๊ธฐ์ ํ๋ก์ ์๋ฒ๋ฅผ ๋ฐฑ์๋์ ์ฐ๊ฒฐํ๋๋ก ํ์ฉํ๋ ๊ท์น์ ๋ง๋ญ๋๋ค.
- ์ด๋ฆ:
fw-allow-proxies
- ๋คํธ์ํฌ:
lb-network
- ํธ๋ํฝ ๋ฐฉํฅ: ์ธ๊ทธ๋ ์ค
- ์ผ์น ์ ์์ : ํ์ฉ
- ๋์: ์ง์ ๋ ๋์ ํ๊ทธ
- ๋์ ํ๊ทธ:
load-balanced-backend
- ์์ค ํํฐ: IPv4 ๋ฒ์
- ์์ค IPv4 ๋ฒ์:
10.129.0.0/23
- ํ๋กํ ์ฝ ๋ฐ ํฌํธ:
- ์ง์ ๋ ํ๋กํ ์ฝ ๋ฐ ํฌํธ๋ฅผ ์ ํํฉ๋๋ค.
- TCP ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ ๋ค์ ํฌํธ ๋ฒํธ๋ก
80, 443, 8080
์ ์ ๋ ฅํฉ๋๋ค.
- ์ด๋ฆ:
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
Google Cloud์ํ ํ์ธ์ ํ์ฉํ๋
fw-allow-health-check
๊ท์น์ ๋ง๋ญ๋๋ค. ์ด ์์์์๋ ์ํ ํ์ธ ํ๋ก๋ฒ์ ๋ชจ๋ TCP ํธ๋ํฝ์ ํ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์์ ๋ฐ๋ผ ๋ ์ข์ ํฌํธ ์งํฉ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=load-balanced-backend \ --rules=tcp
๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ํ๋ก์๋ฅผ ๋ฐฑ์๋์ ์ฐ๊ฒฐํ๋๋ก ํ์ฉํ๋
fw-allow-proxies
๊ท์น์ ๋ง๋ญ๋๋ค.source-ranges
๋ฅผ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ํ ๋น๋ ๋ฒ์๋ก ์ค์ ํฉ๋๋ค(์์:10.129.0.0/23
).gcloud compute firewall-rules create fw-allow-proxies \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=source-range \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
Terraform
๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ค๋ ค๋ฉด google_compute_firewall
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
API
firewalls.insert
๋ฉ์๋์ POST
์์ฒญ์ ์ํํ์ฌ fw-allow-health-check
๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "projects/PROJECT-ID/global/networks/lb-network", "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp" } ], "direction": "INGRESS" }
firewalls.insert
๋ฉ์๋์ ๋ํด ํ๋ก์ ์๋ธ๋ท ๋ด์์ TCP ํธ๋ํฝ์ ํ์ฉํ๋๋ก fw-allow-proxies
๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-proxies", "network": "projects/PROJECT_ID/global/networks/lb-network", "sourceRanges": [ "10.129.0.0/23" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "80" ] }, { "IPProtocol": "tcp", "ports": [ "443" ] }, { "IPProtocol": "tcp", "ports": [ "8080" ] } ], "direction": "INGRESS" }
VM ๊ธฐ๋ฐ ์๋น์ค๋ก ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ๊ตฌ์ฑ
์ด ์น์ ์์๋ Compute Engine VM์์ ์คํ๋๋ ์๋น์ค์ ํ์ํ ๊ตฌ์ฑ์ ๋ณด์ฌ์ค๋๋ค. ํด๋ผ์ด์ธํธ VM์ ์ ๋ฌ ๊ท์น์ ๊ตฌ์ฑ๋ IP ์ฃผ์์ ํฌํธ์ ์ฐ๊ฒฐํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด IP ์ฃผ์ ๋ฐ ํฌํธ๋ก ํธ๋ํฝ์ ์ ์กํ ๋ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ URL ๋งต์ ๋ฐ๋ผ ์์ฒญ์ด ๋ฐฑ์๋ ๊ฐ์ ๋จธ์ (VM)์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ด ํ์ด์ง์ ์์์์๋ ์์ ์ธ๋ถ IP ์ฃผ์ ํ ๋น์ ํ์ฉํ๋ ๋์ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ ๋ฌ ๊ท์น์ ์์ฝ๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๋ช ์์ ์ผ๋ก ๋ง๋ญ๋๋ค. ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ผ์ ์ ๋ฌ ๊ท์น์ IP ์ฃผ์๋ฅผ ์์ฝํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน ๋ฐฑ์๋ ๋ง๋ค๊ธฐ
์ด ์น์ ์์๋ ํ ํ๋ฆฟ ๋ฐ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน ์์ฑ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ์์์ ๋ฐฑ์๋ ์๋ฒ๋ฅผ ์คํํ๋ VM ์ธ์คํด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ํด๋ผ์ด์ธํธ์์ ์ ์ก๋ ํธ๋ํฝ์ ์ด๋ฌํ ๋ฐฑ์๋ ์๋ฒ๋ก ๋ถํ ๋ถ์ฐ๋ฉ๋๋ค. ์ฌ๊ธฐ์์๋ ๋ฐฑ์๋์์ ๋ฐ๋ชจ์ฉ์ผ๋ก ์์ฒด ํธ์คํธ ์ด๋ฆ์ ์ ๊ณตํฉ๋๋ค.
์ฝ์
์ธ์คํด์ค ํ ํ๋ฆฟ์ ๋ง๋ญ๋๋ค. Google Cloud ์ฝ์์์ ์ธ์คํด์ค ํ ํ๋ฆฟ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ์คํด์ค ํ ํ๋ฆฟ์ผ๋ก ์ด๋
- ์ธ์คํด์ค ํ ํ๋ฆฟ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ์
l7-xlb-backend-template
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ๋ถํ
๋์คํฌ๊ฐ Debian GNU/Linux 12(bookworm)์ ๊ฐ์ Debian ์ด๋ฏธ์ง๋ก ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค. ์ด ์๋ด์์๋
apt-get
์ฒ๋ผ Debian์์๋ง ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ๊ณ ๊ธ ์ต์ ์ ํด๋ฆญํฉ๋๋ค.
- ๋คํธ์ํน์ ํด๋ฆญํ๊ณ ๋ค์ ํ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ๋คํธ์ํฌ ํ๊ทธ์
load-balanced-backend
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ค์์ ์ ํํฉ๋๋ค.
- ๋คํธ์ํฌ:
lb-network
- ์๋ธ๋ท:
backend-subnet
- ๋คํธ์ํฌ:
- ๋คํธ์ํฌ ํ๊ทธ์
๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค. ์์ ์คํฌ๋ฆฝํธ ํ๋์ ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
#! /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))์ ์ ํํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์คํ ์ดํธ๋ฆฌ์ค(Stateless) ๋๋ ์คํ ์ดํธํ(Stateful) MIG๋ฅผ ์ฐธ์กฐํ์ธ์.
- ์ด๋ฆ์
l7-xlb-backend-example
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ์์น์์ ๋จ์ผ ์์ญ์ ์ ํํฉ๋๋ค.
- ๋ฆฌ์ ์์
us-west1
์ ์ ํํฉ๋๋ค. - ์์ญ์์
us-west1-a
๋ฅผ ์ ํํฉ๋๋ค. - ์ธ์คํด์ค ํ
ํ๋ฆฟ์์
l7-xlb-backend-template
์ ์ ํํฉ๋๋ค. ์๋ ํ์ฅ ๋ชจ๋์์ ์ฌ์ฉ: ๊ทธ๋ฃน์ ์ธ์คํด์ค ์ถ๊ฐ ๋ฐ ์ญ์ ๋ฅผ ์ ํํฉ๋๋ค.
์ต์ ์ธ์คํด์ค ์๋ฅผ
2
๋ก, ์ต๋ ์ธ์คํด์ค ์๋ฅผ2
์ด์์ผ๋ก ์ค์ ํฉ๋๋ค.๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
์ด ๊ฐ์ด๋์ gcloud
์๋ด์์๋ Cloud Shell ๋๋ bash๊ฐ ์ค์น๋ ๋ค๋ฅธ ํ๊ฒฝ์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
gcloud compute instance-templates create
๋ช ๋ น์ด๋ก HTTP ์๋ฒ๊ฐ ํฌํจ๋ VM ์ธ์คํด์ค ํ ํ๋ฆฟ์ ๋ง๋ญ๋๋ค.gcloud compute instance-templates create l7-xlb-backend-template \ --region=us-west1 \ --network=lb-network \ --subnet=backend-subnet \ --tags=load-balanced-backend \ --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'
gcloud compute instance-groups managed create
๋ช ๋ น์ด๋ก ์์ญ์ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ญ๋๋ค.gcloud compute instance-groups managed create l7-xlb-backend-example \ --zone=us-west1-a \ --size=2 \ --template=l7-xlb-backend-template
Terraform
์ธ์คํด์ค ํ
ํ๋ฆฟ์ ๋ง๋ค๋ ค๋ฉด google_compute_instance_template
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ค๋ ค๋ฉด google_compute_instance_group_manager
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
API
instanceTemplates.insert
๋ฉ์๋๋ก ์ธ์คํด์ค ํ ํ๋ฆฟ์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์PROJECT_ID
๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name":"l7-xlb-backend-template", "properties": { "machineType":"e2-standard-2", "tags": { "items":[ "load-balanced-backend" ] }, "metadata": { "kind":"compute#metadata", "items":[ { "key":"startup-script", "value":"#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "networkInterfaces":[ { "network":"projects/PROJECT_ID/global/networks/lb-network", "subnetwork":"regions/us-west1/subnetworks/backend-subnet", "accessConfigs":[ { "type":"ONE_TO_ONE_NAT" } ] } ], "disks": [ { "index":0, "boot":true, "initializeParams": { "sourceImage":"projects/debian-cloud/global/images/family/debian-12" }, "autoDelete":true } ] } }
instanceGroupManagers.insert
๋ฉ์๋๋ก ๊ฐ ์์ญ์ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์PROJECT_ID
๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/{zone}/instanceGroupManagers { "name": "l7-xlb-backend-example", "zone": "projects/PROJECT_ID/zones/us-west1-a", "instanceTemplate": "projects/PROJECT_ID/global/instanceTemplates/l7-xlb-backend-template", "baseInstanceName": "l7-xlb-backend-example", "targetSize": 2 }
์ธ์คํด์ค ๊ทธ๋ฃน์ ์ด๋ฆ์ด ์ง์ ๋ ํฌํธ ์ถ๊ฐ
์ธ์คํด์ค ๊ทธ๋ฃน์ HTTP ์๋น์ค๋ฅผ ์ ์ํ๊ณ ํด๋น ํฌํธ์ ํฌํธ ์ด๋ฆ์ ๋งคํํฉ๋๋ค. ๋ถํ ๋ถ์ฐ๊ธฐ์ ๋ฐฑ์๋ ์๋น์ค๊ฐ ํธ๋ํฝ์ ์ด๋ฆ์ด ์ง์ ๋ ํฌํธ๋ก ์ ๋ฌํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ์ธ์คํด์ค ๊ทธ๋ฃน ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ์คํด์ค ๊ทธ๋ฃน์ ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค(์ด ์์์์๋
l7-xlb-backend-example
).์ธ์คํด์ค ๊ทธ๋ฃน์ ๊ฐ์ ํ์ด์ง์์ ์์
์ ํด๋ฆญํฉ๋๋ค.ํฌํธ ์ด๋ฆ ๋งคํ ์ง์ ์ ํด๋ฆญํฉ๋๋ค.
ํญ๋ชฉ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํฌํธ ์ด๋ฆ์ผ๋ก
http
๋ฅผ ์ ๋ ฅํฉ๋๋ค. ํฌํธ ๋ฒํธ๋ก80
์ ์ ๋ ฅํฉ๋๋ค.์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud compute instance-groups
set-named-ports
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud compute instance-groups set-named-ports l7-xlb-backend-example \ --named-ports http:80 \ --zone us-west1-a
Terraform
named_port
์์ฑ์ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน ์ํ์ ํฌํจ๋์ด ์์ต๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ์ IP ์ฃผ์ ์์ฝ
๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ณ ์ IP ์ฃผ์๋ฅผ ์์ฝํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ๊ณ ์ ์ฃผ์ ์์ฝ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ ์ฃผ์์ ์ด๋ฆ์ ์ ํํฉ๋๋ค.
๋คํธ์ํฌ ์๋น์ค ๋ฑ๊ธ์ ์คํ ๋๋๋ฅผ ์ ํํฉ๋๋ค.
IP ๋ฒ์ ์์ IPv4๋ฅผ ์ ํํฉ๋๋ค. IPv6 ์ฃผ์๋ ์ ์ญ๋ง ๊ฐ๋ฅํ๋ฉฐ ์ ์ญ ๋ถํ ๋ถ์ฐ๊ธฐ์์๋ง ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ ํ์์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
๋ฆฌ์ ์์ us-west1์ ์ ํํฉ๋๋ค.
์ฐ๊ฒฐ ๋์ ์ต์ ์ ์์์ผ๋ก ์ค์ ๋ ์ํ๋ก ๋ก๋๋ค. ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ค๋ฉด ์ด IP ์ฃผ์๊ฐ ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ ๋ฌ ๊ท์น์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
์์ฝ์ ํด๋ฆญํ์ฌ IP ์ฃผ์๋ฅผ ์์ฝํฉ๋๋ค.
gcloud
gcloud compute
๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์์ฝํ๋ ค๋ฉดcompute addresses create
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.gcloud compute addresses create ADDRESS_NAME \ --region=us-west1 \ --network-tier=STANDARD
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADDRESS_NAME
: ์ฃผ์์ ์ด๋ฆ์ ๋๋ค.REGION
: ์ด ์ฃผ์๋ฅผ ์์ฝํ ๋ฆฌ์ ์ ๋๋ค. ์ด ๋ฆฌ์ ์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ๋์ผํ ๋ฆฌ์ ์ด์ด์ผ ํฉ๋๋ค. ๋ชจ๋ ๋ฆฌ์ IP ์ฃผ์๋IPv4
์ ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด
compute addresses describe
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.gcloud compute addresses describe ADDRESS_NAME
Terraform
IP ์ฃผ์๋ฅผ ์์ฝํ๋ ค๋ฉด google_compute_address
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ๊ณ ํ์ธ์.
API
๋ฆฌ์ IPv4 ์ฃผ์๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ฆฌ์ addresses.insert
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
์์ฒญ ๋ณธ๋ฌธ์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
{ "name": "ADDRESS_NAME" "networkTier": "STANDARD" "region": "us-west1" }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADDRESS_NAME
: ์ฃผ์์ ์ด๋ฆ์ ๋๋ค.REGION
: ์์ฒญ์ ๋ฆฌ์ ์ด๋ฆ์ ๋๋ค.PROJECT_ID
: ์ด ์์ฒญ์ ํ๋ก์ ํธ ID์ ๋๋ค.
๋ถํ ๋ถ์ฐ๊ธฐ ๊ตฌ์ฑ
์ด ์์์์๋ ๋ค์ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ ๋ฆฌ์์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
- HTTP ์ํ ์ ๊ฒ
- ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ด ๋ฐฑ์๋์ธ ๋ฐฑ์๋ ์๋น์ค
- URL ๋งต
- ๋์ HTTP(S) ํ๋ก์์ ๋ฆฌ์ ์ด ์ ์๋์ด ์์ผ๋ฉด ๋ฆฌ์ ๋ณ URL ๋งต์ ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ๋ฆฌ์ ๋ณ URL ๋งต์ ์์ URL์ ํธ์คํธ ๋ฐ ๊ฒฝ๋ก์ ๋ํด ์ ์ํ ๊ท์น์ ๋ฐ๋ผ ๋ฆฌ์ ๋ณ ๋ฐฑ์๋ ์๋น์ค๋ก ์์ฒญ์ ๋ผ์ฐํ ํฉ๋๋ค. ๋ฆฌ์ ๋ณ URL ๋งต์ ๋์ผํ ๋ฆฌ์ ์ ๋ฆฌ์ ๋ณ ๋์ ํ๋ก์ ๊ท์น์์๋ง ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- SSL ์ธ์ฆ์(HTTPS์ฉ)
- ๋์ ํ๋ก์
- ์ ๋ฌ ๊ท์น
ํ๋ก์ ๊ฐ์ฉ์ฑ
๊ฒฝ์ฐ์ ๋ฐ๋ผ Google Cloud ๋ฆฌ์ ์ ์๋ก์ด ๋ถํ ๋ถ์ฐ๊ธฐ์ ํ๋ก์ ์ฉ๋์ด ๋ถ์กฑํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์์ฑํ ๋ Google Cloud ์ฝ์์์ ํ๋ก์ ๊ฐ์ฉ์ฑ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ํํ๋ฉด ๋ฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ์ ๋ค๋ฅธ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค. ๋ค๋ฅธ ๋ฆฌ์ ์ ๋ฐฑ์๋๊ฐ ์์ผ๋ฉด ์ด ๋ฐฉ๋ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
- ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ด ์ด๋ฏธ ํ ๋น๋ VPC ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฉ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ฝ์
๋ถํ ๋ถ์ฐ๊ธฐ ์ ํ ์ ํ
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ ํ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ(HTTP/HTTPS)๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ๊ณต๊ฐ ๋๋ ๋ด๋ถ์์ ๊ณต๊ฐ(์ธ๋ถ)๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ์ ์ญ ๋๋ ๋จ์ผ ๋ฆฌ์ ๋ฐฐํฌ์์ ๋ฆฌ์ ์ํฌ๋ก๋์ ์ ํฉ์ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
๊ธฐ๋ณธ ๊ตฌ์ฑ
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ด๋ฆ์
regional-l7-xlb
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ๋ฆฌ์ ์์
us-west1
์ ์ ํํฉ๋๋ค. - ๋คํธ์ํฌ์์
lb-network
๋ฅผ ์ ํํฉ๋๋ค.
ํ๋ก์ ์ ์ฉ ์๋ธ๋ท ์์ฝ
๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ํ๋ก์ ์ ์ฉ ์๋ธ๋ท์ ์์ฝํฉ๋๋ค.
- ์๋ธ๋ท ์์ฝ์ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ์
proxy-only-subnet
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - IP ์ฃผ์ ๋ฒ์์
10.129.0.0/23
์ ์ ๋ ฅํฉ๋๋ค. - ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ๋ฐํธ์๋ ๊ตฌ์ฑ
HTTP์ ๊ฒฝ์ฐ:
- ํ๋ฐํธ์๋ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ์
l7-xlb-forwarding-rule
์ผ๋ก ์ค์ ํฉ๋๋ค. - ํ๋กํ ์ฝ์
HTTP
๋ก ์ค์ ํฉ๋๋ค. - ๋คํธ์ํฌ ์๋น์ค ๋ฑ๊ธ์ ํ์ค์ผ๋ก ์ค์ ํฉ๋๋ค.
- ํฌํธ๋ฅผ
80
์ผ๋ก ์ค์ ํฉ๋๋ค. - ๋ถํ ๋ถ์ฐ๊ธฐ์ IP ์ฃผ์ ์์ฝ์์ ๋ง๋ IP ์ฃผ์๋ฅผ ์ ํํฉ๋๋ค.
- ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
HTTPS์ ๊ฒฝ์ฐ:
- ํ๋ฐํธ์๋ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ ํ๋์
l7-xlb-forwarding-rule
์ ์ ๋ ฅํฉ๋๋ค. - ํ๋กํ ์ฝ ํ๋์์
HTTPS (includes HTTP/2)
๋ฅผ ์ ํํฉ๋๋ค. - ๋คํธ์ํฌ ์๋น์ค ๋ฑ๊ธ์ ํ์ค์ผ๋ก ์ค์ ํฉ๋๋ค.
- ํฌํธ๊ฐ
443
์ผ๋ก ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค. - ๋ถํ ๋ถ์ฐ๊ธฐ์ IP ์ฃผ์ ์์ฝ์์ ๋ง๋ IP ์ฃผ์๋ฅผ ์ ํํฉ๋๋ค.
- ์ธ์ฆ์ ๋ชฉ๋ก์์ ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
- ์ด๋ฏธ Compute Engine ์์ฒด ๊ด๋ฆฌํ SSL ์ธ์ฆ์ ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ SSL ์ธ์ฆ์๋ฅผ ์ ํํฉ๋๋ค.
- ์ ์ธ์ฆ์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ ํ๋์
l7-xlb-cert
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ํด๋น ํ๋์ ๋ค์ PEM ํ์์ ํ์ผ์ ์
๋ก๋ํฉ๋๋ค.
- ์ธ์ฆ์
- ๋น๊ณต๊ฐ ํค
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ ํ๋์
- ์ ํ์ฌํญ: ๊ธฐ๋ณธ SSL ์ธ์ฆ์ ์ธ์ ์ธ์ฆ์๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
- ์ธ์ฆ์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฏธ ์ธ์ฆ์๊ฐ ์์ผ๋ฉด ์ธ์ฆ์ ๋ชฉ๋ก์์ ์ธ์ฆ์๋ฅผ ์ ํํฉ๋๋ค.
- ์ ํ์ฌํญ: ์ ์ธ์ฆ์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ์ด์ ๋จ๊ณ์ ๋์จ ์๋ด๋ฅผ ๋ฐ๋ฆ ๋๋ค.
SSL ์ ์ฑ ๋ชฉ๋ก์์ SSL ์ ์ฑ ์ ์ ํํฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ SSL ์ ์ฑ ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- SSL ์ ์ฑ ๋ชฉ๋ก์์ ์ ์ฑ ๋ง๋ค๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
- SSL ์ ์ฑ ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ์ต์ TLS ๋ฒ์ ์ ์ ํํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ TLS 1.0์ ๋๋ค.
- ์ฌ์ ๊ตฌ์ฑ๋ Google ๊ด๋ฆฌํ ํ๋กํ ์ค ํ๋๋ฅผ ์ ํํ๊ฑฐ๋ SSL ๊ธฐ๋ฅ์ ๊ฐ๋ณ์ ์ผ๋ก ์ ํํ ์ ์๋ ์ปค์คํ ํ๋กํ์ ์ ํํฉ๋๋ค. ์ฌ์ฉ ์ค์ ๋ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ ์ค์ง๋ ๊ธฐ๋ฅ์ด ํ์๋ฉ๋๋ค.
- ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
SSL ์ ์ฑ ์ ๋ง๋ค์ง ์์ผ๋ฉด ๊ธฐ๋ณธ Google Cloud SSL ์ ์ฑ ์ด ์ ์ฉ๋ฉ๋๋ค.
์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฐฑ์๋ ์๋น์ค ๊ตฌ์ฑ
- ๋ฐฑ์๋ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
- ๋ฐฑ์๋ ์๋น์ค ๋ง๋ค๊ธฐ ๋๋ ์ ํ ๋ฉ๋ด์์ ๋ฐฑ์๋ ์๋น์ค ๋ง๋ค๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
- ๋ฐฑ์๋ ์๋น์ค์ ์ด๋ฆ์
l7-xlb-backend-service
๋ก ์ค์ ํฉ๋๋ค. - ํ๋กํ ์ฝ์์ HTTP๋ฅผ ์ ํํฉ๋๋ค.
- ์ด๋ฆ์ด ์ง์ ๋ ํฌํธ์
http
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ๋ฐฑ์๋ ์ ํ์ ์ธ์คํด์ค ๊ทธ๋ฃน์ผ๋ก ์ค์ ํฉ๋๋ค.
- ์ ๋ฐฑ์๋ ์น์
์์ ๋ค์์ ์ํํฉ๋๋ค.
- ์ธ์คํด์ค ๊ทธ๋ฃน์
l7-xlb-backend-example
์ผ๋ก ์ค์ ํฉ๋๋ค. - ํฌํธ ๋ฒํธ๋ฅผ
80
์ผ๋ก ์ค์ ํฉ๋๋ค. - ๋ถ์ฐ ๋ชจ๋๋ฅผ ์ฌ์ฉ๋ฅ ๋ก ์ค์ ํฉ๋๋ค.
- ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ธ์คํด์ค ๊ทธ๋ฃน์
- ์ํ ์ ๊ฒ ๋ชฉ๋ก์์ ์ํ ์ ๊ฒ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ์
l7-xlb-basic-check
์ผ๋ก ์ค์ ํฉ๋๋ค. - ํ๋กํ ์ฝ์
HTTP
๋ก ์ค์ ํฉ๋๋ค. - ํฌํธ๋ฅผ
80
์ผ๋ก ์ค์ ํฉ๋๋ค. - ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ์
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ผ์ฐํ ๊ท์น ๊ตฌ์ฑ
- ๋ผ์ฐํ ๊ท์น์ ํด๋ฆญํฉ๋๋ค.
- ๋ชจ๋์์ ๋จ์ํ ํธ์คํธ ๋ฐ ๊ฒฝ๋ก ๊ท์น์ ์ ํํฉ๋๋ค.
l7-xlb-backend-service
๊ฐ ์ผ์นํ์ง ์๋ ๋ชจ๋ ํธ์คํธ ๋ฐ ์ผ์นํ์ง ์๋ ๋ชจ๋ ๊ฒฝ๋ก์ ๋ํ ์ ์ผํ ๋ฐฑ์๋ ์๋น์ค์ ๋๋ค.
๊ตฌ์ฑ ๊ฒํ
- ๊ฒํ ๋ฐ ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ถํ ๋ถ์ฐ๊ธฐ ๊ตฌ์ฑ ์ค์ ์ ๊ฒํ ํฉ๋๋ค.
- ์ ํ์ฌํญ: ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ REST API ์์ฒญ์ ๋ณด๋ ค๋ฉด ์์ํ๋ ์ฝ๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud compute health-checks create http
๋ช ๋ น์ด๋ก HTTP ์ํ ํ์ธ์ ์ ์ํฉ๋๋ค.gcloud compute health-checks create http l7-xlb-basic-check \ --region=us-west1 \ --request-path='/' \ --use-serving-port
gcloud compute backend-services create
๋ช ๋ น์ด๋ก ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ ์ํฉ๋๋ค.gcloud compute backend-services create l7-xlb-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=l7-xlb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
gcloud compute backend-services add-backend
๋ช ๋ น์ด๋ก ๋ฐฑ์๋ ์๋น์ค์ ๋ฐฑ์๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.gcloud compute backend-services add-backend l7-xlb-backend-service \ --balancing-mode=UTILIZATION \ --instance-group=l7-xlb-backend-example \ --instance-group-zone=us-west1-a \ --region=us-west1
gcloud compute url-maps create
๋ช ๋ น์ด๋ก URL ๋งต์ ๋ง๋ญ๋๋ค.gcloud compute url-maps create regional-l7-xlb-map \ --default-service=l7-xlb-backend-service \ --region=us-west1
๋์ ํ๋ก์๋ฅผ ๋ง๋ญ๋๋ค.
HTTP์ ๊ฒฝ์ฐ:
HTTP ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ
gcloud compute target-http-proxies create
๋ช ๋ น์ด๋ก ๋์ ํ๋ก์๋ฅผ ๋ง๋ญ๋๋ค.gcloud compute target-http-proxies create l7-xlb-proxy \ --url-map=regional-l7-xlb-map \ --url-map-region=us-west1 \ --region=us-west1
HTTPS์ ๊ฒฝ์ฐ:
Compute Engine ๋๋ ์ธ์ฆ์ ๊ด๋ฆฌ์ ์ธ์ฆ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ธ์ฆ์ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ์๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ฆฌ์ ๋ณ ์์ฒด ๊ด๋ฆฌํ ์ธ์ฆ์ ๋ฆฌ์ ๋ณ ์์ฒด ๊ด๋ฆฌํ ์ธ์ฆ์๋ฅผ ๋ง๋ค๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฆฌ์ ๋ณ ์์ฒด ๊ด๋ฆฌํ ์ธ์ฆ์ ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์ธ์ฆ์ ๋งต์ ์ง์๋์ง ์์ต๋๋ค.
๋ฆฌ์ ๋ณ Google ๊ด๋ฆฌํ ์ธ์ฆ์. ์ธ์ฆ์ ๋งต์ ์ง์๋์ง ์์ต๋๋ค.
์ธ์ฆ์ ๊ด๋ฆฌ์์์ ์ง์๋๋ ๋ฆฌ์ ๋ณ Google ๊ด๋ฆฌํ ์ธ์ฆ์ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ๋ก์ ํธ๋ณ DNS ์น์ธ์ ์ฌ์ฉํ๋ ๋ฆฌ์ ๋ณ Google ๊ด๋ฆฌํ ์ธ์ฆ์. ์์ธํ ๋ด์ฉ์ DNS ์น์ธ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์ ๋ณ Google ๊ด๋ฆฌ ์ธ์ฆ์ ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
- Certificate Authority Service๋ฅผ ์ฌ์ฉํ๋ ๋ฆฌ์ ๋ณ Google ๊ด๋ฆฌํ(๋น๊ณต๊ฐ) ์ธ์ฆ์. ์์ธํ ๋ด์ฉ์ Certificate Authority Service๋ก ๋ฆฌ์ ๋ณ Google ๊ด๋ฆฌ ์ธ์ฆ์ ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ธ์ฆ์๋ฅผ ๋ง๋ ํ ์ธ์ฆ์๋ฅผ ๋์ ํ๋ก์์ ์ง์ ์ฐ๊ฒฐํฉ๋๋ค.
ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ณ์ ์ด๋ฆ์ ํ ๋นํฉ๋๋ค.
export LB_CERT=path to PEM-formatted file
export LB_PRIVATE_KEY=path to PEM-formatted file
gcloud compute ssl-certificates create
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์ ๋ณ SSL ์ธ์ฆ์๋ฅผ ๋ง๋ญ๋๋ค.gcloud compute ssl-certificates create l7-xlb-cert \ --certificate=$LB_CERT \ --private-key=$LB_PRIVATE_KEY \ --region=us-west1
๋ฆฌ์ ๋ณ SSL ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ
gcloud compute target-https-proxies create
๋ช ๋ น์ด๋ก ๋์ ํ๋ก์๋ฅผ ๋ง๋ญ๋๋ค.gcloud compute target-https-proxies create l7-xlb-proxy \ --url-map=regional-l7-xlb-map \ --region=us-west1 \ --ssl-certificates=l7-xlb-cert
์ ๋ฌ ๊ท์น์ ๋ง๋ญ๋๋ค.
HTTP์ ๊ฒฝ์ฐ:
์ฌ๋ฐ๋ฅธ ํ๋๊ทธ์ ํจ๊ป
gcloud compute forwarding-rules create
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.gcloud compute forwarding-rules create l7-xlb-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --address=ADDRESS_NAME \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-xlb-proxy \ --target-http-proxy-region=us-west1
HTTPS์ ๊ฒฝ์ฐ:
์ฌ๋ฐ๋ฅธ ํ๋๊ทธ์ ํจ๊ป
gcloud compute forwarding-rules create
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฌ ๊ท์น์ ๋ง๋ญ๋๋ค.gcloud compute forwarding-rules create l7-xlb-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --address=ADDRESS_NAME \ --ports=443 \ --region=us-west1 \ --target-https-proxy=l7-xlb-proxy \ --target-https-proxy-region=us-west1
Terraform
์ํ ์ ๊ฒ์ ๋ง๋ค๋ ค๋ฉด google_compute_region_health_check
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด google_compute_region_backend_service
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
URL ๋งต์ ๋ง๋ค๋ ค๋ฉด google_compute_region_url_map
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋์ HTTP ํ๋ก์๋ฅผ ๋ง๋ค๋ ค๋ฉด google_compute_region_target_http_proxy
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ ๋ฌ ๊ท์น์ ๋ง๋ค๋ ค๋ฉด google_compute_forwarding_rule
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ๊ณ ํ์ธ์.
API
regionHealthChecks.insert
๋ฉ์๋์ POST
์์ฒญ์ ์ํํ์ฌ ์ํ ํ์ธ์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID
๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/{region}/healthChecks
{
"name": "l7-xlb-basic-check",
"type": "HTTP",
"httpHealthCheck": {
"portSpecification": "USE_SERVING_PORT"
}
}
regionBackendServices.insert
๋ฉ์๋์ POST
์์ฒญ์ ์ํํ์ฌ ๋ฆฌ์ ๋ณ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID
๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/backendServices
{
"name": "l7-xlb-backend-service",
"backends": [
{
"group": "projects/<var>PROJECT_ID</var>/zones/us-west1-a/instanceGroups/l7-xlb-backend-example",
"balancingMode": "UTILIZATION"
}
],
"healthChecks": [
"projects/<var>PROJECT_ID</var>/regions/us-west1/healthChecks/l7-xlb-basic-check"
],
"loadBalancingScheme": "EXTERNAL_MANAGED"
}
regionUrlMaps.insert
๋ฉ์๋์ POST
์์ฒญ์ ์ํํ์ฌ URL ๋งต์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID
๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/urlMaps
{
"name": "regional-l7-xlb-map",
"defaultService": "projects/<var>PROJECT_ID</var>/regions/us-west1/backendServices/l7-xlb-backend-service"
}
regionTargetHttpProxies.insert
๋ฉ์๋์ POST
์์ฒญ์ ์ํํ์ฌ ๋์ HTTP ํ๋ก์๋ฅผ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID
๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/targetHttpProxy { "name": "l7-xlb-proxy", "urlMap": "projects/PROJECT_ID/global/urlMaps/regional-l7-xlb-map", "region": "us-west1" }
forwardingRules.insert
๋ฉ์๋์ POST
์์ฒญ์ ์ํํ์ฌ ์ ๋ฌ ๊ท์น์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ PROJECT_ID
๋ ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "l7-xlb-forwarding-rule", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/regions/us-west1/targetHttpProxies/l7-xlb-proxy", "loadBalancingScheme": "EXTERNAL_MANAGED", "network": "projects/PROJECT_ID/global/networks/lb-network", "networkTier": "STANDARD", }
๋ถํ ๋ถ์ฐ๊ธฐ์ ๋๋ฉ์ธ ์ฐ๊ฒฐ
๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ๋ง๋ ํ ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ฐ๊ฒฐ๋ 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์ ํ ๋น๋ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ๊ฒํ ํฉ๋๋ค. - Google Cloud ์ฝ์์์ ๋ฐฑ์๋ ์ธ์คํด์ค๊ฐ ์ ์์์ ํ์ํ๋ฉด
https://IP_ADDRESS
( ๋๋http://IP_ADDRESS
)๋ก ์ด๋ํ์ฌ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํด ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค.IP_ADDRESS
๋ฅผ ๋ถํ ๋ถ์ฐ๊ธฐ์ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค. - ์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ HTTPS ํ ์คํธ์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ ์๋ฝํ๋๋ก ๋ช ์์ ์ผ๋ก ์ง์ํด์ผ ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ํ์ด์ง๋ฅผ ์ ๊ณตํ ์ธ์คํด์ค์ ์ด๋ฆ๊ณผ ์์ญ์ ํ์ํ๋ ์ฝํ
์ธ ๋ก ํ์ด์ง์ ๋ ๋๋งํด์ผ ํฉ๋๋ค(์:
Page served from: lb-backend-example-xxxx
). ๋ธ๋ผ์ฐ์ ์์ ์ด ํ์ด์ง๋ฅผ ๋ ๋๋งํ์ง ์๋ ๊ฒฝ์ฐ ์ด ๊ฐ์ด๋์ ๊ตฌ์ฑ ์ค์ ์ ๊ฒํ ํ์ธ์.
gcloud
์์ฝ๋ IPv4 ์ฃผ์๋ฅผ ํ์ธํฉ๋๋ค.
gcloud beta compute addresses describe ADDRESS_NAME \ --format="get(address)" \ --region="us-west1"
์น๋ธ๋ผ์ฐ์ ์์ https://IP_ADDRESS
(๋๋ http://IP_ADDRESS
)๋ก ์ด๋ํ์ฌ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ํ
์คํธํ ์ ์์ต๋๋ค. IP_ADDRESS
๋ฅผ ๋ถํ ๋ถ์ฐ๊ธฐ์ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค.
์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ HTTPS ํ ์คํธ์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ ์๋ฝํ๋๋ก ๋ช ์์ ์ผ๋ก ์ง์ํด์ผ ํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์์ ๋ฐฑ์๋ ์ธ์คํด์ค์ ๋ํ ์ต์ํ์ ์ ๋ณด๋ก ํ์ด์ง๋ฅผ ๋ ๋๋งํด์ผ ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์ด ํ์ด์ง๋ฅผ ๋ ๋๋งํ์ง ์๋ ๊ฒฝ์ฐ ์ด ๊ฐ์ด๋์ ๊ตฌ์ฑ ์ค์ ์ ๊ฒํ ํ์ธ์.
์ถ๊ฐ ๊ตฌ์ฑ ์ต์
์ด ์น์ ์์๋ ๋์ฒด ๋ฐ ์ถ๊ฐ ๊ตฌ์ฑ ์ต์ ์ ์ ๊ณตํ๋ ๊ตฌ์ฑ ์์๋ฅผ ์ดํด๋ด ๋๋ค. ๋ชจ๋ ์์ ์ ์ ํ์ฌํญ์ ๋๋ค. ์ํ๋ ์์๋๋ก ์ํํ ์ ์์ต๋๋ค.
์ธ์ ์ดํผ๋ํฐ ์ฌ์ฉ ์ค์
์ด ์ ์ฐจ์์๋ ๋ฐฑ์๋ ์๋น์ค๊ฐ ์์ฑ๋ ์ฟ ํค ์ดํผ๋ํฐ, ํค๋ ํ๋ ์ดํผ๋ํฐ ๋๋ HTTP ์ฟ ํค ์ดํผ๋ํฐ๋ฅผ ์ฌ์ฉํ๋๋ก ์์ ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
์์ฑ๋ ์ฟ ํค ์ดํผ๋ํฐ๊ฐ ์ฌ์ฉ ์ค์ ๋๋ฉด ๋ถํ ๋ถ์ฐ๊ธฐ๋ ์ฒซ ๋ฒ์งธ ์์ฒญ์์ ์ฟ ํค๋ฅผ ์์ฑํฉ๋๋ค. ๋์ผํ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฐ ํ์ ์์ฒญ์ ๊ฒฝ์ฐ ๋ถํ ๋ถ์ฐ๊ธฐ๋ ๊ฐ์ ๋ฐฑ์๋ VM ๋๋ ์๋ํฌ์ธํธ๋ก ์์ฒญ์ ์ ๋ฌํฉ๋๋ค. ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์
๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ์ฟ ํค ์ด๋ฆ์ GCILB
์
๋๋ค.
ํค๋ ํ๋ ์ดํผ๋ํฐ๊ฐ ์ฌ์ฉ ์ค์ ๋๋ฉด ๋ถํ ๋ถ์ฐ๊ธฐ๋ --custom-request-header
ํ๋๊ทธ์ ์ด๋ฆ์ด ์ง์ ๋ HTTP ํค๋์ ๊ฐ์ ๋ฐ๋ผ NEG์ ๋ฐฑ์๋ VM ๋๋ ์๋ํฌ์ธํธ๋ก ์์ฒญ์ ๋ผ์ฐํ
ํฉ๋๋ค. ํค๋ ํ๋ ์ดํผ๋ํฐ๋ ๋ถํ ๋ถ์ฐ ์ง์ญ ์ ์ฑ
์ด RING_HASH
๋๋ MAGLEV
์ด๊ณ ๋ฐฑ์๋ ์๋น์ค์ ์ผ๊ด๋ ํด์๊ฐ HTTP ํค๋์ ์ด๋ฆ์ ์ง์ ํ๋ ๊ฒฝ์ฐ์๋ง ์ ํจํฉ๋๋ค.
HTTP ์ฟ ํค ์ดํผ๋ํฐ๊ฐ ์ฌ์ฉ ์ค์ ๋๋ฉด ๋ถํ ๋ถ์ฐ๊ธฐ๋ ์ ํ ์ฌํญ์ธ --affinity-cookie-ttl
ํ๋๊ทธ์ ํจ๊ป HTTP_COOKIE
ํ๋๊ทธ์ ์ด๋ฆ์ด ์ง์ ๋ HTTP ์ฟ ํค์ ๋ฐ๋ผ NEG์ ๋ฐฑ์๋ VM ๋๋ ์๋ํฌ์ธํธ๋ก ์์ฒญ์ ๋ผ์ฐํ
ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ HTTP ์์ฒญ์ ์ฟ ํค๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉด ํ๋ก์๊ฐ ์ฟ ํค๋ฅผ ์์ฑํ์ฌ Set-Cookie
ํค๋์ ์๋ ํด๋ผ์ด์ธํธ๋ก ๋ฐํํฉ๋๋ค. HTTP ์ฟ ํค ์ดํผ๋ํฐ๋ ๋ถํ ๋ถ์ฐ ์ง์ญ ์ ์ฑ
์ด RING_HASH
๋๋ MAGLEV
์ด๊ณ ๋ฐฑ์๋ ์๋น์ค์ ์ผ๊ด๋ ํด์๊ฐ HTTP ์ฟ ํค๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ์๋ง ์ ํจํฉ๋๋ค.
์ฝ์
๋ฐฑ์๋ ์๋น์ค์ ์ธ์ ์ดํผ๋ํฐ๋ฅผ ์ฌ์ฉ ์ค์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐฉ๊ธ ๋ง๋ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
๋ฐฑ์๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
l7-xlb-backend-service(์ด ์์์์ ๋ง๋ ๋ฐฑ์๋ ์๋น์ค ์ด๋ฆ)๋ฅผ ํด๋ฆญํ๊ณ ์์ ์ ํด๋ฆญํฉ๋๋ค.
๋ฐฑ์๋ ์๋น์ค ์ธ๋ถ์ ๋ณด ํ์ด์ง์์ ๊ณ ๊ธ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
๋ฉ๋ด์์ ์ธ์ ์ดํผ๋ํฐ์ ์ํ๋ ์ธ์ ์ดํผ๋ํฐ ์ ํ์ ์ ํํฉ๋๋ค.
์ ๋ฐ์ดํธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ l7-xlb-backend-service
๋ฐฑ์๋ ์๋น์ค๋ฅผ ๋ค๋ฅธ ์ ํ์ ์ธ์
์ดํผ๋ํฐ๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud compute backend-services update l7-xlb-backend-service \ --session-affinity=GENERATED_COOKIE | HEADER_FIELD | HTTP_COOKIE | CLIENT_IP --region=us-west1
API
์ธ์
์ดํผ๋ํฐ๋ฅผ ์ค์ ํ๋ ค๋ฉด regionBackendServices/patch
๋ฉ์๋๋ก PATCH
์์ฒญ์ ๋ณด๋
๋๋ค.
PATCH https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/regionBackendServices/l7-xlb-backend-service
{
"sessionAffinity": <var>"GENERATED_COOKIE" | "HEADER_FIELD" | "HTTP_COOKIE" | "CLIENT_IP"</var>
}
ํด๋ผ์ด์ธํธ HTTP ์ฐ๊ฒฐ ์ ์ง ์ ํ ์๊ฐ ์ ๋ฐ์ดํธ
์ด์ ๋จ๊ณ์์ ๋ง๋ ๋ถํ ๋ถ์ฐ๊ธฐ๋ ํด๋ผ์ด์ธํธ HTTP ์ฐ๊ฒฐ ์ ์ง ์ ํ ์๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋์์ต๋๋ค.ํด๋ผ์ด์ธํธ HTTP ์ฐ๊ฒฐ ์ ์ง ์ ํ ์๊ฐ์ ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ ๋ถํ ๋ถ์ฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ์์ ํ ๋ถํ ๋ถ์ฐ๊ธฐ์ ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- ์์ ์ ํด๋ฆญํฉ๋๋ค.
- ํ๋ฐํธ์๋ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
- ๊ณ ๊ธ ๊ธฐ๋ฅ์ ํผ์นฉ๋๋ค. HTTP ์ฐ๊ฒฐ ์ ์ง ์ ํ ์๊ฐ์ ์ ํ ์๊ฐ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
- ์ ๋ฐ์ดํธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ณ๊ฒฝ์ฌํญ์ ๊ฒํ ํ๋ ค๋ฉด ๊ฒํ ๋ฐ ์๋ฃ๋ฅผ ํด๋ฆญํ ๋ค์ ์ ๋ฐ์ดํธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
HTTP ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ gcloud compute target-http-proxies update
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋์ HTTP ํ๋ก์๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region=REGION
HTTPS ๋ถํ ๋ถ์ฐ๊ธฐ์ ๊ฒฝ์ฐ gcloud compute target-https-proxies update
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋์ HTTPS ํ๋ก์๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud compute target-https-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region REGION
๋ค์์ ๋ฐ๊ฟ๋๋ค.
TARGET_HTTP_PROXY_NAME
: ๋์ HTTP ํ๋ก์์ ์ด๋ฆ์ ๋๋ค.TARGET_HTTPS_PROXY_NAME
: ๋์ HTTPS ํ๋ก์์ ์ด๋ฆ์ ๋๋ค.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: HTTP ์ฐ๊ฒฐ ์ ์ง ์ ํ ์๊ฐ ๊ฐ์ ๋๋ค(5~600์ด ์ฌ์ด).
์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์์ IAP ์ฌ์ฉ ์ค์
IAP๋ฅผ ์ฌ์ฉ ์ค์ ๋๋ ์ฌ์ฉ ์ค์ง(๊ธฐ๋ณธ๊ฐ)ํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ฌ์ฉ ์ค์ ๋ ๊ฒฝ์ฐ oauth2-client-id
๋ฐ oauth2-client-secret
๊ฐ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
IAP๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด --iap=enabled
ํ๋๊ทธ๋ฅผ oauth2-client-id
๋ฐ oauth2-client-secret
๊ณผ ํจ๊ป ํฌํจํ๋๋ก ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์
๋ฐ์ดํธํ์ธ์.
์ํ๋ ๊ฒฝ์ฐ Google Cloud ์ฝ์, gcloud CLI ๋๋ API๋ฅผ ์ฌ์ฉํ์ฌ Compute Engine ๋ฆฌ์์ค์ IAP๋ฅผ ์ฌ์ฉ ์ค์ ํ ์ ์์ต๋๋ค.
๋ค์ ๋จ๊ณ
- ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ IPv6๋ก ๋ณํ
- ๋ฆฌ์ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ๋ถ์ฐ๊ธฐ์ ํธ๋ํฝ ๊ด๋ฆฌ ๊ฐ์
- ํ๋ก์ ์ ์ฉ ์๋ธ๋ท
- ์์ฒด ๊ด๋ฆฌํ SSL ์ธ์ฆ์ ์ฌ์ฉ
- ๋ถํ ๋ถ์ฐ๊ธฐ ์ค์ ์ญ์