端遊廣播機制在阿里雲的配置方案
1. 客戶需求場景
對於傳統端游來說,後臺服務端架構通常都很複雜,各個伺服器之間需要進行重度的網路通訊。如果採用單播通訊,就需要伺服器隨時知曉其他伺服器的變動,整個架構往往變得十分笨重。出於對開發靈活性和節省主機計算資源的考慮,目前很多端遊各個伺服器之間仍然在使用udp廣播通訊。
2. 基本原理
在目前阿里雲的經典網路和VPC網路環境下,由於底層交換機使用了三層交換機,因此不支援二層組播和廣播。為了滿足客戶組播和廣播的需求,可以使用單播的方式模擬組播。基本實現原理如下圖:
3. Windows環境配置
Windows環境下,多播工具包括服務端udptopoint
3.1 安裝
Windows多播代理程式通過安裝包來安裝。雙擊udptopoint-1.3.1.exe和udptomulti-1.1.1.exe安裝包程式來安裝,按照提示來安裝。安安裝目錄:C:\udptopoint 和 C:\udptomulti。
安裝說明:
1. 在安裝過程中如果檢測到winpcap已經安裝,直接取消安裝便可,也可繼續覆蓋安裝。
2.
3.2 配置
3.2.1 服務端配置
當組播工具安裝成功後,執行udptopoint.exe,將會自動執行多播轉單播的後臺服務,在工作管理員->服務 裡可以看到當前服務執行狀態。
服務端需要配置多播組以及新增對應的多播成員。主要通過配置檔案的形式進行配置。配置檔名稱為server_cfg.json.txt。配置檔案的格式如下所示:
服務端配置檔案格式:
{
"multi_group_array":[
{
"group_ip":"224.2.2.1",
"group_port":4321,
"server_port":4322,
"member_array":[
"172.16.1.1",
"172.16.1.2",
"172.16.1.3"
]
}
]
}
說明:group_ip:多播組IP。
group_port:多播組埠,即在伺服器端發起的多播埠。
server_port:代理程式的通訊埠,即將多播轉換成單播使用的埠。
member_array:多播組的成員IP。
服務端輔助工具——send_reload_point_cfg:
目前支援的命令為reload和list命令。
reload命令作用:重新載入配置檔案。每當重新修改配置檔案後,都需要執行該命令重新載入配置檔案。
list命令作用:顯示當前代理系統的收發包情況。
使用方法:
終端輸入reload或者list命令。
3.2.2 客戶端配置
當組播工具安裝成功後,執行udptomulti.exe,將會自動執行多播轉單播的後臺服務,在工作管理員->服務 裡可以看到當前服務執行狀態。
客戶端需要配置加入的多播組資訊,主要通過配置檔案中的json陣列進行配置,配置檔名稱為client_cfg.json.txt。配置檔案的格式如下:
客戶端配置檔案格式:
{
"multi_server_info_array":[
{
"server_ip":"10.65.251.14",
"server_port":6000,
"group_ip":"192.168.1.255",
"group_port":6001
}
]
}
說明:
server_ip: 傳送多播資料的源IP。
server_port: 代理程式的通訊埠,即單播使用的埠。
group_ip: 多播組IP。即在接受訊息後如果需要模擬的多播組IP。
group_port: 應用程式的通訊埠。即在接收訊息後需要模擬的多播組埠。
客戶端輔助工具——send_reload_multi_cfg:
目前支援的命令為reload和list命令。
reload命令作用:重新載入配置檔案。每當重新修改配置檔案後,都需要執行該命令重新載入配置檔案。
List命令作用:顯示當前代理系統的收發包情況。
4. Linux環境配置
4.1 安裝
Linux使用者組播工具伺服器和客戶端都打包成了一個主RPM包。目前提供的rpm包是:multicast_usr_tool-1.0.1-1.x86_64.rpm, 版本為1.0.1。安裝方法如下:
sudo rpm -ivh multicast_usr_tool-1.0.3-1.el6.x86_64.rpm
可用rpm -q multicast_usr_tool-1.0.3-1.el6.x86_64 查詢rpm包是否安裝成功。成功安裝rpm包後,會自動將使用者態組播工具的伺服器端程式和客戶端程式安裝到系統中。
4.2 配置
組播工具安裝成功後,客戶端啟動程式安裝目錄為/usr/local/bin,配置檔案目錄為/etc/multicast/
首先利用 cd /usr/local/bin 命令進入到客戶端所在目錄,
執行source ~/.bashrc
啟動:
客戶端:
手動啟動:(root許可權)
nohup multic_admin -R > /dev/null &
服務端:
啟動: (root許可權)
service multis_monitord start
停止:
客戶端:
手動停止:ps aux|grep multic_admin找到執行程序的pid, 然後kill pid
伺服器:
root許可權 service multis_monitord stop
檢視執行狀態:
service multis_monitord status
5. 使用案例
如上圖所示,ECS1為組播源,ECS2, ECS3和ECS4為組播成員,組播IP地址和埠分別為224.1.2.3:7134。此時ECS1上需要安裝執行組播服務端,ECS2,ECS3和ECS4分別安裝執行組播客戶端。操作步驟如下: