VM ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋ฐฑ์—”๋“œ๋กœ ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์„ค์ •

๋ฆฌ์ „๋ณ„ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” ๊ฐ™์€ VPC ๋„คํŠธ์›Œํฌ์˜ ํด๋ผ์ด์–ธํŠธ๋‚˜ VPC ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€ IP ์ฃผ์†Œ ๋’ค์—์„œ TCP ์„œ๋น„์Šค ํŠธ๋ž˜ํ”ฝ์„ ์‹คํ–‰ํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋ก์‹œ ๊ธฐ๋ฐ˜ ๋ฆฌ์ „๋ณ„ Layer 4 ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์ž…๋‹ˆ๋‹ค.

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

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ฐœ์š”๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”.

๊ฐœ์š”

์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ REGION_A ๋ฆฌ์ „์˜ ๋‘ ์˜์—ญ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์— ์žˆ๋Š” ๋ฐฑ์—”๋“œ VM์— TCP ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ ์„œ๋น„์Šค๋Š” ํฌํŠธ 110์—์„œ ์‘๋‹ตํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ Apache ์„œ๋ฒ„ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ธŒ๋ผ์šฐ์ €๋Š” ํฌํŠธ 110์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ…Œ์ŠคํŠธ ์„น์…˜์—์„œ๋Š” curl์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋‹ค์Œ ๋ฐฐํฌ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋ฐฑ์—”๋“œ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์˜ˆ์‹œ ๊ตฌ์„ฑ
์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋ฐฑ์—”๋“œ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์˜ˆ์‹œ ๊ตฌ์„ฑ

๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” ๋ฆฌ์ „ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ์š”์†Œ(๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน, ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค, ๋Œ€์ƒ ํ”„๋ก์‹œ, ์ „๋‹ฌ ๊ทœ์น™)๋Š” ๊ฐ™์€ ๋ฆฌ์ „์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ

์ด ๊ฐ€์ด๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๋„คํŠธ์›Œํฌ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ์†Œ์œ ์ž ๋˜๋Š” ํŽธ์ง‘์ž์ด๊ฑฐ๋‚˜, ๋‹ค์Œ Compute Engine IAM ์—ญํ• ์„ ๋ชจ๋‘ ๋ณด์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ํ•„์š”ํ•œ ์—ญํ• 
๋„คํŠธ์›Œํฌ, ์„œ๋ธŒ๋„ท, ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ์š”์†Œ ๋งŒ๋“ค๊ธฐ ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž
๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ๋ณด์•ˆ ๊ด€๋ฆฌ์ž
์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ Compute ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ์ž

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

๋„คํŠธ์›Œํฌ ๋ฐ ์„œ๋ธŒ๋„ท ๊ตฌ์„ฑ

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ๋ฅผ ์œ„ํ•œ ์„œ๋ธŒ๋„ท ํ•œ ๊ฐœ์™€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ํ”„๋ก์‹œ๋ฅผ ์œ„ํ•œ ์„œ๋ธŒ๋„ท ํ•œ ๊ฐœ, ์ด ๋‘ ๊ฐœ ์„œ๋ธŒ๋„ท์ด ์žˆ๋Š” VPC ๋„คํŠธ์›Œํฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” ๋ฆฌ์ „ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ ์†Œ์Šค๊ฐ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ๋™์ผํ•œ ๋ฆฌ์ „์˜ ์„œ๋ธŒ๋„ท์— ์žˆ๋Š” ๊ฒฝ์šฐ VPC ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ํŠธ๋ž˜ํ”ฝ์ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋กœ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋‹ค์Œ VPC ๋„คํŠธ์›Œํฌ, ๋ฆฌ์ „ ๋ฐ ์„œ๋ธŒ๋„ท์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋„คํŠธ์›Œํฌ. ๋„คํŠธ์›Œํฌ๋Š” ์ปค์Šคํ…€ ๋ชจ๋“œ VPC ๋„คํŠธ์›Œํฌ์ด๋ฉฐ ์ด๋ฆ„์€ lb-network์ž…๋‹ˆ๋‹ค.

  • ๋ฐฑ์—”๋“œ ์„œ๋ธŒ๋„ท. REGION_A ๋ฆฌ์ „์— ์žˆ๋Š” backend-subnet์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์„œ๋ธŒ๋„ท์€ ๊ธฐ๋ณธ IP ๋ฒ”์œ„๋กœ 10.1.2.0/24๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋ก์‹œ ์„œ๋ธŒ๋„ท: REGION_A ๋ฆฌ์ „์— ์žˆ๋Š” proxy-only-subnet์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์„œ๋ธŒ๋„ท์€ ๊ธฐ๋ณธ IP ๋ฒ”์œ„๋กœ 10.129.0.0/23์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ „์—ญ ์•ก์„ธ์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋‹ค๋ฅธ ๋ฆฌ์ „(REGION_B)๊ณผ ๊ธฐ๋ณธ IP ์ฃผ์†Œ๊ฐ€ 10.3.4.0/24์ธ ์„œ๋ธŒ๋„ท์— ๋‘ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ ํด๋ผ์ด์–ธํŠธ VM์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ๋ฐ ์„œ๋ธŒ๋„ท ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

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

    VPC ๋„คํŠธ์›Œํฌ๋กœ ์ด๋™

  2. VPC ๋„คํŠธ์›Œํฌ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

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

  4. ์„œ๋ธŒ๋„ท ์„น์…˜์—์„œ ์„œ๋ธŒ๋„ท ์ƒ์„ฑ ๋ชจ๋“œ๋ฅผ ์ปค์Šคํ…€์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  5. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ƒˆ ์„œ๋ธŒ๋„ท ์„น์…˜์— ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • ์ด๋ฆ„: backend-subnet
    • ๋ฆฌ์ „: REGION_A
    • IP ์ฃผ์†Œ ๋ฒ”์œ„: 10.1.2.0/24
  6. ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  7. ์„œ๋ธŒ๋„ท ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  8. ์ „์—ญ ์•ก์„ธ์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ƒˆ ์„œ๋ธŒ๋„ท ์„น์…˜์— ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • ์ด๋ฆ„: test-global-access-subnet
    • ๋ฆฌ์ „: REGION_B
    • IP ์ฃผ์†Œ ๋ฒ”์œ„: 10.3.4.0/24
  9. ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

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

