路由與負載均衡
CreateYourVPN 中的路由是什麼、如何在一分鐘內建立一個路由、為什麼空路由有用,以及系統如何在伺服器之間分配使用者。
路由是您的基礎架構與使用者所看到的畫面之間的橋樑。您管理的是伺服器和入站,而使用者在自己的應用程式裡看到的是一份簡短的"伺服器"清單——而清單中的每一項,其實都是一個路由。
路由 = 使用者應用程式中的一行
路由是客戶端訂閱中,以單一名稱歸類的一組入站。 規則很簡單:
一個非空的路由 = 使用者伺服器清單中的一個項目。
一個路由可以只包含一個入站——也可以包含分布在不同伺服器上的十個入站。使用者永遠看不到這一層:他們選擇"🇺🇸 美國",至於實際會連到哪台伺服器,則由負載均衡器決定——詳情見下文。
同時,使用者看到的名稱其實是被選中的入站的名稱:把入站取一個清楚的名字("🇺🇸 紐約"、"🇺🇸 達拉斯"),使用者看到的就正是這個名字。
當您連接第一台伺服器時,系統會自動建立一個預設路由,並把第一個入站放進去—— 這就是為什麼在還沒做任何設定的情況下,一切就已經能正常運作。當您想要更多功能時—— 多個國家、專用的"串流"路由等等——路由就派上用場了。
建立路由
在叢集頁面的**"路由"區塊中,點擊"新增路由"**。精靈分為三個部分:
- 客戶端如何看到這個路由——名稱(例如
🇺🇸 美國)與旗幟。這是路由的"招牌"。 - 負載均衡演算法——"最低流量負載"(預設)或"輪詢"。兩者的差異會在下面說明。
- 池中的入站——哪些入站屬於這個路由。這個部分是選填的:您可以先建立一個空路由,之後再透過拖曳來填入。
一個入站只能屬於一個路由。 如果您選擇了一個已經被其他路由佔用的入站,它就會 被移到新的路由中。這正是系統用來保證每個入口點的流量都只受一組規則管轄的方式。
拓撲圖:一眼看清所有路由
在叢集頁面上,路由會顯示在一張即時圖表中:左側是伺服器及其入站,右側是路由方塊。 入站可以用滑鼠拖曳:抓住一個入站,放到另一個路由裡——就完成了。還有一個 **"未分配"**區域——把入站拖到那裡,就能把它從所有路由中移除。
路由方塊本身也可以重新排列(透過拖曳把手或箭頭)——這純粹是為了方便您視覺上排序。
空路由
一個沒有任何入站的路由,會以虛線邊框顯示,並且沒有連到分發節點的"管線"—— 這正暗示著使用者看不到它。空路由是很好用的佔位符:可以先建立"🇯🇵 日本", 等到有日本的伺服器上線時,再把入站拖進去——路由就活了過來。
反過來的情況也會被特別標示出來:如果您有不屬於任何路由的入站,面板會提醒您—— "入站未加入任何路由——客戶端目前看不到它們"。
負載均衡:誰會連到哪台伺服器
當使用者發起連線請求時,系統會針對每個路由,從池中即時選出一個入站—— 依據的是最新的伺服器指標(就是第 3 課裡的那些)。有兩種演算法:
"最低流量負載"(預設)
系統會查看每台伺服器每位使用者的剩餘頻寬:取通道容量,減去目前的流量, 再除以已連接的使用者數。剩餘空間最大的伺服器獲勝。這是一種依"實際負載"公平 分配的方式:即使一台疲弱、已飽和的伺服器上人數在形式上比較少,它也不會收到新使用者。
系統會自行估算通道容量——依據觀察到的實際流量峰值(如果伺服器有一段時間沒有負載, 峰值估計會逐漸"降溫")。
"輪詢"
一條簡單的規則:新使用者會被分配到目前人數最少的伺服器——並依伺服器的
係數進行調整。係數是一種權重:係數為 2.0 的伺服器會被視為"空間多一倍",
獲得的使用者數大約是係數 1.0 的鄰居的兩倍。這讓您可以公平地分配不同規模的機器。
如果池中某台伺服器還沒有容量估計值(比如這台伺服器是全新的,還沒經歷過任何 流量高峰),該路由會優雅地退回輪詢模式——這樣一來,決策永遠都是基於實際存在的資料。
何時會重新平衡
一直都在——而且是自動的。每次請求都會用最新的指標重新計算伺服器的選擇: 如果負載發生變化,新使用者就會開始連到比較空閒的伺服器。同時,在條件相同的情況下, 系統會盡量為同一位使用者保持一致的選擇,這樣他們的"伺服器"就不會來回跳動。
還有一道安全機制:被監控系統判定為不可用的伺服器會被排除在選擇之外—— 詳情見第 7 課。
重點回顧
- 路由是一組入站的"招牌";一個非空路由 = 使用者應用程式中的一行。
- 一個入站只屬於一個路由。不屬於任何路由的入站,對客戶端而言是不存在的。
- 空路由完全正常,是一種佔位符:一個虛線方塊,對使用者隱藏。
- 兩種演算法:依剩餘頻寬(聰明,預設)以及帶權重的輪詢。
- 均衡是即時的:每次連線都會依據當前指標重新計算。