ส่วนใหญ่นักพัฒนาต้องเผชิญกับปัญหาการกระจาย traffic ระหว่าง backends หลายๆตัวเมื่อมีแอปพลิเคชันที่ทำงานอยู่แล้วโดยกลุ่มผู้ใช้ที่มีอยู่และโหลดที่เข้ามาอย่างต่อเนื่อง ดังนั้นนอกเหนือจากปัญหาการกำหนดค่าการแบ่งปันการรับส่งข้อมูลทั่วไปมันมีความซับซ้อนยิ่งขึ้นด้วยความจำเป็นในการใช้การเปลี่ยนแปลง “ทันที” ที่เหมาะสมกับอินสแตนซ์แอปพลิเคชัน front-end ในหลายๆกรณีทำให้แอปพลิเคชันหยุดทำงานชั่วคราว ด้านล่างนี้เราจึงพิจารณาวิธีการผสมผสานโซลูชัน Traffic Distributor (TD) เข้ากับ topology ของแอปพลิเคชันที่ทำงานอยู่ได้อย่างง่ายดายและไม่ลำบาก
หมายเหตุ: Traffic Distributor เตรียมความสามารถเพื่อรับประโยชน์จากโซลูชันที่มีประโยชน์มากมาย เช่น:
– ใช้การอัปเดตแอปพลิเคชัน “invisible” ที่มองไม่เห็นด้วย blue-green deployment
– ตรวจสอบประสิทธิภาพ,ประสบการณ์ผู้ใช้,และความเสถียรของแอปเวอร์ชันใหม่ผ่านการทดสอบ A/B
– เพิ่มความพร้อมให้บริการด้วยการป้องกัน failover ขั้นสูง
ขั้นตอนมีดังนี้:
- deploy แอปเวอร์ชันใหม่และเพิ่มไปยังการกำหนดเส้นทาง
- กำหนดค่าแอป entrypoint ผ่าน TD
Add Application Copy to Routing
สำหรับตัวอย่างนี้เรารันแอปพลิเคชันใน Apache server ภายใน primary-env environment
1. ในขั้นตอนแรกคุณต้องสร้าง environment ขึ้นมาอีกหนึ่ง env ด้วยแอปพลิเคชันเดียวกันภายใน (เราจะตั้งชื่อว่า Second-env)
เคล็ดลับ: คุณสามารถใช้ฟีเจอร์ cloning environment เพื่อคัดลอก environment ที่เหมือนกันได้ทันที (เช่น มีการตั้งค่าข้อมูลและการตั้งค่าที่เหมาะสมทั้งหมดไว้ภายใน) ประเภทใดก็ได้
เพิ่มเติม: อย่าลืมกำหนดค่าข้อมูล “hardcoded” ให้ถูกต้อง (ลิงก์โดยตรง, IPs ฯลฯ) สำหรับ environment ที่โคลนมา หากจำเป็นต้องใช้
2. ตอนนี้ก็พร้อมที่จะติดตั้ง Traffic Distributor แล้วโดยการระบุ environment ทั้งสองนี้เป็น backends
เคล็ดลับ: หากมี environment หลาย regions ที่ผู้ให้บริการโฮสต์แพลตฟอร์มเลือก คุณสามารถย้าย environment ของคุณไปยังฮาร์ดแวร์เซตอื่นได้ในภายหลังโดยสิ่งนี้จะช่วยป้องกัน failover ได้ดีกว่าเนื่องจากคุณจะสามารถจัดการกับปัญหา hardware ที่ขึ้นอยู่กับ backends ของคุณ (หากเกิดขึ้น) โดยกำหนดเส้นทางคำขอไปยังอินสแตนซ์ที่ยังคงทำงานได้
3. เพียงเท่านี้ Traffic Distributor ก็จะได้รับการตั้งค่าแล้วและพร้อมที่จะจัดการคำขอไปยังแอปพลิเคชัน
สิ่งที่เหลืออยู่คือการเปลี่ยนเส้นทางการรับส่งข้อมูลขาเข้าจาก environment แรกไปยัง Traffic Distributor
กำหนดค่า App Entrypoint ผ่าน TD
แอปพลิเคชันส่วนใหญ่ใน production มีโดเมนที่กำหนดเอง ในตัวอย่าง environment ขั้นต้น (primary-env) มีชื่อโดเมนที่กำหนดเองที่ผูกไว้อยู่แล้ว
สำหรับการเปลี่ยนเส้นทางคำขอที่เหมาะสม (เช่น การดำเนินการผ่านผู้แจกจ่าย) เราจำเป็นต้องย้าย entrypoint ที่เหมาะสมไปยัง TD environment ด้วยวิธีนี้ข้อมูลดังกล่าวจะถูกวางไว้ด้านหน้าของคู่แบ็กเอนด์ที่เลือกและแชร์โหลดที่เข้ามาระหว่างกันตามที่ตั้งค่าไว้ ให้คุณปฏิบัติตามขั้นตอนง่ายๆถัดไปตามวิธีการผูกโดเมนแบบกำหนดเองดังนี้:
- หากใช้ CNAME หรือ ANAME เปลี่ยนเส้นทาง – สลับโดเมนระหว่าง environment เริ่มต้นและ TD
- หากใช้ A Record – สลับ Public IPs เพื่อย้าย IP ภายนอกที่ใช้ไปยัง TD environment
การสลับโดเมน
1. วางเมาส์เหนือ environment ของโดเมนที่กำหนดเองและผูกกับ primary-env จากนั้นคลิกปุ่ม Settings
2. ภายในแท็บการตั้งค่า environment คลิกที่ส่วน Custom domains แล้วไปที่ตัวเลือก [Swap Domains]/swap-domains/) เลือก Traffic Distributor environment ภายในรายการดรอปดาวน์
คลิกปุ่ม Swap และยืนยันการกระทำนี้ในป๊อปอัปเพื่อใช้การเปลี่ยนแปลง
3. รอซักครู่แอปพลิเคชันที่กำหนดชื่อโดเมนเองจะถูกย้าย environment กับ Traffic Distributor เพื่อให้ backends ทั้งสองของคุณใช้งานได้ผ่านโดเมนนี้
การสลับ Public IPs
วิธีที่ง่ายที่สุดในการส่ง Public IP จาก primary-env (เช่น โดเมนที่คุณกำหนดเอง) ไปยัง Traffic Distributor คือการใช้ฟังก์ชัน External Addresses Swap ที่สอดคล้องกันซึ่งมีให้ใช้งานผ่าน Jelastic API และ CLI
อนุญาตให้ดำเนินการกำหนดค่าที่จำเป็นในคำสั่งเดียวซึ่งจะช่วยยกเว้นการกำหนดค่า A Record ด้วยตนเอง
หากคุณต้องการทำงานผ่าน GUI คุณต้องไปที่ผู้รับจดทะเบียนโดเมนของคุณและแทนที่ IP address ภายนอกด้วยตนเองใน A Record สำหรับโดเมนที่คุณกำหนดเอง
1. ตรวจสอบให้แน่ใจว่าอินสแตนซ์ NGINX balancer ใน Traffic Distributor environment ของคุณมี IP address ภายนอกที่แนบมา คลิก Copy เพื่อคัดลอกค่าจากแดชบอร์ด
2. จากนั้นเข้าถึงการจัดการ DNS ของคุณและกำหนด A Record เพื่อชี้ไปยัง IP address ใหม่
เคล็ดลับ:
– หากต้องการใช้การเปลี่ยนแปลงเหล่านี้คุณต้องรอให้ DNS record cache ปัจจุบันหมดอายุ (เนื่องจาก DNS server อาจส่งคืนที่อยู่โดเมนเก่าเมื่อมี request) หากคุณต้องการทราบระยะเวลาที่แน่นอนว่า IP address เก่าของโดเมนจะถูกเก็บไว้ใน cache คุณสามารถตรวจสอบการตั้งค่า TTL ใน DNS manager ของคุณ (โดยปกติจะระบุเป็นวินาที)
– อย่าลืมตรวจสอบการกำหนดค่าของแอปพลิเคชันอีกครั้งสำหรับการตั้งค่าที่ขึ้นกับ IP แบบ hardware แล้วปรับเปลี่ยนตามนั้น
3. หลังจากเปลี่ยนที่อยู่ entrypoint ของแอปพลิเคชัน คุณสามารถแยก public IP ออกจาก environment เริ่มต้น (หากไม่ต้องการเข้าถึงโดยตรงอีกต่อไป) เพื่อที่จะไม่ต้องชำระเงินสำหรับส่วนที่ไม่ได้ใช้งาน
เพียงเท่านี้การรับส่งข้อมูลขาเข้าทั้งหมดสำหรับโดเมนที่คุณกำหนดเองจะถูกประมวลผลโดย Traffic Distributor solution ซึ่งจะกำหนดเส้นทางตามอัตราส่วนการรับส่งข้อมูลที่ตั้งไว้ระหว่าง backends ของแอปพลิเคชัน