gcloud

  1. gcloud compute networks create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. gcloud compute networks subnets create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ REGION_A ๋ฆฌ์ „์˜ lb-network ๋„คํŠธ์›Œํฌ์— ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute networks subnets create backend-subnet \
       --network=lb-network \
       --range=10.1.2.0/24 \
       --region=REGION_A
    

    REGION_A์„ ๋Œ€์ƒ Google Cloud ๋ฆฌ์ „ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  3. gcloud compute networks subnets create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ REGION_B ๋ฆฌ์ „์˜ lb-network ๋„คํŠธ์›Œํฌ์— ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute networks subnets create test-global-access-subnet \
       --network=lb-network \
       --range=10.3.4.0/24 \
       --region=REGION_B
    

    REGION_B๋ฅผ ์ „์—ญ ์•ก์„ธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๋ฒˆ์งธ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ค๋ ค๋Š” Google Cloud ๋ฆฌ์ „์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท ๋งŒ๋“ค๊ธฐ

ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท์€ Google์ด ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Envoy ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” IP ์ฃผ์†Œ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ณ  ๋ฐฑ์—”๋“œ์— ์ƒˆ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท์€ lb-network VPC ๋„คํŠธ์›Œํฌ์˜ REGION_A ๋ฆฌ์ „์— ์žˆ๋Š” ๋ชจ๋“  Envoy ๊ธฐ๋ฐ˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€์—์„œ ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ VPC ๋„คํŠธ์›Œํฌ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    VPC ๋„คํŠธ์›Œํฌ๋กœ ์ด๋™
  2. ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์ธ lb-network๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์„œ๋ธŒ๋„ท ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ด๋ฆ„์— proxy-only-subnet๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ฆฌ์ „์—์„œ REGION_A์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. ์šฉ๋„๋ฅผ ๋ฆฌ์ „๋ณ„ ๊ด€๋ฆฌํ˜• ํ”„๋ก์‹œ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  7. IP ์ฃผ์†Œ ๋ฒ”์œ„์— 10.129.0.0/23์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  8. ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

gcloud compute networks subnets create ๋ช…๋ น์–ด๋กœ ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23

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

