使用Artifactory集群作為文件共享中心

一、背景和痛點

大企業內部,跨團隊,跨地域,導致文件共享困難

如果不使用Artifactory,如何實現跨數據中心的文件共享呢?

  • 掛載NFS文件系統,開通跨數據中心的rsync/sftp協議
  • 自研解決方案,通過REST API或者CLI方式, 例如,雅虎的dist工具
  • 私有或者公有的雲儲存方案
  • 利用SCM版本控制系統

- 對於編譯構建效率影響很大

NFS和雲儲存的方式對網絡要求很高,穩定性得不到保證。自研的方式需要投入很多人力物力,利用SCM版本控制工具對二進制文件支持不好,尤其是大文件,還有可能會對構建效率造成影響。可以看到上面幾種方式穩定性不能保證,而且需要額外的投入。


二、 Artifactory用作文件共享中心

那麼,Artifactory 如何解決這個問題:

首先,雖然Artifactory被當做管理全語言二進制文件的製品倉庫。Artifactory通常被集成到構建流程中,這樣構建工件可以方便的部署到不同環境或者用於後續Docker鏡像和亞馬遜系統鏡像的構建。

然而,Artifactory首先是一個支持元數據的文件管理系統,可以管理任何類型文件以及相關數據,利用其可以在集群之間同步複製的功能,也可以被用作跨數據中心分發不同類型文件的通用平臺。

架構圖

使用Artifactory集群作為文件共享中心

使用Artifactory集群作為文件共享中心

只允許在指定的一個Artifactory集群上傳,然後同步到其它生產環境。例如: IDC1,IDC2,AWS這幾個環境不允許手動上傳,只允許從Corp環境同步,確保數據的來源只有一個,保證數據的一致性。


搭建步驟

對於Artifactory用戶來說,只需要創建相應對的共享倉庫,然後開啟同步功能即可,不需要增加額外的投入。而且同步功能對網絡要求不高。

開啟Artifactory的同步功能:


上傳下載文件

例如, 將sharefile.tgz上傳到my-local-repo倉庫


命令行方式:

<code>jfrog rt u  sharefile.tgz  my-local-repo/<code>
使用Artifactory集群作為文件共享中心

REST API方式:

<code>curl -H "X-JFrog-Art-Api: ${API_KEY}" -X PUT "${artURL}/ my-local-repo/sharefile.tgz " -T sharefile.tgz
/<code>
使用Artifactory集群作為文件共享中心

下載sharefile.tgz 文件


命令行方式:

<code>jfrog rt dl my-local-repo/sharefile.tgz/<code>
使用Artifactory集群作為文件共享中心

REST API方式:

<code>curl -H "X-JFrog-Art-Api: ${API_KEY}" -X GET "${artURL}/my-local-repo/ sharefile.tgz " -o sharefile.tgz/<code>
使用Artifactory集群作為文件共享中心

這樣即可進行文件的上傳和下載,一旦上傳成功,會自動觸發同步機制,推送到遠端的 Artifactory Server 或者公有云的 Artifactory Server。


三、 收益

使用Artifactory的好處

Artifactory已經是CI/CD流程的一部分,可以方便的集成

對於跨數據中心的文件分發只需要開啟同步功能

  • 對網絡要求不高
  • 具備友好的界面供用戶使用
  • 支持REST API方式上傳和下載文件,方便實現自動化
  • 統一多數據中心的文件來源,確保文件一致

使用Artifactory可以解決的問題

  • 管理第三方工具和包

- 可以指定特殊版本

- 解決網絡訪問受限的情況

  • 作為DevOps流程中配置文件和資源文件管理的中心
  • 儲存不適合在代碼版本控制系統中管理的文件

- 大文件

- 二進制文件

  • 儲存數據庫備份和應用目錄的快照

- 可以作為災備系統的一部分


更多精彩內容可以專注我們的在線課堂



分享到:


相關文章: