分類
發燒車訊

MSP、CMP 面對“多雲”最大挑戰是:網絡

  新的基於雲的應用程序和 IT 服務迅猛發展,導致市場上的多樣性與日俱增,而多雲早已成為現實。此外,對連接和帶寬的巨大需求常常將現有的網絡基礎設施和運營推向極限。一方面,這給服務提供商帶來了重大挑戰,它們需要及時跟上加快發展的步伐。另一方面,這也提供了獲得競爭優勢的機會。

  然而,服務提供商需要使用業界最佳的創新的業務增強解決方案,以便更靈活地應對市場需求,同時提高效率和安全性。眼下,基於軟件的方法發揮重要作用,讓企業可以基於智能網絡以及分析工具和高度自動化的流程帶來的更佳可見性,迅速高效地應對新的需求,併為複雜、廣泛分佈的基礎設施提供連接性、安全性和可管理性。

  正是在這種背景下,瞻博網絡提供 Tungsten Fabric 開源產品和 Contrail 商業版解決方案,擁有 SDN 功能的管理和控制軟件,以簡化服務交付。

  Contrail 的起源

  早在 2012 年,瞻博網絡收購了 Contrail Systems,在軟件定義網絡(SDN)方面邁出了一大步。Contrail 在 SDN 熱潮的早期階段顛覆了市場,因為它引入了網絡即服務理念,通過面向虛擬環境和物理環境的單一管理平台加以抽取。

  收購 Contrail Systems 一年後的 2013 年底,瞻博網絡將其 Contrail Networking 軟件作為官方商業產品來提供,同時還提供全面的商業支持服務。

  與此同時,瞻博還開源了 Contrail 技術,採用 Apache 2.0 許可證的這項技術名為 OpenContrail。將 Contrail 技術回饋開源社區讓開發人員有機會為該項目做出貢獻,並使服務提供商和企業能夠根據自身的具體要求靈活地調整 Contrail。

  Tungsten Fabric——OpenContrail 遷移到 Linux 基金會

  2018 年 3 月,瞻博網絡向前又邁出了一步,將 OpenContrail(開源項目)遷移到了 Linux 基金會,使其更加“開放”。此舉對該項目來說是根本性變化,因為這意味着 Linux 基金會現在是所有者。在這種背景下,這個開源項目有了一個新名稱:Tungsten Fabric,這還有助於更好地區分開源項目和瞻博網絡的商業產品線。

  在 2019 年 9 月,雲頭條與瞻博網絡中國區企業事業部總經理恭弘=叶 恭弘勇、瞻博網絡中國區創新和架構部架構師李錦勛進行了深入的溝通,探討 Tungsten Fabric。

  面對 IT 行業變化和多雲市場的需求,Tungsten Fabric 的價值是什麼?瞻博網絡中國區企業事業部總經理恭弘=叶 恭弘勇表示:

“在多雲時代,我們看到了眾多合作夥伴的轉型,他們從傳統集成商向新一代集成商(MSP)轉型,最複雜、最難做的是解決雲管平台(CMP)的網絡問題。 這樣的話,正好瞻博網絡在這方面積累了很多經驗。 他們選擇了 Tungsten Fabric 開源解決方案,甚至從開源解決方案認識到了我們的商業產品,並且購買。對於多雲市場需求來講,我們認為它是相當重要的一個組件,而且贏得用戶好評。“

  對此雲頭條提了五個問題,以下為詳細回復,供各位參考~

  Tungsten Fabric 為 CMP、MSP 解決了什麼問題?

  CMP 是 MSP 的核心業務產品,也帶給 MSP 最核心的競爭力。而 CMP 通常體系架構複雜,內容龐雜。在 CMP 的基礎設施管理模塊中,包括了計算、存儲和網絡等部分。相對而言,這幾個部分中最為複雜的是網絡部分。因為,計算和存儲的技術和協議較為統一,頭部廠商相對集中,並且存儲和計算資源在企業長期發展的產品更新過程中,與業務相對獨立。而網絡技術歷史悠久,協議眾多,分支龐雜,並且在實際業務中,與業務緊耦合,技術對業務的運行影響巨大。因此,CMP 中,關於網絡部分的解決方案也最為複雜。Tungsten Fabric 的出現,則可以減輕 MSP 對於網絡部分的研發技術投入,使 CMP 可以集中精力做好業務上層部分,關注業務的服務管理能力。利用 Tungsten Fabric 的開放性,CMP 可以較為容易地實現多廠家的網絡設備的管理和整合。

  簡而言之,Tungsten Fabric 在技術上和商業上為 CMP 和 MSP 解決的問題如下。

  技術:

  • 利用 TF 強大的網絡業務能力,改善 CMP 的網絡業務性能和體驗
  • 利用 TF 支持任意的 Underlay,使 CMP 可以適應任何網絡環境,無需強迫客戶在進行業務雲化或者雲管理時變更網絡的設計,加速了 CMP 的實施。
  • 利用 TF 的開放性為 CMP 的網絡管理帶來開放性,使 CMP 支持多廠家網絡資源管理
  • 利用 TF 提供豐富的網絡安全功能,不僅僅實現 CMP 平台上多租戶的業務隔離,還可以利用 NFV 功能實現傳統網絡和虛擬化網絡之間的安全隔離

  商業:

  • 降低 CMP 的開發成本,利用社區所提供的技術和資源實現快速的 CMP 網絡管理部分開發
  • 加速 CMP 的研發速度,降低 MSP 在網絡層研發投入,使 MSP 可以更多投入到業務管理層
  • 利用 TF 帶來的開放性和開源屬性,增強 CMP 在業務上對客戶的吸引力

  Tungsten Fabric 是瞻博網絡平台與設備解耦的重要一步。與 Tungsten Fabric 的開放和開源相對,市場上目前的其他網絡廠商提供或者參与的 CMP 平台,由於網絡功能部分要深度綁定廠商自己的網絡產品,無法解耦,導致整個 CMP 從開放系統轉換為封閉系統,這種網絡層的封閉的生態鏈對客戶形成綁定,消除客戶的自由選擇機會,實現最大化廠商利益。這類 CMP 通常不提供或者僅提供一小部分接口給第三方開發者,從而使其他 MSP 難以將其集成到自己的 CMP 中,難以形成開放的生態和對第三方產品的支持。

  客戶一旦選擇了這樣的 CMP 或者組件,則會被封閉到廠商自己把控的圈子內,未來難以離開廠商的控制範圍。從這個層面向上看,則可以視為是客戶的自主可控策略的失敗。對於客戶而言,自主可控的本質是可以訪問源代碼、具有自主知識產權和可以獨立服務和開發,一旦選擇了這樣的封閉系統,客戶將失去對自有雲架構的把控,完全受制於人。而 Tungsten Fabric 則通過開源實現了平台和設備的解耦,帶給開放者和客戶自由,使客戶真正可以實現對雲架構的自主可控,這正是 Tungsten Fabric 真正的魅力。

  瞻博網絡一直在倡導網絡設備的軟硬件解耦,近期瞻博網絡在自己的交換機產品線逐步開始支持開放網絡操作系統 SONiC,客戶可以從瞻博網絡購買硬件平台來運行 SONiC 系統。同時,瞻博網絡為 SONiC 系統和服務器環境提供了基於容器技術的商業 cRPD 路由協議棧,實現了 Junos 路由協議棧的跨平台部署。通過這些手段,瞻博網絡提供全棧解耦,從網絡設備的軟硬件解耦,到整個網絡層通過 TF 來實現全面解耦。

  Tungsten Fabric 僅僅是瞻博網絡構建全面開放的多雲架構解決方案的一部分。瞻博網絡的目標是提供多雲環境下,最開放、最強大和最全面的軟件定義網絡解決方案,消除客戶在轉向多雲業務的過程中的疑慮,實現用戶選擇的簡化,實現“精研至簡”的願景。

  Tungsten Fabric 與同類的開源解決方案 OpenDayLight 的區別 ?

  從本質上來說都是開源系統,OpenDayLight 是一個開放的模塊化平台架構,不是指具體某一款產品,一般是基於 OpenDayLight 平台再去開放需要的功能,OpenDayLight 聚焦在網絡和服務等比較寬泛的層面。Tungsten Fabric 則是從網絡一直延伸到業務層面,Tungsten Fabric 更加專註於為複雜的多棧多雲網絡提供統一的網絡和安全架構的解決方案。

  相比 OpenDayLight,Tungsten Fabric 明顯區別如下:

  • 具有廣泛的支持性,支持使用不同編排平台(Kubernetes, Mesos/SMACK, OpenShift, OpenStackand VMware 等)編排不同類型的工作負載(虛擬機、容器、裸機),提供了一致的網絡功能和安全策略。
  • 統一性,具有插件支持 CNI、Neutron 或者 vSphere
  • 具備豐富的網絡和安全功能,改變了原有 SDN 注重軟件和編排,而忽視網絡功能和特性的狀態。在功能上支持 EVPN、VXLAN、ECMP、狀態防火牆、七層負載均衡、BGPaaS,服務鏈、應用層策略、基於標籤的終端分組、流量可視化、下一代防火牆卸載、IPSec 等。
  • 提供高性能的網絡能力。Tungsten Fabric 具有專門優化的 vRouter,具備與硬件路由器相似的數據包轉發機制,提供無與倫比的高轉發性能,滿足現代超大規模雲網絡需求。
  • 可擴展能力,利用分佈式架構支持超大規模數節點的部署,支持雲網絡無限延展海量的 VN 網絡。

  Tungsten Fabric(開源版) 與 CONTRAIL (商業版)的區別?

  Tungsten Fabric 和 Contrail 共享代碼,在網絡和安全方面功能是一致的。Tungsten Fabric 缺乏 CEM 中的 AppFormix 套件。AppFormix 提供服務器、中間件、Openstack 等軟件的性能監控功能。此外,Juniper 為 Contrail 提供專業的軟件服務,而 Tungsten Fabric 只能通過社區獲得服務和支持。

  選擇 Tungsten Fabric 具體案例

  TF/Contrail 推出以來,在全球得到了廣泛的關注和使用。從客戶覆蓋範圍來說,客戶群包括以下幾類:

  • 電信運營商:AT&T、Verizon、NTTCom 等。
  • 雲業務供應商:XON-Wingu、TCP Cloud 等。
  • 大型企業:eBay、Symantec、OrangeBusiness Service、Riot Games、中國某大型金融客戶等。

  這些企業的主要應用場景可以分為以下幾種:

  典型客戶:workday

  • 為 SaaS 提供大規模的網絡安全支持
  • 需求:清晰的租戶隔離;高性能的 OpenStack Neutron 替代;為任意的 Underlay 架構提供 Overlay 業務;不進行廠商鎖定;支持多種部署模式下的 Overlay
  • TF/Contrail 的價值:安全的多租戶隔離;超大規模網絡支持;標準和成熟的協議;支持異構計算環境

  典型客戶:Riot Games

  • 為容器化的 SaaS 提供多租戶雲環境
  • 需求:支持快速發展的雲業務;支持多租戶自服務的開發測試雲;提供容器化網絡的安全、多租戶支持;與客戶定製的編排系統集成;支持多雲環境(本地化和 AWS);支持服務鏈
  • TF/Contrail 的價值:支持容器化網絡、支持多雲、可以作為統一的虛擬化網絡和安全層;;與定製的編排系統集成

  典型客戶:TCP Cloud

  • 為 IaaS 環境的私有雲提供高性能支撐
  • 需求:提供對任意 Underlay 網絡的支持;不進行廠商鎖定;敏捷和靈活;支持對 overlay 和 underlay 的連接;對租戶清晰地隔離
  • TF/Contrail 的價值:標準和成熟度的協議;支持對傳統和虛擬化的環境的連接;大規模改善現有的網關的性能;安全的多租戶支持

  典型客戶:賽門鐵克

  • 敏捷的 IaaS 雲支持
  • 需求:敏捷的 DevOps 環境;降低人工干預/避免錯誤;提供任意 Underlay 下的 Overlay;清晰的租戶隔離
  • TF/Contrail 的價值:提供按需橫向擴展的網絡服務;提供自動化的網絡部署;大規模提高現有網關的 ROI;安全的多租戶隔離

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