์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • fw-allow-ssh. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๋˜๋Š” ์ธ์Šคํ„ด์Šค์— ์ ์šฉ๋˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์œผ๋กœ TCP ํฌํŠธ 22์— ์ž„์˜์˜ ์ฃผ์†Œ๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋˜๋Š” SSH ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์— ๋” ์ œํ•œ์ ์ธ ์†Œ์Šค IP ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SSH ์„ธ์…˜์„ ์‹œ์ž‘ํ•  ์‹œ์Šคํ…œ์˜ IP ๋ฒ”์œ„๋งŒ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋Œ€์ƒ ํƒœ๊ทธ allow-ssh๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • fw-allow-health-check. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๋˜๋Š” ์ธ์Šคํ„ด์Šค์— ์ ์šฉ๋˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์œผ๋กœ, 130.211.0.0/22 ๋ฐ 35.191.0.0/16์—์„œ Google Cloud์ƒํƒœ ํ™•์ธ ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  TCP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋Œ€์ƒ ํƒœ๊ทธ allow-health-check๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • fw-allow-proxy-only-subnet. ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท์˜ ์—ฐ๊ฒฐ์ด ๋ฐฑ์—”๋“œ์— ๋„๋‹ฌํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ ๊ฑฐ๋ถ€ ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์€ ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ƒ ํƒœ๊ทธ๋Š” ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ํƒœ๊ทธ๊ฐ€ ์—†์œผ๋ฉด VPC ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค์— ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ VM์„ ๋งŒ๋“ค ๋•Œ๋Š” ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ์— ๋‚˜์˜จ ๋Œ€๋กœ ์ง€์ •๋œ ๋Œ€์ƒ ํƒœ๊ทธ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ฐฉํ™”๋ฒฝ ์ •์ฑ… ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…์œผ๋กœ ์ด๋™
  2. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ˆ˜์‹  SSH ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • ์ด๋ฆ„: fw-allow-ssh
    • ๋„คํŠธ์›Œํฌ: lb-network
    • ํŠธ๋ž˜ํ”ฝ ๋ฐฉํ–ฅ: ์ธ๊ทธ๋ ˆ์Šค
    • ์ผ์น˜ ์‹œ ์ž‘์—…: ํ—ˆ์šฉ
    • ๋Œ€์ƒ: ์ง€์ •๋œ ๋Œ€์ƒ ํƒœ๊ทธ
    • ๋Œ€์ƒ ํƒœ๊ทธ: allow-ssh
    • ์†Œ์Šค ํ•„ํ„ฐ: IPv4 ๋ฒ”์œ„
    • ์†Œ์Šค IPv4 ๋ฒ”์œ„: 0.0.0.0/0
    • ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ:
      • ์ง€์ •๋œ ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • TCP ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•œ ํ›„ ํฌํŠธ ๋ฒˆํ˜ธ์— 22์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํด๋ฆญํ•˜์—ฌGoogle Cloud ์ƒํƒœ ํ™•์ธ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • ์ด๋ฆ„: fw-allow-health-check
    • ๋„คํŠธ์›Œํฌ: lb-network
    • ํŠธ๋ž˜ํ”ฝ ๋ฐฉํ–ฅ: ์ธ๊ทธ๋ ˆ์Šค
    • ์ผ์น˜ ์‹œ ์ž‘์—…: ํ—ˆ์šฉ
    • ๋Œ€์ƒ: ์ง€์ •๋œ ๋Œ€์ƒ ํƒœ๊ทธ
    • ๋Œ€์ƒ ํƒœ๊ทธ: allow-health-check
    • ์†Œ์Šค ํ•„ํ„ฐ: IPv4 ๋ฒ”์œ„
    • ์†Œ์Šค IPv4 ๋ฒ”์œ„: 130.211.0.0/22 ๋ฐ 35.191.0.0/16
    • ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ:
      • ์ง€์ •๋œ ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • TCP ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•œ ํ›„ ํฌํŠธ ๋ฒˆํ˜ธ์— 80์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
        ๊ถŒ์žฅ์‚ฌํ•ญ์— ๋”ฐ๋ผ์„œ ์ƒํƒœ ํ™•์ธ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ๋กœ ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ์— tcp:80์„ ์‚ฌ์šฉํ•˜๋ฉด Google Cloud ๊ฐ€ ํฌํŠธ 80์—์„œ HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VM์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํฌํŠธ 443์—์„œ HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  5. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ๋ฅผ ์„ธ ๋ฒˆ์งธ๋กœ ํด๋ฆญํ•˜์—ฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ๋ฐฑ์—”๋“œ์— ์—ฐ๊ฒฐํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • ์ด๋ฆ„: fw-allow-proxy-only-subnet
    • ๋„คํŠธ์›Œํฌ: lb-network
    • ํŠธ๋ž˜ํ”ฝ ๋ฐฉํ–ฅ: ์ธ๊ทธ๋ ˆ์Šค
    • ์ผ์น˜ ์‹œ ์ž‘์—…: ํ—ˆ์šฉ
    • ๋Œ€์ƒ: ์ง€์ •๋œ ๋Œ€์ƒ ํƒœ๊ทธ
    • ๋Œ€์ƒ ํƒœ๊ทธ: allow-proxy-only-subnet
    • ์†Œ์Šค ํ•„ํ„ฐ: IPv4 ๋ฒ”์œ„
    • ์†Œ์Šค IPv4 ๋ฒ”์œ„: 10.129.0.0/23
    • ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ:
      • ์ง€์ •๋œ ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • TCP ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ 80์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  7. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. allow-ssh ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด VM์œผ๋กœ ๊ฐ€๋Š” SSH ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๋Š” fw-allow-ssh ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. source-ranges๋ฅผ ์ƒ๋žตํ•˜๋ฉดGoogle Cloud ๊ฐ€ ๋ชจ๋“  ์†Œ์Šค๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ทœ์น™์„ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create fw-allow-ssh \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --target-tags=allow-ssh \
       --rules=tcp:22
    
  2. 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=allow-health-check \
       --rules=tcp:80
    
  3. ๋ฆฌ์ „์˜ Envoy ํ”„๋ก์‹œ๊ฐ€ ๋ฐฑ์—”๋“œ์— ์—ฐ๊ฒฐํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” fw-allow-proxy-only-subnet ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. --source-ranges๋ฅผ ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท์˜ ํ• ๋‹น๋œ ๋ฒ”์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: 10.129.0.0/23).

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=10.129.0.0/23 \
       --target-tags=allow-proxy-only-subnet \
       --rules=tcp:80
    

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP ์ฃผ์†Œ ์˜ˆ์•ฝ

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๊ณ ์ • ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์˜ˆ์•ฝํ•˜๋ ค๋ฉด ์ƒˆ ๊ณ ์ • ๋‚ด๋ถ€ IPv4 ๋˜๋Š” IPv6 ์ฃผ์†Œ ์˜ˆ์•ฝ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ด ์„น์…˜์—์„œ๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ REGION_A ๋ฆฌ์ „์— 2๊ฐœ์˜ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน(MIG) ๋ฐฑ์—”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. MIG๋Š” ์ด ์˜ˆ์‹œ ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ Apache ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋Š” VM ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” HTTP ํŠธ๋ž˜ํ”ฝ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ Apache ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

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

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

    1. ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    2. ์ด๋ฆ„์— int-tcp-proxy-backend-template๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    3. ๋ถ€ํŒ… ๋””์Šคํฌ๊ฐ€ Debian GNU/Linux 12(bookworm)์™€ ๊ฐ™์€ Debian ์ด๋ฏธ์ง€๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ์•ˆ๋‚ด์—์„œ๋Š” apt-get์ฒ˜๋Ÿผ Debian์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    4. ๊ณ ๊ธ‰ ์˜ต์…˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    5. ๋„คํŠธ์›Œํ‚น์„ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
      1. ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์— allow-ssh, allow-health-check, allow-proxy-only-subnet์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
      2. ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋‹ค์Œ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
        • ๋„คํŠธ์›Œํฌ: lb-network
        • ์„œ๋ธŒ๋„ท: backend-subnet
    6. ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ ํ•„๋“œ์— ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

      #! /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
      
    7. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

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

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

    1. ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    2. ์ƒˆ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน(์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless))์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless) ๋˜๋Š” ์Šคํ…Œ์ดํŠธํ’€(Stateful) MIG๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    3. ์ด๋ฆ„์— mig-a๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    4. ์œ„์น˜์—์„œ ๋‹จ์ผ ์˜์—ญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    5. ๋ฆฌ์ „์—์„œ REGION_A์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    6. ์˜์—ญ์—์„œ ZONE_A1๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    7. ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ์—์„œ int-tcp-proxy-backend-template์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    8. ๊ทธ๋ฃน์— ๋งŒ๋“ค ์ธ์Šคํ„ด์Šค์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

      ์ด ์˜ˆ์‹œ์—์„œ๋Š” ์ž๋™ ํ™•์žฅ์—์„œ ๋‹ค์Œ ์˜ต์…˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

      • ์ž๋™ ํ™•์žฅ ๋ชจ๋“œ์—์„œ Off:do not autoscale์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜์— 2๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    9. ํฌํŠธ ๋งคํ•‘์—์„œ ํฌํŠธ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      • ํฌํŠธ ์ด๋ฆ„์— tcp80์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
      • ํฌํŠธ ๋ฒˆํ˜ธ์— 80์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    10. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. 2๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๋‹ค์Œ ์„ค์ •์œผ๋กœ ๋‘ ๋ฒˆ์งธ ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    1. ์ด๋ฆ„: mig-c
    2. ์˜์—ญ: ZONE_A2 ๋‹ค๋ฅธ ๋ชจ๋“  ์„ค์ •์€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

