วิธีทำ Google Load Balancing ติดต่อกับ Google cloud run

Chaiwat Tungtongsoontorn
Tri Petch Digital
Published in
4 min readMar 7, 2022

เกริ่นนำ

เราหลายคนอาจผ่านการทำ Website และ API services ต่างๆ ทั้งเป็น Microservices หรือ Monolith แต่อาจจะยังมีคำว่าถ้าเรามีหลาย Application หลังบ้านหลายส่วน เราจะทำ Google Cloud LoadBalancing ไปติดต่อ กับ Services เหล่านี้ได้อย่างไร

ในบทความนี้เราจะพาคุณไปรู้จัก Google Cloud Run และ Google Load Balancing และเชื่อมต่อ Load Balance ไปยัง Service หลังบ้านของคุณอย่างไร

Photo by AltumCode on Unsplash

สารบัญ

  • ติดตัง Google Cloud Run เพื่อเป็น Backend service ไปติดต่อกับ Google Load Balancing
  • สร้าง Google Load Balancing ไปติดต่อกับ Cloud Run ที่สร้างขึ้นมา
  • ทำ DNS ชี้ไปที่ IP ของ Google Load Balancing

ติดตัง Google Cloud Run เพื่อเป็น Backend service ไปติดต่อกับ Google Load Balancing

ก่อนอื่นเลยเราต้องไปยัง หน้ารวม google cloud run dashboard. จากนั้นสร้าง Application โดยคลิ๊กข้อความ create service menu.

  • ตรงเมนู “Deploy one revision from an existing container image”, เลือก container image จาก Registry ที่เราได้สร้าง Image ไว้ แต่บทความนี้ผมขออนุญาติข้ามเรื่องการสร้าง Image และ นำขึ้น registry อย่างไร แต่จะเป็นการอธิบายว่าถ้าเรามี image ที่พร้อมจะเป็น backend service แล้วจะติดต่อ Load Balance อย่างไร โดยเริ่มคลิ๊กข้อความ TEST WITH A SAMPLE CONTAINER เพียงเท่านี้เราจะได้ image ตัวอย่างที่ทางกูเกิ้ลได้เตรียมไว้สำหรับทดลองกันแล้ว
  • ขั้นตอนต่อไปให้ใส่ชื่อ Service และ Region ที่รันเจ้า Service ของเรา (ต้องระวังเรื่อง unmapped domain regions ด้วยนะครับ พอมีบาง region ไม่สามารถต่อ Domain ได้)
  • ใน section ถัดมาเป็นเรื่องของ CPU allocation and pricing โดยให้เลือกเป็น CPU is only allocated during request processing” ที่เลือกตัวเลือกนี้เพราะเราอยากมีค่าใช้จ่ายตามจำนวนรีเควสที่วิ่งเข้ามา
  • ต่อมาให้กำหนด Autoscaling โดย min number of instances ให้ใส่เป็น 1 และ maximum เป็น 1 เช่นกัน (ขึ้นอยู่กับขนาดและจำนวนที่ต้องรองรับบนเซอร์เวอร์ของคุณ)
  • สำหรับ ingress ให้เลือก “Allow internal traffic and traffic from Cloud Load Balancing”
  • ส่วนของ *Authentication ให้เลือก “Allow unauthenticated invocations”
  • ส่วนของการติดตั้งที่เหลือจัดให้เป็น default

เมื่อกำหนดเรียบร้อยตัวคอนฟิกหน้าตาก็จะได้ประมาณนี้

google cloud run configuration

เยี่ยมเลย 🎉🎉!! ตอนนี้เราก็จะมี Backend Service ของ Google Cloud Run แต่เรายังไม่สามารถเข้าผ่าน URL ที่ google เตรียมไว้ให้เพราะเรากำหนด Network วงภายในและ Load Balancer เข้าถึงได้เท่านั้น

สร้าง Google Load Balancing ไปติดต่อกับ Cloud Run ที่สร้างขึ้นมา

