US3SYNC 是一款將不同源的數據同步到 S3 的遷移工具。通過將 US3SYNC 部署在本地或者云主機中,可以便捷地從本地或者其他云環(huán)境中將數據遷移到 S3 存儲空間。US3SYNC工具可以創(chuàng)建兩種模式的任務:
普通模式: 普通同步任務可以將源端某個指定前綴或文件夾的文件批量的同步到US3上。
fetch模式: fetch模式的同步任務是通過POST請求(描述需要同步的文件URL和目的位置)將文件同步到指定的位置上??梢灾该魑募匠晒褪『蟮幕卣{接口,US3SYNC會在同步任務完成后,發(fā)送相應的通知。
普通任務工作原理
圖中master節(jié)點與worker節(jié)點功能:
master節(jié)點:
單點部署,負責遷移任務的管理。其主要邏輯是從源端拉取文件列表,然后將需要遷移的文件派發(fā)給worker進程遷移。
worker節(jié)點:
支持節(jié)點擴展,負責遷移文件。其主要邏輯是從源端下載文件,然后將文件上傳到目的端。
master節(jié)點與worker節(jié)點可以部署在同一臺機器,也可以部署在多臺機器上,用戶可以根據需要自行擴展worker節(jié)點,下面分別介紹:
部署在同一臺機器:
master節(jié)點和worker節(jié)點通過啟動時配置的內部通信監(jiān)聽地址進行通信。用戶需要確保配置給worker節(jié)點的路徑是單獨的路徑,不可與master路徑以及其他worker路徑重復。
部署在不同機器:
master節(jié)點和worker節(jié)點通過啟動時配置的內部通信監(jiān)聽地址進行通信,確保該地址在worker機器上可以訪問。用戶需要確保配置給worker節(jié)點的路徑是單獨的路徑,不可與master路徑以及其他worker路徑重復。
Fetch任務工作原理
Fetch類型的任務跟普通任務工作原理大致類似,不同的是同步任務的源端需要發(fā)送POST請求來指定,而不是根據配置的源端的位置自動拉取。
POST請求語法
POST /fetch/ HTTP 1.1Authorization: AuthContent-Type:application/jsonCopy
Authorization為必選項,content-type, date等都是可選項
例如: Authorization: UCloud xxxx-xxxx-xxxx-xxxx-xxxx:xxxxxxxxxxxxx 計算方法偽碼如下:
method := "POST" md5 := xxxxxxcontentType := xxxxxxdate := xxxxxprivateKey = xxxxx-xxxx-xxxxx-xxxxpublicKey = xxxx-xxxx-xxxx-xxxxstrToSign = method + "\n" + md5 + "\n" + contentType + "\n" + date + "\n" signature = HmacSHA1(strToSign, privateKey) signature = Base64(signature) Authorization: "UCloud " + publicKey + ":" + signatureCopyErrorSuccess
名稱 | 描述 | 類型 | 必選 |
---|---|---|---|
Url | 源站資源地址,需要url encode | String | 是 |
Key | 桶內文件路徑,不需要url encode | String | 是 |
Bucket | 桶名 | String | 是 |
JobId | Fetch任務Id | String | 是 |
SuccessCallbackUrl | 回源拉取成功的回調地址 | String | 否 |
FailureCallbackUrl | 回源拉取失敗的回調地址 | String | 否 |
此處的JobId可以在界面中獲取
名稱 | 描述 | 類型 |
---|---|---|
RetCode | 請求狀態(tài)碼 | Int |
ErrMsg | 請求信息 | String |
TaskId | 任務的唯一id | String |
您可以在請求中指定任務完成后的回調地址,US3SYNC會依照任務執(zhí)行結果給相應的地址放松POST請求,請求內容示例如下:
注:暫不支持源端為歸檔類型的文件遷移到 S3。
當前版本:1.10.4
運行環(huán)境:
Linux:
CentOS 7.0 及以上 (可通過cat /etc/redhat-release查看)
Ubuntu 16.04 及以上 (可通過cat /etc/issue查看)
US3SYNC 依賴 telnet,expect,rsync 命令,確保預裝這些命令,使用 yum 源做包管理可以使用以下命令安裝:
yum install -y telnet expect rsyncCopyErrorSuccess
下載并解壓
wget -O US3SYNC.tgz "https://ufile-release.cn-bj.ufileos.com/US3SYNC/v1.10.4/US3SYNC.tgz"tar xzf US3SYNC.tgzcd ./US3SYNCCopyErrorSuccess
啟動master服務
./console.sh start請設置緩存服務監(jiān)聽端口[9000]:請設置緩存服務密碼[user-passwd]:# 云主機一般綁定EIP,建議ip地址使用0.0.0.0請設置web 服務監(jiān)聽地址[0.0.0.0:443]:# 內部通信地址不提供外網服務,建議ip地址使用機器內網ip請設置內部通信監(jiān)聽地址[x.x.x.x:8080]:請設置報錯重試次數[10]:請設置web 登錄使用的用戶名[root]: 請設置web 登錄使用的密碼[passwd]: US3SYNC start success!# 查看master服務./console.sh show# 結束master服務./console.sh stop# 驗證# 查看進程是否正常啟動./console.sh showCopyErrorSuccess
添加worker節(jié)點
服務啟動后,在瀏覽器中打開:https://<web服務監(jiān)聽IP>:<web服務監(jiān)聽端口>/
注:使用云主機部署遷移服務時,這里需要使用EIP,而不是0.0.0.0。
頁面登錄,使用啟動時設置的用戶名和密碼。
添加工作節(jié)點,參考 創(chuàng)建節(jié)點界面說明,需要為每個節(jié)點提供唯一工作路徑。 每個工作節(jié)點需要提供唯一工作路徑,如果路徑不存在會自動創(chuàng)建對應目錄。
注:建議使用內網ip。