gcloud

์ด ๊ฐ€์ด๋“œ์˜ gcloud ์•ˆ๋‚ด์—์„œ๋Š” Cloud Shell ๋˜๋Š” bash๊ฐ€ ์„ค์น˜๋œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. gcloud compute instance-templates create ๋ช…๋ น์–ด๋กœ HTTP ์„œ๋ฒ„๊ฐ€ ํฌํ•จ๋œ VM ์ธ์Šคํ„ด์Šค ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute instance-templates create int-tcp-proxy-backend-template \
       --region=REGION_A \
       --network=lb-network \
       --subnet=backend-subnet \
       --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
       --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'
    
  2. ZONE_A1 ์˜์—ญ์— ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute instance-groups managed create mig-a \
       --zone=ZONE_A1 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    ZONE_A1์„ ๋Œ€์ƒ Google Cloud ๋ฆฌ์ „์˜ ์˜์—ญ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  3. ZONE_A2 ์˜์—ญ์— ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute instance-groups managed create mig-c \
       --zone=ZONE_A2 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    ZONE_A2๋ฅผ ๋Œ€์ƒ Google Cloud ๋ฆฌ์ „์˜ ๋‹ค๋ฅธ ์˜์—ญ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ

์ฝ˜์†”

๊ตฌ์„ฑ ์‹œ์ž‘

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

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

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

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

  1. ์ด๋ฆ„์— my-int-tcp-lb์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฆฌ์ „์—์„œ REGION_A์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ๋„คํŠธ์›Œํฌ์—์„œ lb-network๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท ์˜ˆ์•ฝ