USB CONNECTOR 掌控什麼技術要點? 帶您認識其相關發展及效能

※高價3c回收,收購空拍機,收購鏡頭,收購 MACBOOK-更多收購平台討論專區

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

收購3c瘋!各款手機、筆電、相機、平板,歡迎來詢價!

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

分類
發燒車訊

物聯網架構成長之路(47)-利用GitLab實現CI持續集成

0.前言
  前段時間,考慮到要練習部署一套CI/CD的系統。一開始考慮到Jenkins,隨着這两天的了解,發現最新版的GitLab已經提供有CI/CD集成了。所以本次博客,乾脆一步到位,直接用GitLab裏面的CI/CD模塊。Jenkins可能需要更高級的應用場合。經過測試GitLab自帶的功能完全符合我的需求。

1. 安裝GitLab和GitLab-CI(gitlab-runner)
  英語比較好的,可以直接看官方文檔。https://docs.gitlab.com/omnibus/docker/#install-gitlab-using-docker-compose https://docs.gitlab.com/ee/ci/quick_start/README.html
  下面提供我使用的 docker-compose.yml

 1 version: '3'
 2 services:
 3     gitlab:
 4         image: twang2218/gitlab-ce-zh:latest
 5         #image: gitlab/gitlab-ce:rc
 6         restart: always
 7         hostname: '172.16.23.203'
 8         environment:
 9             GITLAB_OMNIBUS_CONFIG: |
