Linux
rsync 伺服器端限制頻寬/連接
在 VOIP 應用程序中,我每天有多達 3000
rsync
個來自 linux 伺服器的客戶端音頻文件,伺服器放置在數據中心(10Mbps 輸入/輸出),伺服器作為執行 FreeSWITCH 的 VOIP sip 伺服器工作(低 ping 延遲應該得到保證。)因此,我希望對 rsync 進行伺服器端控制,其中控制:
- 限制總出站頻寬。
- 限制連接總數。(在最大連接數時拒絕客戶端,並讓它在特定時間範圍後重試。)
- 可選:列出/終止單個連接。
通常我會使用 ssh + rsync + pem_keys 和一些額外的選項,但上述要求通過簡單的命令行是不可行的。誰能給我一些方向。或顯示一些腳本/工具?我也可能會整合它們並在 github 上發布。謝謝!
如果我處於您的情況,我會繼續使用庫存工具,純粹是因為您可以始終使它們保持最新並獲得所有最新的錯誤修復/功能,而無需使用自己的程式碼對其進行修補。
結果,我將通過以下方式實現您想要的:
- 用於
tc
流量整形 - OpenVZ有一篇很好的文章。- 使用
iptables
- Cyberciti來拯救這個。您將reject
新連接超過門檻值,因此您需要包裝rsync
客戶端以確保它在快速失敗時重試。- 實現這一點的最簡單方法可能是將所有文件放在一個組下,並將一組使用者作為該組的一部分。然後給每個客戶端他們自己的使用者連接。從這裡開始,殺死連接的客戶端的 PID 應該相對簡單(我相信還有其他方法可以唯一地辨識使用者,這只是一個建議。)