Apollo Dotnet Core 1

Page content

0. Intro

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

0.1. 基础模型

basic-architecture

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

0.2. 总体设计

overall-architecture

  • 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.zip

2.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。