ํ”„๋ก์‹œ ์ „์šฉ ์„œ๋ธŒ๋„ท์„ ์˜ˆ์•ฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ์„œ๋ธŒ๋„ท ์˜ˆ์•ฝ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ์ด๋ฆ„์— proxy-only-subnet๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. IP ์ฃผ์†Œ ๋ฒ”์œ„์— 10.129.0.0/23์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  4. ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ

  1. ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐฑ์—”๋“œ ์œ ํ˜•์—์„œ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ํ”„๋กœํ† ์ฝœ์—์„œ TCP๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์ด๋ฆ„์ด ์ง€์ •๋œ ํฌํŠธ์— tcp80๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  5. ์ฒซ ๋ฒˆ์งธ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    1. ์ƒˆ ๋ฐฑ์—”๋“œ์—์„œ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน mig-a์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    2. ํฌํŠธ ๋ฒˆํ˜ธ์— 80์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    3. ๋‚จ์€ ๊ธฐ๋ณธ๊ฐ’์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ๋‘ ๋ฒˆ์งธ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    1. ๋ฐฑ์—”๋“œ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    2. ์ƒˆ ๋ฐฑ์—”๋“œ์—์„œ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน mig-c์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    3. ํฌํŠธ ๋ฒˆํ˜ธ์— 80์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    4. ๋‚จ์€ ๊ธฐ๋ณธ๊ฐ’์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ์ƒํƒœ ํ™•์ธ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    1. ์ƒํƒœ ํ™•์ธ์—์„œ ์ƒํƒœ ํ™•์ธ ๋งŒ๋“ค๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    2. ์ƒํƒœ ํ™•์ธ ์ด๋ฆ„์„ tcp-health-check๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    3. ํ”„๋กœํ† ์ฝœ์—์„œ TCP๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    4. ํฌํŠธ๋ฅผ 80์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  8. ๋‚จ์€ ๊ธฐ๋ณธ๊ฐ’์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  9. Google Cloud ์ฝ˜์†”์—์„œ ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ ์˜†์— ์ฒดํฌํ‘œ์‹œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—†์œผ๋ฉด ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ–ˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ŸฐํŠธ์—”๋“œ ๊ตฌ์„ฑ

  1. ํ”„๋ŸฐํŠธ์—”๋“œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ์ด๋ฆ„์— int-tcp-forwarding-rule์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. ์„œ๋ธŒ๋„คํŠธ์›Œํฌ์—์„œ backend-subnet์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. IP ์ฃผ์†Œ์—์„œ ์ด์ „์— ์˜ˆ์•ฝํ•œ IP ์ฃผ์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. LB_IP_ADDRESS
  5. ํฌํŠธ ๋ฒˆํ˜ธ์— 110์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌ ๊ทœ์น™์€ ๋Œ€์ƒ ํฌํŠธ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ํŒจํ‚ท๋งŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  6. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ์ด Apache HTTP ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  7. ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  8. Google Cloud ์ฝ˜์†”์—์„œ ํ”„๋ŸฐํŠธ์—”๋“œ ๊ตฌ์„ฑ ์˜†์— ์ฒดํฌํ‘œ์‹œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—†์œผ๋ฉด ์ด์ „ ๋‹จ๊ณ„๋ฅผ ๋ชจ๋‘ ์™„๋ฃŒํ–ˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ฒ€ํ†  ๋ฐ ์™„๋ฃŒ

  1. ๊ฒ€ํ†  ๋ฐ ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ ์„ค์ •์„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ ํƒ์‚ฌํ•ญ: ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” REST API ์š”์ฒญ์„ ๋ณด๋ ค๋ฉด ์ƒ์‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

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

    gcloud compute health-checks create tcp tcp-health-check \
       --region=REGION_A \
       --use-serving-port
    
  2. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute backend-services create internal-tcp-proxy-bs \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์— ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-a \
       --instance-group-zone=ZONE_A1 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-c \
       --instance-group-zone=ZONE_A2 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
  4. ๋‚ด๋ถ€ ๋Œ€์ƒ TCP ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-tcp-proxy-bs \
       --proxy-header=NONE \
       --region=REGION_A
    

    ํ”„๋ก์‹œ ํ—ค๋”๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด NONE ๋Œ€์‹  PROXY_V1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ์ด Apache HTTP ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  5. ์ „๋‹ฌ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. --ports์˜ ๊ฒฝ์šฐ 1~65535์—์„œ ๋‹จ์ผ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ํฌํŠธ 110์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌ ๊ทœ์น™์€ ๋Œ€์ƒ ํฌํŠธ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ํŒจํ‚ท๋งŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110
    

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ํ…Œ์ŠคํŠธ

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

