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