出于针对线上基于配置文件做配置管理太过于老派和不便于现在自动化管理和微服务化管理,运维部门需要根据不同产品统一使用配置管理中心软件,来达到统一配置中心化的目的,来加速自动化的进程,现基于开源产品调研了携程的Apollo分析如下。
总体感觉 Apollo 不是一个成熟的开源(单指没有开源经验,Server 端配置文件、Server 端部署、文档完善度有待改善),但社区活跃,可用性、稳定性不用担心。
基本概念
模块
- Config Service
- 提供配置获取接口
- 提供配置更新推送接口
- Admin Service
- 提供配置管理接口
- 提供配置修改、发布等接口
- Meta Server
- Meta Server 只是一个逻辑角色,可以理解为 Meta Server = Eureka
- Eureka
- Eureka 实现服务发现
- Config Service 和 Admin Service 会向 Eureka 注册服务,并保持心跳
- Eureka 和 Config Service 在一个 JVM
- Portal
- 提供 Web 界面供用户管理配置
- 通过 Meta Server(Eureka)获取 Admin Service 列表
- 在 Portal 侧做负载均衡、错误重试
- Client
- 集成在应用中
- 配置获取
- 内存缓存
- 文件缓存
Namespace
- Namespace 是配置项的集合,可以理解为一个配置文件。
- application Namespace 是每个应用的默认 Namespace
- Namespace 分 public、private 两种权限,private 仅当前应用可读,public 无限制
- Namespace 类型分三种:私有类型、公共类型、关联类型(继承类型)
Apollo 架构
配置
config/app.properties
不需要修改config/application-github.properties
中设置数据库连接scripts/startup.sh
中设置 日志、环境、端口、JVM 内存- 日志路径需要设置
*.conf
和scripts/startup.sh
两个文件,并保持一致 config/apollo-env.properties
中指定各环境 apollo-configservice,仅 apollo-portal 需要配置- apollo-configservice 和 apollo-adminservice 连接 Eureka 需要在 ApolloConfigDB 库的 serverconfig 表设置
eureka.service.url
指定 apollo-configservice - 管理员指定需要修改 ApolloPortalDB 库中的 ServerConfig 表
- 部门增删改需要修改 ApolloPortalDB 库中的 ServerConfig 表
问题
- 启动后需要一分钟左右才能工作
- 无用户管理
- 无部门管理
- 无产品概念
- 相互通讯无严格认证机制(官方建议加密存储,客户端解密,对 API 调用不友好)
- apollo-configservice 和 apollo-adminservice 的环境需要设置
-Denv=BETA
启动参数 - 日志路径需要设置
*.conf
和scripts/startup.sh
- Eureka > apollo-configservice 和 apollo-adminservice 连接 Eureka 需要在 apolloconfigdb 库的 serverconfig 表设置
eureka.service.url
指定一个 apollo-configservice
无关紧要
apollo-env.properties
从 apollo-core 中获得- 只有 apollo-portal 需要
apollo-env.properties
application-github.properties
从 apollo-common 中获得- apollo-configservice 与 apollo-portal 中的
application-github.properties
不一样 - 所有 properties 格式配置放到 config 载入
- apollo-configservice 端口有 Eureka 状态页
*-sources.jar
文件是源码,运行并不需要- jar 包中嵌入了 shell 脚本,最终启动是运行 jar 包,
head -242 apollo-portal.jar
完整脚本
高可用
- apollo-portal 和 apollo-configservice 通过 Nginx 或其它方式负载均衡
- apollo-adminservice 会注册在 Eureka 中,通过 apollo-configservice 获取节点信息。所以 apollo-adminservice 直接运行多个实例即可。
生产架构
本文由 空心菜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jul 8, 2018 at 03:45 am