ํด๋ผ์ด์–ธํŠธ VM ๋งŒ๋“ค๊ธฐ

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ๋™์ผํ•œ ๋ฆฌ์ „์—์„œ ํด๋ผ์ด์–ธํŠธ VM(client-vm)์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ฝ˜์†”

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

    VM ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

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

  3. ์ด๋ฆ„์„ client-vm์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  4. ์˜์—ญ์„ ZONE_A1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

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

  6. ๋„คํŠธ์›Œํ‚น์„ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    1. ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์— allow-ssh๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    2. ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋‹ค์Œ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ๋„คํŠธ์›Œํฌ: lb-network
      • ์„œ๋ธŒ๋„ท: backend-subnet
  7. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

ํด๋ผ์ด์–ธํŠธ VM์€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ๋™์ผํ•œ VPC ๋„คํŠธ์›Œํฌ ๋ฐ ๋ฆฌ์ „์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์„œ๋ธŒ๋„ท ๋˜๋Š” ์˜์—ญ์—๋Š” ์žˆ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐฑ์—”๋“œ VM๊ณผ ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud compute instances create client-vm \
    --zone=ZONE_A1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋กœ ํŠธ๋ž˜ํ”ฝ ์ „์†ก

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP ์ฃผ์†Œ๋กœ ํŠธ๋ž˜ํ”ฝ ์ „์†ก์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute ssh client-vm \
       --zone=ZONE_A1
    
  2. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๊ฐ€ ๋ฐฑ์—”๋“œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ •์ƒ์ ์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    1. compute addresses describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute addresses describe int-tcp-ip-address \
       --region=REGION_A
      

      IP ์ฃผ์†Œ๋ฅผ ๊ธฐ๋กํ•ด ๋‘ก๋‹ˆ๋‹ค.

    2. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋กœ ํŠธ๋ž˜ํ”ฝ ์ „์†ก IP_ADDRESS๋ฅผ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

      curl IP_ADDRESS:110
      

์ถ”๊ฐ€ ๊ตฌ์„ฑ ์˜ต์…˜

์ด ์„น์…˜์—์„œ๋Š” ๋Œ€์ฒด ๋ฐ ์ถ”๊ฐ€ ๊ตฌ์„ฑ ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ตฌ์„ฑ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์€ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์—ญ ์•ก์„ธ์Šค ์‚ฌ์šฉ ์„ค์ •

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ „์—ญ ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ ๋ชจ๋“  ๋ฆฌ์ „์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ๋Š” ๊ณ„์† ๋ฆฌ์ „ ํ•˜๋‚˜(REGION_A)์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ „์—ญ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ
์ „์—ญ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ(ํ™•๋Œ€ํ•˜๋ ค๋ฉด ํด๋ฆญ)

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

์ „์—ญ ์•ก์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ์ƒˆ๋กœ์šด ์ „๋‹ฌ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

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

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

  2. ์ด๋ฆ„ ์—ด์—์„œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ํ”„๋ŸฐํŠธ์—”๋“œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ํ”„๋ŸฐํŠธ์—”๋“œ IP ๋ฐ ํฌํŠธ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์ƒˆ ์ „๋‹ฌ ๊ทœ์น™์˜ ์ด๋ฆ„๊ณผ ์„œ๋ธŒ๋„ท ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  6. ์„œ๋ธŒ๋„คํŠธ์›Œํฌ์—์„œ backend-subnet์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  7. IP ์ฃผ์†Œ์—์„œ ๊ธฐ์กด ์ „๋‹ฌ ๊ทœ์น™๊ณผ ๋™์ผํ•œ IP ์ฃผ์†Œ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ƒˆ IP ์ฃผ์†Œ๋ฅผ ์˜ˆ์•ฝํ•˜๊ฑฐ๋‚˜ ์ž„์‹œ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๋ฅผ ๋งŒ๋“œ๋Š” ๋™์•ˆ IP ์ฃผ์†Œ --purpose ํ”Œ๋ž˜๊ทธ๋ฅผ SHARED_LOADBALANCER_VIP๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์—ฌ๋Ÿฌ ์ „๋‹ฌ ๊ทœ์น™์—์„œ ๋™์ผํ•œ IP ์ฃผ์†Œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  8. ํฌํŠธ ๋ฒˆํ˜ธ์— 110์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  9. ์ „์—ญ ์•ก์„ธ์Šค์— ์‚ฌ์šฉ ์„ค์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  10. ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  11. ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. --allow-global-access ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ƒˆ ์ „๋‹ฌ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110 \
       --allow-global-access
    
  2. gcloud compute forwarding-rules describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „๋‹ฌ ๊ทœ์น™์— ์ „์—ญ ์•ก์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \
       --region=REGION_A \
       --format="get(name,region,allowGlobalAccess)"
    

    ์ „์—ญ ์•ก์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜๋ฉด ์ถœ๋ ฅ์—์„œ ์ „๋‹ฌ ๊ทœ์น™์˜ ์ด๋ฆ„๊ณผ ๋ฆฌ์ „ ๋’ค์— True ๋‹จ์–ด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ „์—ญ ์•ก์„ธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋„๋ก ํด๋ผ์ด์–ธํŠธ VM ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

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

    VM ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

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

  3. ์ด๋ฆ„์„ test-global-access-vm์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  4. ์˜์—ญ์„ ZONE_B1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

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

  6. ๋„คํŠธ์›Œํ‚น์„ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    1. ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์— allow-ssh๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    2. ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋‹ค์Œ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ๋„คํŠธ์›Œํฌ: lb-network
      • ์„œ๋ธŒ๋„ท: test-global-access-subnet
  7. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

