Apollo配置中心 1.1.2

問題

由於最近公司要弄灰度發佈,所以需要添加一套Apollo配置,默認是可以管理 dev, fat, uat, pro四套環境,但是我們想自定義一下環境,所以就嘗試一下自定義環境,需要自己修改源碼然後自己編譯打包

如果默認的四套環境能夠滿足自己需求,就可以直接使用官網提供的包,我們只需修改數據庫配置和環境信息即可使用

下載地址:https://github.com/ctripcorp/apollo/releases(自己定製的不需要下載)

使用目前最新版本 apollo-1.1.2

環境準備

  1. Java環境,JDK1.8或者以上(剛需)
  2. Mysql數據庫,版本5.6.5以上(剛需)
  3. 下載Apollo源碼:https://github.com/ctripcorp/apollo(自己定製的需要下載)

數據庫準備

執行SQL語句,創建數據庫

(portal庫只需要創建一個,因爲一個portal可以管理多個config,config數據庫需要建立多個,因爲一套環境需要一個獨立的數據庫,所以創建config庫的時候,要去腳本修改數據庫名稱,圖2是建好之後的數據庫)

修改數據庫配置

  1. 修改 portal 庫的 ServerConfig 表,默認只管理 dev,可配置多套環境,逗號隔開
  2. 修改 config 庫的 ServerConfig 表,修改端口號,由於默認是8080,但是我需要在一臺機器上部署多個config,所以修改端口號避免衝突,也便於管理(此處演示的是 dev,是系統默認自帶的環境dev,uat,fat,pro之一,所以只演示一個)
  3. 修改自定義環境的 config 庫的 ServerConfig 表,修改和上面操作一樣

修改源碼(自己定製的需要,不定製的可忽略)

修改的時候最好導入到 idea 裏面操作,這樣會很方便,而且還便於後續測試,也便於看源碼

  1. 假設需要添加的環境名稱叫 beta
  2. 修改com.ctrip.framework.apollo.core.enums.Env類,在其中加入BETA枚舉:
  3. 修改com.ctrip.framework.apollo.core.enums.EnvUtils類,在其中加入BETA枚舉的轉換邏輯:
  4. 修改apollo-env.properties,增加 beta.meta 佔位符:
  5. 修改com.ctrip.framework.apollo.core.internals.LegacyMetaServerProvider類,增加讀取BETA環境的meta server地址邏輯:

修改打包腳本(自己定製的需要,不定製的可忽略)

此處去除了 config 的數據庫連接配置,因爲不同環境對應的數據庫不同,所以打包後修改配置文件即可

開始打包(自己定製的需要,不定製的可忽略)

由於第一次編譯打包會下載很多文件,所以會比較慢,建議連接 阿里的中央倉庫,速度會快很多,在mirrors節點下添加

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror> 

修改好配置之後,雙擊 build.bat 開始打包,等待幾分鐘,控制檯最後會提示打包完成

然後找到 admin、config、portal 對應的.zip包,然後再解壓,修改配置,再上傳到服務器,就可以部署我們的 apollo 服務了

修改配置 Portal

  1. apollo-portal-1.1.2-github\scripts\startup.sh    修改端口號,自定義,只要不衝突就行
  2. apollo-portal-1.1.2-github\config\application-github.properties  portal 數據庫配置(打包時已輸入,則此處無需修改)
  3. apollo-portal-1.1.2-github\config\apollo-env.properties portal管理的環境配置(打包時已輸入,則此處無需修改)

修改配置 Config(以dev爲例,每個環境都是一樣的)

  1. apollo-configservice-1.1.2-dev\scripts\startup.sh  修改端口號,自定義,只要不衝突就行
  2. apollo-configservice-1.1.2-dev\config\application-github.properties config的數據庫配置(根據不同環境配置不同)
  3. apollo-configservice-1.1.2-dev\config\bootstrap.yml 由於是分佈式部署,在雲服務器上就有可能出現內網和外網IP的問題,所以此處需要指定IP,以免出現訪問不到的問題(文件是由源碼複製出來修改的)
    ​​​​eureka:
      instance:
        ip-address: 193.112.126.181
        preferIpAddress: true
      client:
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:41001/eureka/
        healthcheck:
          enabled: true
        eurekaServiceUrlPollIntervalSeconds: 60
    
    endpoints:
      health:
        sensitive: false
    
    management:
      security:
        enabled: false
      health:
        status:
          order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP

修改配置 Admin(以dev爲例,每個環境都是一樣的)

  1. apollo-adminservice-1.1.2-dev\scripts\startup.sh  修改端口號,自定義,只要不衝突就行
  2. apollo-adminservice-1.1.2-dev\config\application-github.properties 與config一致
  3. apollo-adminservice-1.1.2-dev\config\bootstrap.yml 與 config 類似,不同的是端口號不同

部署

  1. 本地修改後的包,portal只有一份,config和admin一對一,可以有多份
  2. 將修改好配置的包全部上傳到服務器 放到指定文件夾,位置隨意,目的是方便管理
  3. 然後修改每個startup.sh,shutdown.sh的權限,默認只有讀寫權限,沒有執行權限
    chmod -R 755 startup.sh
    chmod -R 755 shutdown.sh
  4. 啓動服務   到各個目錄下,運行 ./startup.sh,若全部啓動成功則表示服務已經啓動成功。若出現報錯,則可以根據提示去指定路徑查看錯誤日誌
  5. 啓動成功後就可以去portal訪問了,如果是雲服務器可能需要自己開放端口號,默認密碼 apollo / admin
  6. 登陸成功後,能看到管理的環境列表,自己可以創建工程,配置參數,發佈等功能

客戶端訪問服務

  1. opt/settings/server.properties 若爲window系統,則是c:/opt/settings/server.properties; 若爲Linux系統,則配置 /opt/settings/server.properties;之前老版本使用的 env=PRO(環境的名稱,在打包文件 build.bat 裏面定義的)的方式,現在直接配置最後一行即可,地址爲想要連接環境的 IP + Port,我的41001對應的爲 dev 環境
  2. 在項目中,app.properties 文件中,設置app.id,與 portal 創建的 AppId 一致
  3. 啓動 SimpleApolloConfigDemo,然後輸入 key,獲取 value,獲取值爲portal所配置,到此爲止客戶端訪問成功。具體原理需要自己去看源碼了,可以參考  Java客戶端使用指南https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章