分佈式任務調度平臺的自動化部署

1、概述linux

一、自動化部署能簡化開發過程的代碼管理,讓開發人員把更多的時間專一於業務實現,
   簡化繁瑣的上線流程和操做步驟,作到項目的快速打包和部署,減小人爲操做中的失誤。

   二、分佈式任務調度平臺,XXL-JOB:美團點評員工許雪裏開發,
   其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。
   現已開放源代碼並接入多家公司線上產品線,開箱即用。
   源碼地址:https://github.com/xuxueli/xxl-job

2、本文簡介git

主要是利用成熟的CI部署工具Jenkins,結合開源的分佈式任務調度框架xxl-job做爲demo工程,快速搭建本身的持續集成項目,其餘項目能夠相似構建。

3、Jenkins部署和配置github

一、安裝
  1.1用特定版本的安裝包安裝
     安裝包下載頁:   https://pkg.jenkins.io/redhat-stable/
    (注意:會有一些安裝版本和jdk版本匹配的問題,通常CentOS 6.5 安裝版本jenkins-2.7.4-1.1.noarch.rpm是OK的)
  1.二、安裝最新版本:
         按照文檔來就沒問題: https://jenkins.io/doc/book/getting-started/installing/#unix-linux
  1.三、啓動和中止
      sudo service jenkins start/stop/restart
      sudo chkconfig jenkins on

二、全局配置tomcat

  • 2.1 全局配置:點擊系統管理,進入Global Tool Configuration
    clipboard.png安全

  • 2.2 配置經常使用環境變量
    clipboard.png
    注意的點:全部配置須要配置在全局環境變量裏面,讓系統全部用戶都能訪問到,好比說maven,不能配置在特定的用戶目錄下,不然後面jenkins用戶就沒法執行mvn命令,而報錯。
    jdk:
    clipboard.png服務器

    git:多線程

    clipboard.png

    maven:
    clipboard.png框架

三、 項目配置ssh

  • 3.一、新建一個項目maven

    點擊新建,新建一個自由風格的軟件項目

    clipboard.png

  • 3.二、項目源碼配置(使用git管理):

    首先須要安裝插件:
       系統管理-》管理插件,在可選插件裏找到這個,讓後直接安裝就能夠

    clipboard.png

  • 3.三、配置遠程SSH

    在系統管理-》系統設置裏,找到Publish over SSH

    clipboard.png

四、構建配置詳細:

一、 General配置項目名稱和簡介
    二、源碼管理配置git項目地址
    三、構建觸發器配置遠程構建腳本
    四、構建環境配置項目構建前須要執行的一些腳本
    五、構建,配置構建工具,好比maven打包,war包的上傳,執行tomcat服務啓動腳本
    六、構建後操做發佈,構建後的郵件發送等操做

4.一、簡介和配置

clipboard.png

4.二、 配置項目源碼地址和訪問密碼
clipboard.png

4.三、 配置Credentials
clipboard.png
4.四、構建環境
clipboard.png

4.五、構建 配置構建命令 (這裏的maven是前面全局環境變量中配置好的)
clipboard.png

添加構建後操做(須要前面安裝好遠程ssh插件才行)

clipboard.png

4.六、配置構建後操做

clipboard.png

其中:

Transfer SetSource files:表示要上傳的本地的war包及路徑,可到工做空間去看
Remove prefix:表示要上傳時要去除的文件夾,即只上傳war包
remote driectory:即表示執行時的路徑,至關於把war包上傳到這裏了
exec commad:要執行的命令,這裏能夠重命名jar包,啓動tomcat服務器

七、構建後操做:

clipboard.png

八、回到配置主頁,進行構建

clipboard.png

九、進入構建控制檯查看構建日誌,若是有錯誤,能夠直接查看到

clipboard.png

4、xxl-job的介紹

項目地址:
 https://github.com/xuxueli/xxl-job

概述:
XXL-JOB是一個輕量級分佈式任務調度框架,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。
現已開放源代碼並接入多家公司線上產品線,開箱即用。

特性:
- 一、簡單:支持經過Web頁面對任務進行CRUD操做,操做簡單,一分鐘上手;
- 二、動態:支持動態修改任務狀態、暫停/恢復任務,以及終止運行中任務,即時生效;
- 三、調度中心HA(中心式):調度採用中心式設計,「調度中心」基於集羣Quartz實現,可保證調度中心HA;
- 四、執行器HA(分佈式):任務分佈式執行,任務"執行器"支持集羣部署,可保證任務執行HA;
- 五、任務Failover:執行器集羣部署時,任務路由策略選擇"故障轉移"狀況下調度失敗時將會平滑切換執行器進行Failover;
- 六、一致性:「調度中心」經過DB鎖保證集羣分佈式調度的一致性, 一次任務調度只會觸發一次執行;
- 七、自定義任務參數:支持在線配置調度任務入參,即時生效;
- 八、調度線程池:調度系統多線程觸發調度運行,確保調度精確執行,不被堵塞;
- 九、彈性擴容縮容:一旦有新執行器機器上線或者下線,下次調度時將會從新分配任務;
- 十、郵件報警:任務失敗時支持郵件報警,支持配置多郵件地址羣發報警郵件;
- 十一、狀態監控:支持實時監控任務進度;
- 十二、Rolling執行日誌:支持在線查看調度結果,而且支持以Rolling方式實時查看執行器輸出的完整的執行日誌;
- 1三、GLUE:提供Web IDE,支持在線開發任務邏輯代碼,動態發佈,實時編譯生效,省略部署上線的過程。支持30個版本的歷史版本回溯。
- 1四、數據加密:調度中心和執行器之間的通信進行數據加密,提高調度信息安全性;
- 1五、任務依賴:支持配置子任務依賴,當父任務執行結束且執行成功後將會主動觸發一次子任務的執行, 多個子任務用逗號分隔;
- 1六、推送maven中央倉庫: 將會把最新穩定版推送到maven中央倉庫, 方便用戶接入和使用;
- 1七、任務註冊: 執行器會週期性自動註冊任務, 調度中心將會自動發現註冊的任務並觸發執行。同時,也支持手動錄入執行器地址;
- 1八、路由策略:執行器集羣部署時提供豐富的路由策略,包括:第一個、最後一個、輪詢、隨機、一致性HASH、最不常用、最近最久未使用、故障轉移;
- 1九、運行報表:支持實時查看運行數據,如任務數量、調度次數、執行器數量等;以及調度報表,如調度日期分佈圖,調度成功分佈圖等;
- 20、腳本任務:支持以GLUE模式開發和運行腳本任務,包括Shell、Python等類型腳本;
- 2一、阻塞處理策略:調度過於密集執行器來不及處理時的處理策略,策略包括:單機串行(默認)、丟棄後續調度、覆蓋以前調度;
- 2二、失敗處理策略;調度失敗時的處理策略,策略包括:失敗告警(默認)、失敗重試;
相關文章
相關標籤/搜索