ZONE_B1 ์˜์—ญ์— ํด๋ผ์ด์–ธํŠธ VM์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud compute instances create test-global-access-vm \
    --zone=ZONE_B1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=test-global-access-subnet

ZONE_B1์„ REGION_B ๋ฆฌ์ „์˜ ์˜์—ญ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ VM์— ์—ฐ๊ฒฐ ๋ฐ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

  1. ssh๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute ssh test-global-access-vm \
        --zone=ZONE_B1
    
  2. gcloud compute addresses describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    gcloud compute addresses describe int-tcp-ip-address \
        --region=REGION_A
    

    IP ์ฃผ์†Œ๋ฅผ ๊ธฐ๋กํ•ด ๋‘ก๋‹ˆ๋‹ค.

  3. ํŠธ๋ž˜ํ”ฝ์„ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋กœ ์ „์†กํ•˜๊ณ  IP_ADDRESS๋ฅผ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    curl IP_ADDRESS:110
    

ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ

ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ TCP ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ณ  ์ธ์Šคํ„ด์Šค์— ์ƒˆ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์›๋ž˜ ํด๋ผ์ด์–ธํŠธ IP์™€ ํฌํŠธ ์ •๋ณด๋Š” ์œ ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›๋ž˜ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์ธ์Šคํ„ด์Šค๋กœ ๋ณด๋‚ด๋ ค๋ฉด PROXY ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 1์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์€ ์š”์ฒญ์˜ ์ผ๋ถ€๋กœ ์†Œ์Šค IP ์ฃผ์†Œ, ๋Œ€์ƒ IP ์ฃผ์†Œ, ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ํฌํ•จ๋œ ์ถ”๊ฐ€ ํ—ค๋”๋ฅผ ์ธ์Šคํ„ด์Šค์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค์—์„œ PROXY ํ”„๋กœํ† ์ฝœ ํ—ค๋”๋ฅผ ์ง€์›ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ PROXY ํ”„๋กœํ† ์ฝœ ํ—ค๋”๋ฅผ ์ง€์›ํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜์œผ๋ฉด ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค์—์„œ ๋นˆ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์— PROXY ํ”„๋กœํ† ์ฝœ์„ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ์ƒํƒœ ํ™•์ธ์—๋„ ์ด ํ”„๋กœํ† ์ฝœ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ํฌํŠธ์—์„œ ์ƒํƒœ๋ฅผ ์ ๊ฒ€ํ•˜๊ณ  ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํƒœ ํ™•์ธ์˜ --proxy-header๋ฅผ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์„ค์ •์— ๋งž๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ PROXY ํ”„๋กœํ† ์ฝœ ํ—ค๋”๋Š” ๋‹ค์Œ ํ˜•์‹์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ•œ ์ค„ ํ…์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” PROXY ํ”„๋กœํ† ์ฝœ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

์•ž์˜ ์˜ˆ์‹œ์—์„œ ํด๋ผ์ด์–ธํŠธ IP๋Š” 192.0.2.1, ๋ถ€ํ•˜ ๋ถ„์‚ฐ IP๋Š” 198.51.100.1, ํด๋ผ์ด์–ธํŠธ ํฌํŠธ๋Š” 15221, ๋ชฉ์ ์ง€ ํฌํŠธ๋Š” 110์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ IP๋ฅผ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” ๋‹ค์Œ ํ˜•์‹์œผ๋กœ PROXY ํ”„๋กœํ† ์ฝœ ํ—ค๋”๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

PROXY UNKNOWN\r\n

๋Œ€์ƒ ํ”„๋ก์‹œ์˜ PROXY ํ”„๋กœํ† ์ฝœ ํ—ค๋” ์—…๋ฐ์ดํŠธ