ต่อมาเราจะทำการสร้าง Load Balancer ต่อกันเลย

  • กดเข้าไปที่ google navigators and select Networking services -> Load Balancing
  • กดที่เมนู “CREATE LOAD BALANCER”
  • เลือก “HTTP(S) Load Balancing”
  • กด continue
  • ใส่ชื่อ balancer name
  • กล่องด้านซ้ายคลิ๊ก “Backend configuration” และ กด dropdown แล้วเลือก “CREATE A BACKEND SERVICE”
  • ทีนี้เราต้องการให้ Google Cloud Run ของเราต้องมี serverless network endpoint group หรือ NEG เน็ตเวริคนี้จะทำให้ serverless แอพพลิเคชั่นเราติดต่อกับ Google Cloud Load Balancer ดังนั้นเริ่มต้นเราจะสร้างโดยการกลิ๊กไปที่ข้อความ “SERVERLESS NETWORK ENDPOINT GROUP”. NEG ควรเป็นประเภท Cloud Run และให้ใส่ region เป็นที่ Google Cloud Run ตั้งอยู่
  • ส่วนที่เหลือ backend service ไม่ต้องปรับอะไรให้เป็น default
  • ในส่วนของ “Host and path rules” ให้ปรับเป็น mode Simple host and path rule
  • ก่อนที่เราจะไปคอนฟิกต่อที่ frontend menu เราจะต้องสร้าง static IP ขึ้นมาก่อนโดยไปที่ VPC network -> External IP addresses จากนั้นคลิ๊กที่ขอความด้านบน ที่ชื่อ “RESERVE STATIC ADDRESS” (ระวังเรื่องของการจอง IP โดยไม่มี Service ใดๆ มาเรียกใช้ด้วยนะครับ เพราะค่าใช้จ่ายส่วนนี้สูงเลยแหล่ะ) IP ของเราให้เซ็ตเป็นประเภท Global ดังรูป
  • มาต่อกันที่ frontend section ในหน้าของ Google Load Balance ตอนนี้เราจะใส่ IP กับ Port ที่ไม่เป็น ephemeral IP เพื่อทำ alias domain โดยเราจะทำการติดต่อ Load Balancer ของเราเป็นโปรโตคอล HTTP ที่ port 80 และเลือก IP ที่เราพึ่งสร้างไว้ก่อนหน้า
  • ต่อมาถ้าเราต้องการให้ service หรือเว็ปเราของเรามี SSL ให้เราทำการสร้าง Frontend service ที่เป็นโปรโตคอล HTTPs ที่ port 443 ในส่วนของ SSL นั้น ให้ใช้เป็น Google-managed certificate และใส่ Domain ของเรา จากนั้นก็ใส่ IP ที่เราพึ่งสร้างไว้ก่อนหน้า

คอนฟิก frontend หน้าตาก็จะประมาณนี้

  • ตรวจสอบขั้นสุดท้าย Review and finalize.
  • กด “CREATE”

เย้!! เราสรา้ง Google Load Balancing ได้แล้ว ตอนนี้เราสามารถติดต่อ service ของเราได้แล้วผ่าน static IP ที่เราสร้างไว้ หรือไปหา IP ได้ที่ Load Balancer’s dashboard แล้วกดไปที่ชื่อ load balance

ทำ DNS ชี้ไปที่ IP ของ Google Load Balancing

ช่วงสุดท้ายเราจะทำให้ IP เรามีโดเมนเนม ให้ไปที่ Provider ที่คุณซื้อโดเมน คุณอาจจะเห็น “DNS records” ให้ทำการ alias จาก IP ของ Load Balancer ด้วยประเภท “A” record ดังรูป

*กระบวนการทำ DNS อาจจะใช้เวลาถึง 2-48 ชั่วโมง สำหรับแม๊พ dns

🎉🎉🎉🎉🎉🎉 สำมะเหร็ดดด🎉🎉🎉🎉🎉🎉
Google Cloud Run ของเราสามารถเข้าได้ด้วยโดเมนเนม ได้ทั้ง HTTP และ HTTPs พร้อมทั้ง SSl certificate จาก Google หน้าตาตัวอย่างก็จะเป็นคร่าวๆ ดังนี้

หากคุณมีข้อสงสัย สามารถติดต่อผมได้ตามลิงค์ข้างล่าง หรือคอมเม้นมาได้ที่บล๊อกนี้

อยากรู้จักฉันได้ที่ link

--

--