Apollo 簡介mysql
Apollo(阿波羅)是攜程框架部門研發的分佈式配置中心,可以集中化管理應用不一樣環境、不一樣集羣的配置,配置修改後可以實時推送到應用端,而且具有規範的權限、流程治理等特性,適用於微服務配置管理場景。git
服務端基於Spring Boot和Spring Cloud開發,打包後能夠直接運行,不須要額外安裝Tomcat等應用容器。github
Java客戶端不依賴任何框架,可以運行於全部Java運行時環境,同時對Spring/Spring Boot環境也有較好的支持。sql
.Net客戶端不依賴任何框架,可以運行於全部.Net運行時環境。docker
更多產品介紹參見Apollo配置中心介紹數據庫
https://mp.weixin.qq.com/s/-hUaQPzfsl9Lm3IqQW3VDQ 網絡
docker分佈式部署(多環境)架構
官方分佈式部署參見分佈式部署指南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框架
準備機器2臺
l192.168.101.14
l192.168.101.15
實現效果:經過apollo管理本地環境zglocal和測試環境zgdev配置文件
1.建立數據庫
建立ApolloConfigDB
經過各類MySQL客戶端導入apolloconfigdb.sql便可,每一個環境一個數據庫,由於咱們有兩個環境zglocal和zgdev,因此須要新建兩個數據庫zg_apolloconfigdb_dev 和 zg_apolloconfigdb_local。導入的sql是同一份sql數據就行
建立ApolloPortalDB
經過各類MySQL客戶端導入apolloportaldb.sql便可,由於Portal是配置管理界面,因此只須要一個就能夠管理多個環境
效果以下:
2.docker安裝apollo
// 安裝啓動zgdev環境ConfigService和AdminService
docker run -p 8080:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_dev?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \
-e eureka_instance_ip_address=192.168.101.14 \
-d -v /tmp/logs:/opt/logs --name apollo-configservice-dev apolloconfig/apollo-configservice:1.7.1
docker run -p 8090:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_dev?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \
-e eureka_instance_ip_address=192.168.101.14 \
-d -v /tmp/logs:/opt/logs --name apollo-adminservice-dev apolloconfig/apollo-adminservice:1.7.1
//安裝啓動zglocal環境ConfigService和AdminService
docker run -p 8080:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_local?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \
-e EUREKA_INSTANCE_IP_ADDRESS=192.168.101.15 \
-d -v /tmp/logs:/opt/logs --name apollo-configservice-local apolloconfig/apollo-configservice:1.7.1
docker run -p 8090:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_local?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \
-e EUREKA_INSTANCE_IP_ADDRESS=192.168.101.15 \
-d -v /tmp/logs:/opt/logs --name apollo-adminservice-local apolloconfig/apollo-adminservice:1.7.1
參數說明:
lSPRING_DATASOURCE_URL: 對應環境ApolloConfigDB的地址
lSPRING_DATASOURCE_USERNAME: 對應環境ApolloConfigDB的用戶名
lSPRING_DATASOURCE_PASSWORD: 對應環境ApolloConfigDB的密碼
lEUREKA_INSTANCE_IP_ADDRESS: 對應的網絡策略,若是實際部署的機器有多塊網卡(如docker),或者存在某些網卡的IP是Apollo客戶端和Portal沒法訪問的(如網絡安全限制),那麼咱們就須要在apollo-configservice和apollo-adminservice中作相關限制以免Eureka將這些網卡的IP註冊到Meta Server,因此這裏咱們要使用咱們宿主機的ip註冊到到Eureka註冊中心,而不是默認的容器ip
//安裝啓動Portal
docker run -p 8070:8070 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloportaldb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \
-d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal:1.7.1
參數說明:
lSPRING_DATASOURCE_URL: 對應環境ApolloPortalDB的地址
lSPRING_DATASOURCE_USERNAME: 對應環境ApolloPortalDB的用戶名
lSPRING_DATASOURCE_PASSWORD: 對應環境ApolloPortalDB的密碼
lAPOLLO_PORTAL_ENVS(可選): 對應ApolloPortalDB中的apollo.portal.envs配置項,若是沒有在數據庫中配置的話,能夠經過此環境參數配置
lDEV_META/PRO_META(可選): 配置對應環境的Meta Service地址,以${ENV}_META命名,須要注意的是若是配置了ApolloPortalDB中的apollo.portal.meta.servers配置,則以apollo.portal.meta.servers中的配置爲準
啓動後效果:
3.修改配置參數
3.1修改Portal容器參數
執行命令進入容器
docker exec -it apollo-portal sh
cd /apollo-portal/config
vi apollo-env.properties修改環境參數,如圖:
3.2修改數據庫參數
調整ApolloConfigDB配置
無論是apollo-configservice仍是apollo-adminservice都須要向eureka服務註冊,因此須要配置eureka服務地址。 按照目前的實現,apollo-configservice自己就是一個eureka服務,因此只須要填入apollo-configservice的地址便可,若有多個,用逗號分隔(注意不要忘了/eureka/後綴)。
調整ApolloPortalDB配置(ps:圖片由於看不清,因此進行了從新截圖,place環境可忽略)
配置項統一存儲在ApolloPortalDB.ServerConfig表中,也能夠經過管理員工具 - 系統參數頁面進行配置,無特殊說明則修改完一分鐘實時生效。
進行這些調整後重啓這幾個docker服務便可,訪問Portal界面
經過系統信息查看是否zglocal和zgdev環境的apollo-configservice仍是apollo-adminservice是否運行正常