比較 www. brush apollo 多臺 管理 align 惡心 name

前言

前幾天對Apollo配置中心的demo進行一個部署試用,現公司已決定使用,這兩天進行分布式部署的時候,每一步都踩著坑過來的。因此寫文檔與需要的朋友分享。

此篇文章不代表官方部署流程,只是自己的部署的實踐方式,屏蔽了一些官方的多余的部署講解。如果有問題還請到Apollo的wiki文檔進行查看:https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97

另外,真想吐槽下Apollo配置中心部署惡心度真的是……,吐槽歸吐槽,但是Apollo配置中心的功能強大而且具有非常高的可用性,在同類型產品裏也算是數一數二。

在進行分布式部署前我還是建議用Apollo的quick start版本進行試用。可以參考我這篇文章《基於winserver部署Apollo初次體驗(附.net客戶端demo)》

環境準備

  • jdk18+

  • gitbash

  • mysql 5.6.5+

  • Apollo

服務簡介

  1. apollo-configservice
    • 作為客戶端的獲取配置的接口服務,與客戶端進行Http long polling,實現配置更新的退送與拉取
  2. apollo-adminservice
    • 作為管理後臺的接口服務,提供配置管理、修改、發布
  3. apollo-portal
    • Web管理配置後臺

以下正式開始部署

SQL腳本導入

源碼\scripts\sql下兩腳本,到mysql執行

apolloconfigdb.sql

apolloportaldb.sql

編譯

切換到上面已下載阿波羅源碼\scripts目錄下,運行build.bat。需要等待幾分鐘,編譯完成後,準備三個服務部署,部署順序也如下

  1. apollo-configservice
  2. apollo-adminservice
  3. apollo-porta

apollo-configservice部署

  1. 源碼\apollo-configservice\target\apollo-configservice-0.11.0-SNAPSHOT-github.zip
  2. 解壓到需要部署的服務器文件夾
  3. 添加文件application-github.properties,內容如下:
    spring.datasource.url=jdbc:mysql://10.1.20.143:3306/ApolloConfigDB?characterEncoding=utf8
    
    spring.datasource.username=root
    
    spring.datasource.password=12345678
    

  4. 編輯\scripts\startup.sh,修改日誌目錄
    LOG_DIR=D:/apollo/apollo-configservice-0.11.0-SNAPSHOT-github/log

  5. 雙擊startup.sh啟動服務。
  6. 啟動完後查看日誌,如果出現下面信息,請耐心等待幾分鐘,輸入localhost:8080嘗試
    com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused

apollo-adminservice部署

  1. 源碼\apollo-adminservice\target\apollo-adminservice-0.11.0-SNAPSHOT-github.zip
  2. 同上步驟2、3、4、5(註意數據庫信息、日誌目錄對應修改)
  3. localhost:8090嘗試

apollo-portal部署

  1. 源碼\apollo-portal\target\apollo-portal-0.11.0-SNAPSHOT-github.zip
  2. 解壓到需要部署的服務器文件夾
  3. 添加文件application-github.properties,內容如下(註意數據庫連接與前兩者不一樣)
    spring.datasource.url=jdbc:mysql://10.1.20.143:3306/ApolloPortalDB?characterEncoding=utf8
    
    spring.datasource.username=root
    
    spring.datasource.password=12345678

  4. 編輯\scripts\startup.sh,修改日誌目錄與端口號
    LOG_DIR=D:/apollo/apollo-portal-0.11.0-SNAPSHOT-github/log
    
    SERVER_PORT=8070

  5. 雙擊startup.sh啟動服務
  6. 輸入localhost:8070嘗試,如日誌沒其他異常,等待幾分鐘再次嘗試訪問

添加客戶端環境配置

在C:\opt\settings 添加文件server.properties內容:

env=DEV

集群部署

以上為單機部署的流程,下面講解集群部署的流程:

架構簡述

技術分享圖片

Eureka與apollo-configservice為同一個JVM進程,為了好描述拆開了。

在apollo-configservice與apollo-adminservice啟動時會向Eureka進行服務註冊,Apollo客戶端和apollo-Portal會從Eureka進行服務查找,然後通過服務地址直接訪問

每個服務都是無狀態的,因此橫向擴展相對比較簡單

修改eureka.service.url

update apolloconfigdb.serverconfig set value = ‘http://10.1.20.137:8080/eureka/‘ where id = 1

部署apollo-configservice和apollo-adminservice

到B服務器重復上述兩個服務的部署步驟(註意基本環境的安裝)

完成並查看

輸入http://10.1.20.137:8080進行查看,eureka管理界面status出現多臺主機名稱為部署成功。

技術分享圖片

結束

以上為我與大家分享的部署流程,如有問題可以及時在下方評論與我,我會盡快回復

基於winserver的Apollo配置中心分布式&集群部署實踐(正確部署姿勢)