Apollo Dotnet Core 1
Page content
0. Intro
Apollo 是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
0.1. 基础模型

- 用户在配置中心对配置进行修改并发布
- 配置中心通知 Apollo 客户端有配置更新
- Apollo 客户端从配置中心拉取最新的配置、更新本地配置并通知到应用
0.2. 总体设计

- Config Service 提供配置的读取、推送等功能,服务对象是 Apollo 客户端
- Admin Service 提供配置的修改、发布等功能,服务对象是 Apollo Portal(管理界面)
- Config Service 和 Admin Service 都是多实例、无状态部署,所以需要将自己注册到 Eureka 中并保持心跳
- 在 Eureka 之上我们架了一层 Meta Server 用于封装 Eureka 的服务发现接口
- Client 通过域名访问 Meta Server 获取 Config Service 服务列表(IP + Port),而后直接通过 IP + Port 访问服务,同时在 Client 侧会做 load balance、错误重试
- Portal 通过域名访问 Meta Server 获取 Admin Service 服务列表(IP + Port),而后直接通过 IP + Port 访问服务,同时在 Portal 侧会做 load balance、错误重试
- 为了简化部署,我们实际上会把 Config Service、Eureka 和 Meta Server 三个逻辑角色部署在同一个 JVM 进程中
1. 准备工作
1.1. 初始化数据库
执行下面两个 sql 脚本
验证是否成功:
1select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;1select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;1.2. 手动修改部分字段内容
2. 部署 Apollo 服务端
基于 Apollo 1.4.0 的 release 包,下载并解压缩到各文件夹内
1wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-adminservice-1.4.0-github.zip
2wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-configservice-1.4.0-github.zip
3wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-portal-1.4.0-github.zip2.1. 部署 apollo-configservice
修改 apollo-configservice 配置
解压后进入目录
(必需) 修改 config 文件夹下 application-github.properties 文件
spring.datasource.url = jdbc:mysql://<DBHOST>:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username = <USERNAME> spring.datasource.password = <PASSWD>修改 scripts 文件夹下的 startup.sh 文件
- (可选) 修改
LOG_DIR - (可选) 修改默认
SERVER_PORT - (建议) 取消注释
JAVA_OPTS变量,按需修改 JVM 配置
- (可选) 修改
(可选) 修改 apollo-configservice.conf 文件
- 修改默认
LOG_FOLDER
- 修改默认
启动 apollo-configservice
运行 scripts 目录下的 startup.sh
2.2. 部署 apollo-adminservice
修改 apollo-adminservice 配置
数据库连接、启动参数配置、日志存放路径等同上。
启动 apollo-adminservice
运行 scripts 目录下的 startup.sh
2.3. 部署 apollo-portal
修改 apollo-portal 配置
数据库连接、启动参数配置、日志存放路径等同上,额外地,需要修改 config 文件夹下的 apollo-env.properties 文件:
# 注释其余的配置项
dev.meta=http://apollo-configservice-dev注:如果需要配置其他环境的 configservice 再放开注释
启动 apollo-portal
运行 scripts 目录下的 startup.sh
可能遇到的问题: 1. 日志路径需要一定写权限,记得打开 2. 监听的端口记得在防火墙处添加
3. 总结
配置部署还是比较麻烦的,而且多个环境需要再多配一套 apollo-configservice,下一篇讲 .NET Core 客户端如何使用 Apollo。