10                 external_url 'http://172.16.23.203:8929'
11                 gitlab_rails["time_zone"] = "Asia/Shanghai"
12         ports:
13             - 8929:8929
14             - 1080:80
15             - 1443:443
16             - 1022:22
17         volumes:
18             - /root/workspace/docker/gitlab/1/config:/etc/gitlab
19             - /root/workspace/docker/gitlab/1/logs:/var/log/gitlab
20             - /root/workspace/docker/gitlab/1/data:/var/opt/gitlab
21     gitlab-runner:
22         image: gitlab/gitlab-runner:latest
23         restart: always
24         volumes:
25             - /root/workspace/docker/gitlab/2/config:/etc/gitlab-runner
26             - /var/run/docker.sock:/var/run/docker.sock

  執行docker-compose up -d 就運行起來,幾點需要說明的
    1. gitlab的image,可以選擇中文版或者英文版
    2. hostname 這裏指定本機IP地址
    3. gitlab環境變量,external_url表示提供訪問的IP和端口,時區配置上海
    4. 端口映射,默認是80端口,由於我上面配置了8929,所以映射8929到Host主機
    5. volumes 配置持久化數據
    6. 這裏的/var/run/docker.sock 要映射到主機,因為會用到主機的一些資源,同時還會在docker裏面安裝docker
  下面是運行效果,第一次運行會比較久,因為要拉取鏡像和初始化GitLab

2. 登錄使用GitLab
  首次登錄,設置密碼。 登錄默認用戶名是root
  利用模版,新建一個Spring項目

  利用IDE,或者其他工具,或者直接在GitLab修改代碼

3. 配置CI/CD,把機器(gitlab-runner)註冊到GitLab中
  可以在項目配置CI/CD機器,也可以在個人所有項目下配置,也可以由管理員配置所有項目下CI/CD機器。原理和流程都是一樣的,只是比Jenkins更加細粒度控制而已。

  進入gitlab-runner的Docker,執行初始化命令 gitlab-ci-multi-runner register,完整命令如下:

1 sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register

  需要錄入的信息,安裝上圖進行,填寫,後續還可以修改。

  如果需要修改,可以修改之前volumes配置的路徑下, config/config.toml

 

 1 concurrent = 1
 2 check_interval = 0
 3 
 4 [session_server]
 5   session_timeout = 1800
 6 
 7 [[runners]]
 8   name = "myRunner"
 9   url = "http://172.16.23.203:8929/"
10   token = "96beefdaa54832b0c8369ffa3811c9"
11   executor = "docker"
12   [runners.custom_build_dir]
13   [runners.docker]
14     tls_verify = false
15     image = "docker:latest"
16     privileged = true
17     disable_entrypoint_overwrite = false
18     oom_kill_disable = false
19     disable_cache = false
20     volumes = ["/cache", "/root/.m2:/root/.m2", "/var/run/docker.sock:/var/run/docker.sock"]
21     shm_size = 0
22   [runners.cache]
23     [runners.cache.s3]
24     [runners.cache.gcs]

 

  上面這個是配置文件,裏面有幾個注意點
    1. privileged 這裏要配置 true,因為要在docker裏面安裝docker
    2. /root/.m2 這個是配置maven的倉庫使用宿主主機的緩存,這樣就不用每次CI都要下載依賴
    3. /var/run/docker.sock 這個也要配置,在構建dockerfile的時候會用到
  還有一個需要配置的就是,這個Runner需要設置tag,這個是標識Runner的名稱。在.gitlab-ci.yml中會用到

4. 配置CI/CD
  默認GitLab是啟用該功能的,根目錄配置新增 .gitlab-ci.yml 文件,然後每次git push,都會觸發CI持續集成。當然可以在yml配置,在主線master觸發。
  來個簡單的配置,測試一下

 1 image: maven:3-jdk-8
 2 cache:
 3     paths:
 4         - .m2/repository
 5 test:
 6     stage: test
 7     script:
 8         - mvn package
 9     tags:
10         - tag

  上面這個配置,寫到.gitlab-ci.yml然後提交到repo,我們提交該文件到gitlab對應項目上去。

1 git add .gitlab-ci.yml
2 git commit -m "Add .gitlab-ci.yml"
3 git push origin master

  如果嫌慢,pom.xml 可以換個阿里源

 1         <repository>
 2             <id>maven-ali</id>
 3             <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 4             <releases>
 5                 <enabled>true</enabled>
 6             </releases>
 7             <snapshots>
 8                 <enabled>true</enabled>
 9                 <updatePolicy>always</updatePolicy>
