เส้นทางและการกระจายโหลด
เส้นทางคืออะไรใน CreateYourVPN, วิธีสร้างมันภายในหนึ่งนาที, ทำไมเส้นทางว่างจึงมีประโยชน์ และระบบกระจายผู้ใช้ไปยังเซิร์ฟเวอร์ต่าง ๆ อย่างไร
เส้นทางคือสะพานเชื่อมระหว่างโครงสร้างพื้นฐานของคุณกับสิ่งที่ผู้ใช้เห็น คุณจัดการเซิร์ฟเวอร์และอินบาวด์ (inbound) ในขณะที่ผู้ใช้เห็นรายการ "เซิร์ฟเวอร์" สั้น ๆ ในแอปของตัวเอง — และแต่ละรายการในลิสต์นั้นแท้จริงแล้วคือเส้นทางหนึ่งเส้นทาง
เส้นทาง = หนึ่งบรรทัดในแอปของผู้ใช้
เส้นทาง (route) คือกลุ่มของอินบาวด์ (inbound) ที่รวมอยู่ภายใต้ชื่อเดียวในการสมัครสมาชิกของไคลเอนต์ กฎนั้นเรียบง่าย:
หนึ่งเส้นทางที่ไม่ว่าง = หนึ่งรายการในลิสต์เซิร์ฟเวอร์ของผู้ใช้
เส้นทางหนึ่งอาจมีอินบาวด์ (inbound) เดียว — หรือมากถึงสิบตัวบนเซิร์ฟเวอร์ต่างเครื่องกันก็ได้ ผู้ใช้จะไม่มีวันเห็นสิ่งนี้: พวกเขาเลือก "🇺🇸 USA" ส่วนจะไปลงเอยที่เซิร์ฟเวอร์ไหนกันแน่นั้น ตัวกระจายโหลด (load balancer) จะเป็นผู้ตัดสินใจ — รายละเอียดอยู่ด้านล่าง
ในขณะเดียวกัน ชื่อที่ผู้ใช้เห็นคือชื่อของ อินบาวด์ (inbound) ที่ถูกเลือก: ตั้งชื่ออินบาวด์ (inbound) ของคุณให้ชัดเจน ("🇺🇸 New York", "🇺🇸 Dallas") แล้วนั่นคือสิ่งที่ผู้ใช้จะเห็นเป๊ะ ๆ
เมื่อคุณเชื่อมต่อเซิร์ฟเวอร์แรก ระบบจะสร้างเส้นทางเริ่มต้นให้เองโดยอัตโนมัติ และใส่อินบาวด์ (inbound) ตัวแรกเข้าไปในนั้น — นี่คือเหตุผลที่ทุกอย่างทำงานได้ ทันทีโดยไม่ต้องตั้งค่าอะไรเลย เส้นทางจะมีประโยชน์เมื่อคุณต้องการมากกว่านั้น: หลายประเทศ เส้นทาง "สำหรับสตรีมมิง" โดยเฉพาะ และอื่น ๆ
สร้างเส้นทาง
บนหน้าคลัสเตอร์ ในส่วน "เส้นทาง" คลิก "เส้นทางใหม่" ตัวช่วยตั้งค่ามีสามส่วน:
- ไคลเอนต์เห็นเส้นทางนี้อย่างไร — ชื่อ (เช่น
🇺🇸 USA) และธง นี่คือ "ป้ายชื่อ" ของเส้นทาง - อัลกอริทึมการกระจายโหลด — "โหลดน้อยที่สุดตามทราฟฟิก" (ค่าเริ่มต้น) หรือ "Round-robin" ความแตกต่างจะอธิบายด้านล่าง
- อินบาวด์ (inbound) ในพูล — อินบาวด์ (inbound) ตัวไหนที่อยู่ในเส้นทางนี้ ส่วนนี้ไม่บังคับ: คุณสามารถสร้างเส้นทางว่างแล้วเติมเข้าไปทีหลังด้วยการลาก
อินบาวด์ (inbound) หนึ่งตัวสามารถเป็นส่วนหนึ่งของเส้นทางเดียวเท่านั้น หากคุณเลือกอินบาวด์ (inbound) ที่ถูกใช้โดยเส้นทางอื่นอยู่แล้ว มันจะถูกย้ายไปยังเส้นทางใหม่ นี่คือวิธีที่ระบบรับประกันว่าทราฟฟิกของแต่ละจุดเข้า จะถูกควบคุมด้วยชุดกฎเพียงชุดเดียวเท่านั้น
แผนภาพโทโพโลยี: มองเห็นเส้นทางในภาพเดียว
บนหน้าคลัสเตอร์ เส้นทางจะแสดงอยู่บนแผนภาพแบบสด: เซิร์ฟเวอร์พร้อมอินบาวด์ (inbound) ของมันอยู่ทางซ้าย กล่องเส้นทางอยู่ทางขวา อินบาวด์ (inbound) สามารถ ลากด้วยเมาส์ ได้: จับอินบาวด์ (inbound) แล้วปล่อยลงในเส้นทางอื่น — เสร็จเรียบร้อย นอกจากนี้ยังมีโซน "ยังไม่ได้กำหนด" — ปล่อยอินบาวด์ (inbound) ลงตรงนั้นเพื่อถอดมันออกจากเส้นทางทั้งหมด
กล่องเส้นทางเองก็สามารถจัดเรียงใหม่ได้เช่นกัน (ด้วยที่จับสำหรับลาก หรือลูกศร) — นี่เป็นเพียงการจัดลำดับเชิงภาพเพื่อความสะดวกของคุณเท่านั้น
เส้นทางว่าง
เส้นทางที่ไม่มีอินบาวด์ (inbound) แม้แต่ตัวเดียวจะถูกวาดด้วยเส้นประ และไม่มี "ท่อ" เชื่อมไปยังโหนดกระจายข้อมูล — เป็นสัญญาณบอกว่า ผู้ใช้มองไม่เห็นมัน เส้นทางว่างเป็นตัวยึดตำแหน่งที่มีประโยชน์: สร้าง "🇯🇵 Japan" ไว้ล่วงหน้า แล้วเมื่อมีเซิร์ฟเวอร์ญี่ปุ่นปรากฏขึ้น ก็แค่ลากอินบาวด์ (inbound) เข้าไป — เส้นทางก็จะมีชีวิตขึ้นมาทันที
สถานการณ์ตรงกันข้ามก็ถูกไฮไลต์เช่นกัน: หากคุณมีอินบาวด์ (inbound) ที่อยู่นอกเส้นทางใด ๆ แผงควบคุมจะเตือนคุณ — "มีอินบาวด์ (inbound) ที่ยังไม่ได้อยู่ในเส้นทางใด — ไคลเอนต์ยังมองไม่เห็น"
การกระจายโหลด: ใครจะไปลงเอยที่เซิร์ฟเวอร์ไหน
เมื่อผู้ใช้ร้องขอการเชื่อมต่อ ระบบจะเลือกอินบาวด์ (inbound) หนึ่งตัว จากพูลสำหรับแต่ละเส้นทาง — แบบสด ๆ โดยอิงจากเมทริกล่าสุดของเซิร์ฟเวอร์ (ตัวเดียวกับในบทที่ 3) มีอัลกอริทึมสองแบบ:
"โหลดน้อยที่สุดตามทราฟฟิก" (ค่าเริ่มต้น)
ระบบจะดูว่าแต่ละเซิร์ฟเวอร์เหลือ แบนด์วิดท์ว่างต่อผู้ใช้หนึ่งคน เท่าไร: โดยนำความจุของช่องสัญญาณ ลบด้วยทราฟฟิกปัจจุบัน แล้วหารด้วยจำนวนผู้ใช้ที่เชื่อมต่ออยู่ เซิร์ฟเวอร์ที่มีพื้นที่ว่างมากที่สุดจะเป็นผู้ชนะ นี่คือการกระจายโหลดที่ยุติธรรม "ตามโหลดจริง": เซิร์ฟเวอร์ที่อ่อนแอและอิ่มตัวจะไม่ได้รับผู้ใช้ใหม่ แม้ว่าในทางทฤษฎีจะมีคนอยู่บนเซิร์ฟเวอร์นั้นน้อยกว่าก็ตาม
ระบบจะประเมินความจุของช่องสัญญาณด้วยตัวเอง — จากจุดพีคของทราฟฟิกจริงที่สังเกตได้ (จุดพีคจะค่อย ๆ "เย็นลง" หากเซิร์ฟเวอร์ไม่ได้ถูกโหลดมานานแล้ว)
"Round-robin"
กฎง่าย ๆ: ผู้ใช้ใหม่จะไปยังเซิร์ฟเวอร์ที่ตอนนี้มี คนน้อยที่สุด — โดยปรับตาม ค่าสัมประสิทธิ์ ของเซิร์ฟเวอร์ ค่าสัมประสิทธิ์คือน้ำหนัก: เซิร์ฟเวอร์ที่มีค่าสัมประสิทธิ์ 2.0 จะถูกมองว่า "จุคนได้มากกว่าเป็นสองเท่า" และจะได้รับผู้ใช้มากกว่าเซิร์ฟเวอร์ข้างเคียงที่มีค่า 1.0 ประมาณสองเท่า วิธีนี้ช่วยให้คุณโหลดเครื่องที่มีขนาดต่างกันได้อย่างยุติธรรม
หากเซิร์ฟเวอร์บางเครื่องในพูลยังไม่มีการประเมินความจุ (เช่น เซิร์ฟเวอร์ใหม่เอี่ยม ที่ยังไม่เคยเห็นจุดพีคของทราฟฟิกเลย) เส้นทางจะสลับกลับไปใช้ round-robin อย่างนุ่มนวล — เพื่อให้การตัดสินใจอิงจากข้อมูลที่มีอยู่จริงเสมอ
การกระจายโหลดใหม่เกิดขึ้นเมื่อไร
ตลอดเวลา — และเกิดขึ้นเอง การเลือกเซิร์ฟเวอร์จะถูกคำนวณใหม่ทุกครั้งที่มีการร้องขอ โดยใช้เมทริกล่าสุด: หากโหลดเปลี่ยนไป ผู้ใช้ใหม่จะเริ่มลงเอยบนเซิร์ฟเวอร์ที่ว่างกว่า ในขณะเดียวกัน ระบบจะพยายามคงตัวเลือกเดิมไว้สำหรับผู้ใช้คนหนึ่ง ๆ เมื่อสภาพการณ์เท่ากัน เพื่อไม่ให้ "เซิร์ฟเวอร์" ของพวกเขากระโดดไปมา
และยังมีมาตรการป้องกันอีกอย่างหนึ่ง: เซิร์ฟเวอร์ที่ระบบมอนิเตอร์เห็นว่าไม่พร้อมใช้งานจะถูกตัดออกจากการเลือก — อ่านรายละเอียดเพิ่มเติมได้ในบทที่ 7
สรุปสิ่งสำคัญ
- เส้นทางคือ "ป้ายชื่อ" สำหรับกลุ่มของอินบาวด์ (inbound); เส้นทางที่ไม่ว่าง = หนึ่งบรรทัดในแอปของผู้ใช้
- อินบาวด์ (inbound) หนึ่งตัวอยู่ในเส้นทางเดียวเท่านั้น อินบาวด์ (inbound) ที่อยู่นอกเส้นทางใด ๆ จะมองไม่เห็นสำหรับไคลเอนต์
- เส้นทางว่างเป็นตัวยึดตำแหน่งที่ปกติดี: กล่องเส้นประ ซ่อนจากผู้ใช้
- มีอัลกอริทึมสองแบบ: ตามแบนด์วิดท์ว่าง (แบบฉลาด เป็นค่าเริ่มต้น) และ round-robin พร้อมน้ำหนัก
- การกระจายโหลดเป็นแบบสด: คำนวณใหม่ทุกครั้งที่มีการเชื่อมต่อโดยใช้เมทริกปัจจุบัน
บทถัดไป
เซิร์ฟเวอร์: การเชื่อมต่อ ขั้นตอนการติดตั้ง และเมทริก
CreateYourVPN เชื่อมต่อและปกป้อง VPS ของคุณอย่างไร: ทุกขั้นตอนการติดตั้งอธิบายทีละขั้น สถานะของเซิร์ฟเวอร์ และความหมายของเมทริกแต่ละตัวบนการ์ด
อินบาวด์ (inbound) และการแยกทันเนล
อินบาวด์ (inbound) คืออะไรใน CreateYourVPN: การพรางตัวเป็นเว็บไซต์ การบล็อกทอร์เรนต์ และการแยกทันเนล — ทราฟฟิกส่วนไหนวิ่งผ่าน VPN และส่วนไหนวิ่งตรง