本章將介紹如何在Linux 中部署Apollo配置中心叢集。

專欄目錄:

歡迎關注個人公眾號:  Coder程式設計

歡迎關注個人網站:www.52melrin.com

環境以及版本

      Apollo: 0.11.0

     Java JDK:1.8

     Maven : 3.3.9

     Mysql : 5.7.9 (要求5.6.5以上)

準備工作

     在攜程apollo github 官網上,下載最新的原始碼包0.11.0(目前:2018.7.31),匯入到本地的開發工具中(Eclipse、IDEA)。確保相關依賴下載完畢,maven無相關報錯即可。匯入apollo中的相關資料庫表。這裡就不做贅述了!

測試伺服器(兩臺) 分別是:192.168.220.83、192.168.220.85    共用192.168.220.83 上的資料庫!

注: 接下來,我的埠號設定分別為:

        apollo-configservice:30080

        apollo-adminservice:30090

        apollo-portal:30070

修改檔案

以192.168.220.85機子為例進行修改。(192.168.220.83修改類似,區別就是Ip地址)

     1.修改apollo-adminservice

        (1)修改application.yml   的埠號:

server: 
    port: 30090

        (2)修改bootstrap.yml 的Ip地址,防止出現之後docker網路地址找不到。

eureka:
  instance:
    #hostname: ${hostname:localhost}
    preferIpAddress: true
    ip-address: 192.168.220.85
  client:
    serviceUrl:
      defaultZone: http://192.168.220.85:30080/eureka/,http://192.168.220.83:30080/eureka/
    healthcheck:
      enabled: true
    eurekaServiceUrlPollIntervalSeconds: 60

endpoints:
  health:
    sensitive: false



management:
  security:
    enabled: false
  health:
    status:
      order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP 

         (3)修改 startup.sh 中的埠

SERVER_PORT=30090

         (4)修改Dockerfile中的埠(這一步可以省略,本章只介紹如何部署到Linux伺服器中)

EXPOSE 30090

        2.修改apollo-configservice

  步驟同apollo-adminservice修改步驟,只是將30090埠改為30080埠,是30080埠的不需要修改!

        3.修改apollo-portal

 同樣需要修改埠號為30070。

注:在0.11.0版本之後出現了config 目錄。記得將config 目錄中的apollo-env.properties中新增:

注:0.11.0 版本之後支出多資料來源中心了。

dev.meta=http://192.168.220.85:30080,http://192.168.220.83:30080

         4.修改apollo-core

為了防止特殊情況,需要修改apollo-core 中resources 資料夾中的apollo-env.properties,新增:

local.meta=http://localhost:8080
dev.meta=http://192.168.220.85:30080,http://192.168.220.83:30080
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}

接下來進行打包操作。如果使用eclipse 或者idea 打包的話,可能會出現找不到jdk或者Jre的情況,百度即可。但是也會出現單元測試一直失敗報錯的情況。可以選擇跳過單元測試,或者直接將apollo-client 中的test 下面的測試包全部刪掉即可!

      5.修改build.bat

我選擇的是直接用build.bat進行打包(windows環境下)

build.bat 在整個原始碼包的scripts目錄下!

內容對應個人具體環境進行修改!

本人修改內容如下:

@echo off

rem apollo config db info
set apollo_config_db_url="jdbc:mysql://192.168.220.83:xxxx/ApolloConfigDB?characterEncoding=utf8"
set apollo_config_db_username="root"
set apollo_config_db_password="xxxx"

rem apollo portal db info
set apollo_portal_db_url="jdbc:mysql://192.168.220.83:xxxx/ApolloPortalDB?characterEncoding=utf8"
set apollo_portal_db_username="root"
set apollo_portal_db_password="xxxx"

rem meta server url, different environments should have different meta server addresses
set dev_meta="http://192.168.220.85:30080,http://192.168.220.83:30080"
set fat_meta="http://someIp:8080"
set uat_meta="http://anotherIp:8080"
set pro_meta="http://192.168.220.83:30081"

set META_SERVERS_OPTS=-Ddev_meta=%dev_meta% -Dfat_meta=%fat_meta% -Duat_meta=%uat_meta% -Dpro_meta=%pro_meta%

rem =============== Please do not modify the following content =============== 
rem go to script directory
cd "%~dp0"

cd ..

rem package config-service and admin-service
echo "==== starting to build config-service and admin-service ===="

call mvn clean package -DskipTests -pl apollo-configservice,apollo-adminservice -am -Dapollo_profile=github -Dspring_datasource_url=%apollo_config_db_url% -Dspring_datasource_username=%apollo_config_db_username% -Dspring_datasource_password=%apollo_config_db_password%

echo "==== building config-service and admin-service finished ===="

echo "==== starting to build portal ===="

call mvn clean package -DskipTests -pl apollo-portal -am -Dapollo_profile=github,auth -Dspring_datasource_url=%apollo_portal_db_url% -Dspring_datasource_username=%apollo_portal_db_username% -Dspring_datasource_password=%apollo_portal_db_password% %META_SERVERS_OPTS%

echo "==== building portal finished ===="

echo "==== starting to build client ===="

call mvn clean install -DskipTests -pl apollo-client -am %META_SERVERS_OPTS%

echo "==== building client finished ===="

pause

確定打包成功!

    6.修改資料庫表

修改apolloconfigdb 中的serverconfig 中的eureka註冊中心地址:

http://192.168.220.83:30080/eureka/,http://192.168.220.85:30080/eureka/

部署

以下部署涉及到Linux 伺服器的操作步驟。

  (1)新建目錄

     在linux上新建目錄結構:

    

  (2)上傳檔案

    分別將打包好的檔案。在/target資料夾中的  apollo-portal-0.11.0-github.zip、apollo-adminservice-0.11.0-github.zip、apollo-configservice-0.11.0-github.zip上傳至相關資料夾中。

  (3)解壓

     解壓命令:

      unzip apollo-xxxx-0.11.0-github.zip

      分別解壓apollo-configservice、apolllo-adminservice、apollo-portal

   (4)啟動

     解壓之後,可以看到有scripts目錄

通過./startup.sh 執行指令碼即可

執行順序依次為:apollo-configservice——》apollo-adminservice——》apollo-portal

檢視結果

  在瀏覽器中輸入:192.168.220.85:30070/  即可看到

叢集部署

    另外一臺192.168.220.83 部署跟192.168.220.85 步驟一樣,只需要修改Ip地址即可,無需修改埠號。

輸入192.168.220.85:30080可以看到:

可以看到已經部署兩臺,並且成功了!

測試

    1. 啟動兩臺伺服器端的apollo,客戶端成功獲取資訊。

    2.關掉其中一臺apollo服務,重啟客戶端。客戶端成功獲取資訊。

    3.兩臺apollo服務都關停,刪除本地快取,重啟客戶端,客戶端獲取資訊失敗。

    4.再次重啟其中一臺apollo服務,重啟客戶端,客戶端再一次成功獲取資訊。

本篇Linux部署Apollo分散式叢集到此為止,謝謝