對於線上遊戲、即時通訊等依賴UDP協議的業務,為保證玩家順暢串連、提升使用者體驗,您可以使用UDP健全狀態檢查功能。該功能通過發送UDP資料包來監測後端伺服器的響應情況,能夠迅速識別和解決潛在問題,確保快速響應、及時進行故障檢測,從而增強服務的可靠性和可用性。
使用者情境
某線上遊戲公司營運著多台後端伺服器,這些伺服器通過UDP協議處理玩家的遊戲資料。為了確保玩家體驗的流暢性,公司希望即時監控每台伺服器的健康狀態。當某台伺服器出現異常時,能夠迅速檢測並隔離該伺服器,此時新的玩家請求不會被發送到異常的伺服器上,一旦伺服器恢複正常,自動將其重新納入服務,繼續處理玩家請求。
該公司可以使用NLB的UDP健全狀態檢查功能,定期檢查每台後端伺服器的狀態。當檢測到異常伺服器時,NLB會自動停止向其轉寄新的請求,並在伺服器恢複後自動重新啟用。
前提條件
您已在華東1(杭州)地區建立Virtual Private Cloud,並在兩個可用性區域內建立兩台交換器VSW1、VSW2。具體操作,請參見建立和管理專用網路。
您已分別在VSW1和VSW2建立ECS01和ECS02執行個體。
您已在VPC中建立一個處於運行中狀態的NLB執行個體。本文以私網NLB執行個體為例進行配置說明。具體操作可參考建立和管理NLB執行個體。
注意事項
後端伺服器部署UDP業務時,可以通過UDP、TCP或HTTP健全狀態檢查方式監測其狀態。然而,採用TCP或HTTP健全狀態檢查需要額外開放TCP連接埠,這可能導致網路設定複雜並增加潛在的安全風險。特別是在CLB遷移到NLB的情境中,為了確保服務能力的一致性,建議您使用UDP健全狀態檢查。
請確保後端伺服器的安全性群組已允許存取用於UDP健全狀態檢查的連接埠。
操作步驟
步驟一:部署服務
本文以CentOS 7.9為樣本,示範使用Python快速部署一個可以響應UDP請求的服務。樣本僅供參考,實際使用過程中以您自己開發的程式和服務為準。
在ECS01上部署服務響應UDP請求
登入ECS01服務後台。
執行
vi udp_server.py,按i鍵進入編輯模式。複製並粘貼如下代碼:
按
Esc鍵,輸入:wq儲存修改。執行
sudo python3 udp_server.py命令,即可運行指令碼。當收到
UDP server up and listening響應時,表示UDP後端服務已開啟。
如果出現啟動失敗,需要排查下連接埠是否已被佔用,或者命令及代碼是否複製粘貼錯誤。
在ECS02上部署服務響應UDP請求
登入ECS02服務後台。
執行
vi udp_server.py,按i鍵進入編輯模式。複製並粘貼如下代碼:
按
Esc鍵,輸入:wq儲存修改。執行
sudo python3 udp_server.py命令,即可運行指令碼。當收到
UDP server up and listening響應時,表示UDP後端服務已開啟。
如果出現啟動失敗,需要排查下連接埠是否已被佔用,或者命令及代碼是否複製粘貼錯誤。
步驟二:建立伺服器組並開啟健全狀態檢查
在頂部功能表列,選擇NLB執行個體所屬的地區。
在左側導覽列,選擇。
在伺服器組頁面,單擊建立伺服器組。
在建立伺服器組對話方塊,配置以下資訊。關鍵配置資訊參考下表配置,其餘配置項保持預設值即可,如需修改可參考NLB伺服器組。
配置
說明
伺服器群組類型
選擇伺服器類型。
選擇後端協議
本文選擇UDP協議。
配置健全狀態檢查
開啟健全狀態檢查,並在健全狀態檢查配置右側單擊編輯。
健全狀態檢查協議
本文選擇UDP協議。
健全狀態檢查連接埠
本文選擇使用後端伺服器連接埠。
伺服器組資訊配置完成後,單擊建立。待伺服器組建立成功後,在彈窗中單擊添加後端伺服器。
在添加後端伺服器配置面板,選擇ECS01和ECS02,然後單擊下一步。
在配置連接埠和權重設定精靈,輸入連接埠
161,權重保持預設值,然後單擊確定,完成伺服器添加。
步驟三:建立UDP監聽
在頂部功能表列,選擇NLB執行個體所屬的地區。
在執行個體頁面,找到目標NLB執行個體,然後在操作列單擊建立監聽。
在負載平衡業務設定精靈頁面,配置以下資訊。關鍵配置資訊參考下表配置,其餘配置項保持預設值即可,如需修改可參考添加UDP監聽。配置完成後單擊提交。
配置監聽:
配置
說明
選擇監聽協議
本文選擇UDP監聽。
監聽連接埠
本文輸入
161。選擇伺服器組:
配置
說明
選擇伺服器組
選擇添加了ECS01與ECS02的伺服器組。
步驟四:測實驗證
檢測正常伺服器
以該VPC內的任意一台Linux用戶端為例進行測實驗證。
執行
vi udp_client.py,按i鍵進入編輯模式。複製並粘貼如下代碼:
按
Esc鍵,輸入:wq儲存修改。
執行
sudo python3 udp_client.py命令,收到如下圖示的回複報文PONG1,表示ECS01伺服器可以正常接收請求。
執行
sudo python3 udp_client.py命令,收到如下圖示的回複報文PONG2,表示ECS02伺服器可以正常接收請求。
故障類比
停止後端伺服器ECS01上的UDP後端服務。在指令碼運行介面按下Ctrl+C終止指令碼運行,命令列回到可輸入狀態,說明UDP後端服務已停止。

回到Linux用戶端,多次執行
sudo python3 udp_client.py命令,收到如下圖示的回複報文PONG2,表示NLB仍在將請求轉寄到ECS02,ECS02可以正常響應請求。
登入網路型負載平衡NLB控制台查看健全狀態檢查異常的原因。
在執行個體頁面,單擊目標執行個體ID。
單擊監聽頁簽,在UDP監聽的健全狀態檢查狀態列查看健全狀態檢查狀態為異常。
單擊異常,可以在彈出的對話方塊中查看異常的伺服器和異常原因。

在彈出的對話方塊中,單擊執行個體診斷,在執行個體健康診斷面板查看診斷項詳情。

重新在ECS01上執行
sudo python3 udp_server.py開啟UDP後端服務。看到UDP server up and listening的輸出,確認UDP後端服務已開啟。回到監聽頁簽下確認,此時健全狀態檢查狀態已恢複正常。

關閉健全狀態檢查
您可以關閉健全狀態檢查功能,但關閉健全狀態檢查後,當後端某個ECS出現異常時,NLB還是會把請求轉寄到該異常的ECS上,造成部分業務不可訪問。因此一般情況下建議不要關閉健全狀態檢查。
在頂部功能表列,選擇NLB執行個體所屬的地區。
在左側導覽列,選擇網路型負載平衡 NLB> 伺服器組。
在伺服器組頁面,找到目標伺服器組,在操作列單擊編輯健全狀態檢查。
在編輯健全狀態檢查對話方塊,關閉健全狀態檢查,然後單擊儲存。
相關文檔
如果您想要瞭解UDP健全狀態檢查的概述和原理,請參見NLB健全狀態檢查。