docker compose 一鍵部署分布式配置中心Apollo的過程詳解
簡介
說起分布式肯定要想到分布式配置中心、分布式日志、分布式鏈路追蹤等
在分布式部署中業(yè)務往往有很多配置比如: 應用程序在啟動和運行時需要讀取一些配置信息,配置基本上伴隨著應用程序的整個生命周期,比如:數(shù)據(jù)庫連接參數(shù)、啟動參數(shù)等,都需要去維護和配置,但不可能一臺臺服務器登錄上去配置
今天我要跟大家分享一下分布式配置中心Apollo:
Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務配置管理場景。
搭建
官方文檔中有兩種搭建方式一種是下載源代碼進行搭建,一種是使用Docker或者K8S進行搭建,今天我們使用Docker來進行搭建,畢竟Docker對于開發(fā)者來說更友好一些。
如果已有Mysql服務,推薦已有Mysql服務或者云服務RDS來當數(shù)據(jù)庫使用,畢竟數(shù)據(jù)無價。
version: "3"
services:
apollo-configservice: #Config Service提供配置的讀取、推送等功能,服務對象是Apollo客戶端
image: apolloconfig/apollo-configservice:1.8.1
restart: always
#container_name: apollo-configservice
volumes:
- ./logs/apollo-configservice:/opt/logs
ports:
- "8080:8080"
environment:
- TZ='Asia/Shanghai'
- SERVER_PORT=8080
- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx
- EUREKA_INSTANCE_HOME_PAGE_URL=http://xxx.xxx.xxx.xxx:8080
- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!
apollo-adminservice: #Admin Service提供配置的修改、發(fā)布等功能,服務對象是Apollo Portal(管理界面)
image: apolloconfig/apollo-adminservice:1.8.1
restart: always
#container_name: apollo-adminservice
volumes:
- ./logs/apollo-adminservice:/opt/logs
ports:
- "8090:8090"
depends_on:
- apollo-configservice
environment:
- TZ='Asia/Shanghai'
- SERVER_PORT=8090
- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx
- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!
apollo-portal: #管理界面
image: apolloconfig/apollo-portal:1.8.1
restart: always
container_name: apollo-portal
volumes:
- ./logs/apollo-portal:/opt/logs
ports:
- "8070:8070"
depends_on:
- apollo-adminservice
environment:
- TZ='Asia/Shanghai'
- SERVER_PORT=8070
- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx
- APOLLO_PORTAL_ENVS=dev
- DEV_META=http://xxx.xxx.xxx.xxx:8080
- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!
從以上docker-compose.yaml中可以看出共包含3個服務,分別為:
- Config Service提供配置的讀取、推送等功能,服務對象是Apollo客戶端
- Admin Service提供配置的修改、發(fā)布等功能,服務對象是Apollo Portal(管理界面)
- Portal(管理界面)
如果想了解它們之間的運行方式推薦查看官方文檔
日志掛載到外部./logs目錄下
大家可以看到上方并沒有給出Mysql的部署,如果需要使用容器部署Mysql可以參照下方docker-compose.yaml
version: '3'
services:
mysql: # myslq 數(shù)據(jù)庫
image: 'mysql/mysql-server'
container_name: 'mysql'
restart: always
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower-case-table-names=1
environment: #環(huán)境變量
MYSQL_ROOT_HOST: "%"
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: brook
MYSQL_PASSWORD: password
ports:
- "3306:3306"
上述mysql的docker-compose.yaml 僅供測試使用
初始化數(shù)據(jù)庫
初始化 apolloconfigdb.sql 和 apolloportaldb.sql

數(shù)據(jù)庫初始化后,記得修改apolloconfigdb庫中serverconfig表的 eureka.service.url 否則 apollo-adminservice無法注冊到eureka

修改后切換到Apollo docker-compose.yaml目錄 然后使用
docker-compose up -d #啟動文件中的三個服務并且后臺運行

查看啟動情況
docker-compose ps

訪問 http://10.0.0.53:8070/ #Apollo管理端

默認用戶名:apollo
默認密碼:admin

創(chuàng)建一個測試項目


測試
創(chuàng)建一個.NetCore項目 添加Apollo.net client

添加Apollo

配置Apollo

配置如上

添加測試內(nèi)容
代碼中獲取Apollo

啟動程序 請求/weatherforecast/apollotest

發(fā)現(xiàn)并未獲取到apollo中設置的配置
檢查Apollo發(fā)現(xiàn)配置的值并沒有發(fā)布

所以大家配置或者修改了Apollo一定記得發(fā)布,我們發(fā)布后再次刷新瀏覽器

發(fā)現(xiàn)數(shù)據(jù)已經(jīng)是新的數(shù)據(jù)了,我們再次修改一下Apollo的Value

刷新

致此 Apollo已經(jīng)搭建完畢并且可以正常使用了
代碼
示例中的代碼在
https://github.com/yuefengkai/Brook.Apollo
歡迎大家Start
注意如果程序啟動后無法拉取配置,可以打開Apollo的日志,在控制臺中可以看到詳細的配置 放到Program.cs Main函數(shù)第一行即可!
LogManager.UseConsoleLogging(Com.Ctrip.Framework.Apollo.Logging.LogLevel.Trace);
參考
1.https://github.com/apolloconfig/apollo.net
2.https://github.com/apolloconfig/apollo
3.https://github.com/apolloconfig/apollo/tree/master/scripts/docker-quick-start
到此這篇關于docker compose 一鍵部署分布式配置中心Apollo的文章就介紹到這了,更多相關docker compose部署分布式配置中心Apollo內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關注官方微信