๊ธฐ์กด ๋Œ€์ƒ ํ”„๋ก์‹œ์—์„œ PROXY ํ”„๋กœํ† ์ฝœ ํ—ค๋”๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. PROXY ํ”„๋กœํ† ์ฝœ ํ—ค๋”์— ํ•„์š”ํ•œ ์„ค์ •์œผ๋กœ ์ƒˆ ๋Œ€์ƒ ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ํ•„์š”ํ•œ ์„ค์ •์œผ๋กœ ์ƒˆ ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ฝ˜์†”

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

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

  2. ์ˆ˜์ •ํ•  ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ํŽธ์ง‘์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ํ”„๋ŸฐํŠธ์—”๋“œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ์ด์ „ ํ”„๋ŸฐํŠธ์—”๋“œ IP ๋ฐ ํฌํŠธ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  6. ํ”„๋ŸฐํŠธ์—”๋“œ IP ๋ฐ ํฌํŠธ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    1. ์ด๋ฆ„์— int-tcp-forwarding-rule์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    2. ์„œ๋ธŒ๋„คํŠธ์›Œํฌ์—์„œ backend-subnet์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    3. IP ์ฃผ์†Œ์—์„œ ์ด์ „์— ์˜ˆ์•ฝํ•œ IP ์ฃผ์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. LB_IP_ADDRESS
    4. ํฌํŠธ ๋ฒˆํ˜ธ์— 110์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌ ๊ทœ์น™์€ ๋ชฉ์ ์ง€ ํฌํŠธ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ํŒจํ‚ท๋งŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    5. ํ”„๋ก์‹œ ํ”„๋กœํ† ์ฝœ ํ•„๋“œ ๊ฐ’์„ ์ผœ๊ธฐ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    6. ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ๋‹ค์Œ ๋ช…๋ น์–ด์—์„œ --proxy-header ํ•„๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ NONE ๋˜๋Š” PROXY_V1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

       gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \
           --backend-service=BACKEND_SERVICE \
           --proxy-header=[NONE | PROXY_V1] \
           --region=REGION
       
  2. ๊ธฐ์กด ์ „๋‹ฌ ๊ทœ์น™์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. ์ƒˆ ์ „๋‹ฌ ๊ทœ์น™์„ ๋งŒ๋“ค์–ด ๋Œ€์ƒ ํ”„๋ก์‹œ์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

       gcloud compute forwarding-rules create int-tcp-forwarding-rule \
           --load-balancing-scheme=INTERNAL_MANAGED \
           --network=lb-network \
           --subnet=backend-subnet \
           --region=REGION \
           --target-tcp-proxy=TARGET_PROXY_NAME \
           --target-tcp-proxy-region=REGION \
           --address=LB_IP_ADDRESS \
           --ports=110
       

์„ธ์…˜ ์–ดํ”ผ๋‹ˆํ‹ฐ ์‚ฌ์šฉ ์„ค์ •

๊ตฌ์„ฑ ์˜ˆ์‹œ๋Š” ์„ธ์…˜ ์–ดํ”ผ๋‹ˆํ‹ฐ ์—†์ด ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ์ ˆ์ฐจ์—์„œ๋Š” ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ํด๋ผ์ด์–ธํŠธ IP ์–ดํ”ผ๋‹ˆํ‹ฐ ๋˜๋Š” ์ƒ์„ฑ๋œ ์ฟ ํ‚ค ์–ดํ”ผ๋‹ˆํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์˜ˆ์‹œ ๋ฆฌ์ „ ๋‚ด๋ถ€ ํ”„๋ก์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ IP ์–ดํ”ผ๋‹ˆํ‹ฐ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ IP ์ฃผ์†Œ ๋ฐ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP ์ฃผ์†Œ(๋‚ด๋ถ€ ์ „๋‹ฌ ๊ทœ์น™์˜ ๋‚ด๋ถ€ IP ์ฃผ์†Œ)์—์„œ ์ƒ์„ฑ๋œ ํ•ด์‹œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋™์ผํ•œ ๋ฐฑ์—”๋“œ VM์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

ํด๋ผ์ด์–ธํŠธ IP ์„ธ์…˜ ์–ดํ”ผ๋‹ˆํ‹ฐ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

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

gcloud

๋‹ค์Œ Google Cloud CLI ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ internal-tcp-proxy-bs ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ IP ์„ธ์…˜ ์–ดํ”ผ๋‹ˆํ‹ฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

gcloud compute backend-services update internal-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=CLIENT_IP

์—ฐ๊ฒฐ ๋“œ๋ ˆ์ด๋‹ ์‚ฌ์šฉ ์„ค์ •

๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์—์„œ ์—ฐ๊ฒฐ ๋“œ๋ ˆ์ด๋‹์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ํŠธ๋ž˜ํ”ฝ์„ ์ œ๊ณตํ•˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์ž๋™ ํ™•์žฅ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋ฐฉํ•ด๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ๋“œ๋ ˆ์ด๋‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฐ๊ฒฐ ๋“œ๋ ˆ์ด๋‹ ์‚ฌ์šฉ ์„ค์ • ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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