docker-compose 一键部署分布式配置中心Apollo

2021年09月16日 阅读数:10
这篇文章主要向大家介绍docker-compose 一键部署分布式配置中心Apollo,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


简介

提及分布式确定要想到分布式配置中心、分布式日志、分布式链路追踪等mysql

在分布式部署中业务每每有不少配置好比: 应用程序在启动和运行时须要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,好比:数据库链接参数、启动参数等,都须要去维护和配置,但不可能一台台服务器登陆上去配置
今天我要跟你们分享一下分布式配置中心Apollo:git

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,可以集中化管理应用不一样环境、不一样集群的配置,配置修改后可以实时推送到应用端,而且具有规范的权限、流程治理等特性,适用于微服务配置管理场景。github

搭建

官方文档中有两种搭建方式一种是下载源代码进行搭建,一种是使用Docker或者K8S进行搭建,今天咱们使用Docker来进行搭建,毕竟Docker对于开发者来讲更友好一些。sql

若是已有Mysql服务,推荐已有Mysql服务或者云服务RDS来当数据库使用,毕竟数据无价。docker

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提供配置的修改、发布等功能,服务对象是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个服务,分别为:数据库

  1. Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端浏览器

  2. Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)服务器

  3. Portal(管理界面)
    若是想了解它们之间的运行方式推荐查看官方文档微信

日志挂载到外部./logs目录下app

你们能够看到上方并无给出Mysql的部署,若是须要使用容器部署Mysql能够参照下方docker-compose.yaml

version: '3'

services:

mysql: # myslq 数据库
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: #环境变量
MYSQL_ROOT_HOST: "%"
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: brook
MYSQL_PASSWORD: password
ports:
- "3306:3306"

上述mysql的docker-compose.yaml 仅供测试使用

初始化数据库
初始化

[apolloconfigdb.sql](https://github.com/apolloconfig/apollo/blob/master/scripts/docker-quick-start/sql/apolloconfigdb.sql) 和 [apolloportaldb.sql](https://github.com/apolloconfig/apollo/blob/master/scripts/docker-quick-start/sql/apolloportaldb.sql)


数据库初始化后,记得修改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

建立一个测试项目

测试

建立一个.NetCore项目 添加Apollo.net client

添加Apollo

配置Apollo

配置如上

添加测试内容
代码中获取Apollo

启动程序 请求/weatherforecast/apollotest

发现并未获取到apollo中设置的配置

检查Apollo发现配置的值并无发布

因此你们配置或者修改了Apollo必定记得发布,咱们发布后再次刷新浏览器

发现数据已是新的数据了,咱们再次修改一下Apollo的Value

刷新

致此 Apollo已经搭建完毕而且能够正常使用了

代码

示例中的代码在

https://github.com/yuefengkai/Brook.Apollo

欢迎你们Start


注意若是程序启动后没法拉取配置,能够打开Apollo的日志,在控制台中能够看到详细的配置 放到Program.cs Main函数第一行便可!

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

 


本文分享自微信公众号 - dotNET跨平台(opendotnet)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。