分佈式部署攜程配置中心apollo集羣

[TOC]node

官方的文檔坑比較多,在這裏記錄一下mysql

1、源碼編譯、打包、發佈

1.獲取源碼

從github上克隆源碼到本機,項目結構以下圖1所示:git

<div align=center>github

<center>圖1</center>spring


<div align=left>sql

2.修改默認的配置信息

部署單節點或集羣,只關心3個工程:數據庫

  • apollo-configservice:提供獲取配置信息的接口,以及服務治理(apollo默認使用eureka註冊和發現服務);
  • apollo-adminservice:提供接口修改配置信息;
  • apollo-portal:管理配置信息的門戶;
  1. apollo-configservice: 修改resources同級目錄script下的startup.sh:
#!/bin/bash
## 修改日誌存放目錄和服務端口

SERVICE_NAME=apollo-configservice
## 日誌目錄,建議修改在啓動apollo服務的用戶目錄下,避免使用超級用戶啓動服務
LOG_DIR=/home/sharing/apollo_node_1/logs/
## 服務端口
SERVER_PORT=8080
...
...
## 若是apollo部署在雲上或者多網卡的機器上,則必須執行erueka實例的地址(即configserver的地址/eureka)
## 當部署在雲上的時候,因爲沒有隻有內網網卡,會致使configserver註冊到eureka的地址的爲內網ip,致使客戶端(應用程序)鏈接失敗,沒法使用
## 當部署在多網卡上的時候,因爲有多個網卡的存在,而configserver默認獲取第一個合法的ip,這個ip不必定是外網能訪問的ip,一樣會致使客戶端鏈接失敗
## 多網卡的狀況下,能夠在spring cloud配置要忽略的網卡名稱,具體參考Spring Cloud的文檔
## 因此建議指定erueka的實例地址
########### The following is the same for configservice, adminservice, portal ###########
export JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:ParallelGCThreads=4 ...
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT

添加eureka實例的地址:windows

########### The following is the same for configservice, adminservice, portal ###########
export JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:ParallelGCThreads=4 ...
export JAVA_OPTS="$JAVA_OPTS -Deureka.instance.ip-address=你的外網IP -Deureka.instance.prefer-ip-address=true -Dserver.port=$SERVER_PORT ...
  1. apollo-adminservice: 同上bash

  2. apollo-portal: 同上服務器

  3. 修改構建腳本 構建腳本路徑:/apollo/scripts/build.sh或/apollo/scripts/build.bat 分別修改 config db 和 portal db 的數據庫鏈接信息,以及多個meta server(即configService)的地址:

#!/bin/sh

# apollo config db info
apollo_config_db_url=jdbc:mysql://IP:PORT/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=username
apollo_config_db_password=password

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://IP:PORT/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=username
apollo_portal_db_password=password

# meta server url, different environments should have different meta server addresses
## 開發環境
dev_meta=http://IP1:PORT1,IP2:PORT2
## 測試環境
fat_meta=http://IP:PORT
## BETA環境
uat_meta=...
## 生產環境
pro_meta=...

3.導入兩個sql文件建庫

  1. apolloportaldb.sql
  2. apolloconfigdb.sql
  3. 修改ApolloConfigDB的ServerConfig表,Key爲 eureka.service.url的Value字段,更新爲你的eureka實例地址,如http://1.1.1.1:8080/eureka/,即同configService的ip和端口。多個節點,地址用,隔開。

4.打包啓動

執行上述修改後的build.sh(windows執行build.bat),以後會在各自模塊的target文件夾下生成zip壓縮包,複製到服務器上,解壓並執行scripts目錄下的startup.sh,啓動順序:configService -> adminService -> portal,等待啓動完成後,打開portal頁面便可以管理配置信息。 默認的初始管理員帳戶和密碼:apollo/admin


2、直接下載安裝包,採用外置配置文件的方式

1.下載安裝包

  1. 這裏下載

  2. 解壓文件,修改apollo-configservice、apollo-adminservice和apollo-portal的config目錄下的application-github.properties,添加數據庫配置信息和eureka實例ip(portal無需註冊到服務)等。

  3. 修改apollo-portal的config目錄下的app.properties,填寫dev、fat、uat以及pro的meta server地址。

  4. 導入兩個sql文件建庫

apolloportaldb.sql apolloconfigdb.sql 修改ApolloConfigDB的ServerConfig表,Key爲 eureka.service.url的Value字段,更新爲你的eureka實例地址,如http://1.1.1.1:8080/eureka/,即同configService的ip和端口。多個節點,地址用,隔開。

  1. 按順序啓動configService,adminService和portal。

3、部署多節點

1.apollo部署架構

參考apollo的官方的部署架構圖:

<div align=center>

部署圖 圖2

部署圖 圖3

<div align=left>

  1. apollo的集羣使用一個portal(apollo-portal + portalDB)來管理多個環境(dev, fat, uat, lpt, pro)的配置信息,每一個環境須要單獨部署一套服務(apollo-adminservice + apollo-configservice + configDB);
  2. apollo同一個環境(如DEV開發環境),部署多個節點,須要修改啓動端口和上述其餘配置;更新ApolloConfigDB表key爲eureka.service.url的Value字段,增長eureka實例的地址,用,隔開,不然configService和adminService不能註冊到eureka。

<div align=center>

圖4

<div align=left> 同一個環境的多個節點應該分別部署在不一樣的機器,實現多活。


4、注意事項

注意:端口和日誌路徑默認在startup腳本里面有配置,因爲apollo服務是基於SpringBoot的,system properties的入參優先級最高,因此須要修改startup的配置纔會生效。或者刪除startup裏面關於日誌路徑和端口的配置,就可使外部的端口和日誌路徑配置生效。

步驟總結:

  • 分別修改三個項目的端口,日誌路徑(在startup.sh裏面)。
  • 源碼編譯發佈,須要修改build.sh的數據庫鏈接信息,和各個環境meta server的地址(多個地址用,隔開)。
  • 已有打包發佈,則須要在外置配置文件/config/application-github.properties裏面配置數據庫鏈接信息, 在portal的apollo-env.properties文件配置meta server的地址。
  • configService和adminService增長eureka.instance.ip-address和eureka.instance.prefer-ip-address的配置。能夠配置在startup.sh的system properties上,也能夠配置在外置配置文件application-githun.properties裏面。
  • 按順序啓動:configService -> adminService -> portal

其餘總結:

  • eureka服務治理和configService是在同一個服務裏的。
  • 同一個環境的apollo服務的多個節點使用同一個數據庫,不一樣環境的apollo集羣使用不一樣的數據庫;多個不一樣環境的apollo集羣使用一個portal就能夠管理。
相關文章
相關標籤/搜索