简介
说起分布式肯定要想到分布式配置中心、分布式日志、分布式链路追踪等
在分布式部署中业务往往有很多配置比如: 应用程序在启动和运行时需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等,都需要去维护和配置,但不可能一台台服务器登录上去配置
今天我要跟大家分享一下分布式配置中心apollo:
apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
搭建
官方文档中有两种搭建方式一种是下载源代码进行搭建,一种是使用docker或者k8s进行搭建,今天我们使用docker来进行搭建,毕竟docker对于开发者来说更友好一些。
如果已有mysql服务,推荐已有mysql服务或者云服务rds来当数据库使用,毕竟数据无价。
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个服务,分别为:
- config service提供配置的读取、推送等功能,服务对象是apollo客户端
- admin service提供配置的修改、发布等功能,服务对象是apollo portal(管理界面)
- portal(管理界面)
如果想了解它们之间的运行方式推荐查看
日志挂载到外部./logs目录下
大家可以看到上方并没有给出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库中serverconfig表的 eureka.service.url 否则 apollo-adminservice无法注册到eureka
修改后切换到apollo docker-compose.yaml目录 然后使用
docker-compose up -d #启动文件中的三个服务并且后台运行
查看启动情况
docker-compose ps
访问 #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.
2.
3.
到此这篇关于docker compose 一键部署分布式配置中心apollo的文章就介绍到这了,更多相关docker compose部署分布式配置中心apollo内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!