10                 <checksumPolicy>fail</checksumPolicy>
11             </snapshots>
12         </repository>

  一提交,就會觸發自動構建

  可以看到整個構建過程,如果出現錯誤,也是到這個日誌裏面排查問題。

 

 

5. 測試、打包、發布
  這一步,我們實現一個簡單的測試、打包、發布
5.1 增加 Dockerfile

1 FROM openjdk:8-jdk-alpine
2 VOLUME /tmp
3 COPY  target/demo-0.0.1-SNAPSHOT.jar app.jar
4 ENV PORT 5000
5 EXPOSE $PORT
6 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dserver.port=${PORT}","-jar","/app.jar"]

5.2 修改 .gitlab-ci.yml

 1 image: maven:3-jdk-8
 2 
 3 variables:
 4     DOCKER_TAG: test/demo-spring:0.1
 5 
 6 cache:
 7     paths:
 8         - .m2/repository
 9 
10 stages:
11     - test
12     - package
13     - deploy
14 
15 test:
16     stage: test
17     tags:
18         - tag
19     script:
20         - mvn test
21 
22 package:
23     stage: package
24     tags:
25         - tag
26     script:
27         - mvn clean package -Dmaven.test.skip=true
28     artifacts:
29         paths:
30             - target/*.jar
31 
32 deploy:
33     image: docker:latest
34     stage: deploy
35     services:
36         - docker:dind
37     tags:
38         - tag
39     script:
40         - docker version 
41         - docker build -t $DOCKER_TAG .
42         - docker rm -f test || true
43         - docker run -d --name test -p 5000:5000 $DOCKER_TAG

  那個artifacts.paths 配置,提交target目錄下的文件到下一個流水線,因為不同流水線,由於是基於Docker,所以每一步都是隔離的。同時,上傳的附件還可以在構建成功后,在流水線pipelines界面進行下載。每一步的image都是可以指定的,那個tags也是可以指定的。可以提交到不同的機器進行構建。
  上面一共就三步流程,先test(測試),然後package(打包編譯),最後deploy(發布測試)。前兩個比較好理解,就是maven的基本命令。最後那個deploy就是利用docker裏面的docker來進行打包成docker,然後運行起來,作為測試發布。
  更新代碼.gitlab-ci.yml,然後提交,觸發持續集成。

  查看構建日誌

  查看宿主機鏡像和運行狀態

  查看瀏覽器,已經發布到測試環境了

5.3 釘釘通知

 1 image: maven:3-jdk-8
 2 
 3 variables:
 4     DOCKER_TAG: test/demo-spring:0.1
 5 
 6 cache:
 7     paths:
 8         - .m2/repository
 9 
10 stages:
11     - test
12     - package
13     - deploy
14     - notify
15 
16 test:
17     stage: test
18     tags:
19         - tag
20     script:
21         - mvn test
22 
23 package:
24     stage: package
25     tags:
26         - tag
27     script:
28         - mvn clean package -Dmaven.test.skip=true
29     artifacts:
30         paths:
31             - target/*.jar
32 
33 deploy:
34     image: docker:latest
35     stage: deploy
36     services:
37         - docker:dind
38     tags:
39         - tag
40     script:
41         - docker version 
42         - docker build -t $DOCKER_TAG .
43         - docker rm -f test || true
44         - docker run -d --name test -p 5000:5000 $DOCKER_TAG
45 
46 notify:
47     image: appropriate/curl:latest
48     stage: notify
49     tags:
50         - tag
51     script: "curl 'https://oapi.dingtalk.com/robot/send?access_token=d6c15304c1***************************************' -H 'Content-Type: application/json' -d '{\"msgtype\": \"text\", \"text\": {\"content\": \"功能已更新部署至測試環境\"}}' "

  有了這個通知,就可以做很多事情了,寫個腳本,封裝成一個Docker 鏡像,可以發送釘釘,發送郵件,可以對接到第三方系統等。

  更多高級應用,如集成之前了解的Harbor,Rancher。使整個系統更加強大,更加智能化。

 

參考資料
  
  
  
  
  

本文地址:
本系列目錄:
個人主頁:

volumes

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

USB CONNECTOR 掌控什麼技術要點? 帶您認識其相關發展及效能

※高價3c回收,收購空拍機,收購鏡頭,收購 MACBOOK-更多收購平台討論專區

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

收購3c瘋!各款手機、筆電、相機、平板,歡迎來詢價!

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選