部署Apollo配置中心
Apollo是什么
Apollo
(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
服务端基于Spring Boot
和Spring Cloud
开发,打包后可以直接运行,不需要额外安装Tomcat
等应用容器。
.Net
客户端不依赖任何框架,能够运行于所有.Net
运行时环境。
Apollo
整体架构如下图:
Apollo
配置中心被分为portal
,Config Service
,Admin Service
三个服务
-
Portal
: 提供Apollo
配置中心的管理界面,服务对象是开发人员 -
Config Service
:提供配置的读取、推送等功能,服务对象是Apollo
客户端,该服务包含Eureka
,Config Service
和Meta Server
,他们在同一个JVM
进程中。 -
Admin Service
:提供配置的修改、发布等功能,服务对象是Apollo Portal
管理界面
如果需要Apollo
配置中心支持多个环境,Portal
管理界面只需要部署一处,Config Service
和Admin Service
在每一个环境部署一次。
Github
地址:https://github.com/apolloconfig/apollo
文档地址:https://www.apolloconfig.com/
环境与依赖
-
Apollo
配置中心支持不同的环境,每个环境互相隔离。Apollo
目前支持以下环境:DEV
开发环境FAT
测试环境,相当于alpha
环境(功能测试)UAT
集成环境,相当于beta
环境(回归测试)PRO
生产环境
-
要安装
Apollo
配置中心需要以下:- 依赖
Java 1.8+
MySQL 5.6.5+
- 下载
apollo
- 数据库文件
- 依赖
IP端口配置
让Apollo
配置中心支持两套环境,需要先规划配置Apollo服务的IP和端口:
Portal
:127.0.0.1:8070
Dev Config Service
:127.0.0.1:8071
Dev Admin Service
:127.0.0.1:8072
Fat Config Service
:127.0.0.1:8073
Fat Admin Service
:127.0.0.1:8074
如果两个环境的数据库和准备部署Apollo
的服务器不是同一个,可按需配置,配置方式也是相同的。
数据库配置
ApolloPortalDB
- 创建
ApolloPortalDB
数据库 - 运行
apolloportaldb.sql
- 配置
ServerConfig
表中apollo.portal.envs
的值,该值表示可支持的环境列表(例:DEV,FAT
)
开发环境ApolloConfigDB
- 创建
ApolloConfigDB
数据库dev
环境 - 运行
apolloconfigdb.sql
- 配置
ServerConfig
表中eureka.service.url
的值,该值就是Config Service
的http://IP:Port
地址(例:http://127.0.0.1:8071/eureka/
)
测试环境ApolloConfigDB_Test
- 创建
ApolloConfigDB_Test
数据库作为fat
环境 - 运行
apolloconfigdb.sql
- 配置
ServerConfig
表中eureka.service.url
的值,该值就是Config Service
的http://IP:Port
地址(例:http://127.0.0.1:8073/eureka/
)
配置Portal
Portal
作为管理界面,只需要部署一次即可。
Portal
首次登陆的默认账号为apollo
,密码为admin
。
目录结构
解压apollo-portal-2.2.0-github.zip
文件,将会得到以下结构目录:
文件配置
apollo-portal.conf
配置
portal
的日志文件存储位置
config/apollo-env.properties
配置
Portal
支持的环境
config/application-github.properties
配置
Portal
使用的数据库信息
scripts/startup.sh
配置
Portal
的启动设置
- 授权
赋予
scripts
目录下的sh
脚本可执行权限
配置Config Service
Config Service
提供配置的读取、推送等功能,所以再不同的环境下,需要再次部署该服务。
目录结构
解压apollo-configservice-2.2.0-github
文件,将会得到以下结构目录,可修改目录名称以支持不同的环境
文件配置
apollo-configservice.conf
配置
Config Service
的日志文件存储位置
config/application-github.properties
配置
Config Service
使用的数据库信息
scripts/startup.sh
配置
Config Service
的启动设置
- 授权
赋予
scripts
目录下的sh
脚本可执行权限
本地部署出现的问题
Apollo
客户端和Portal
会从Config Service
获取服务的地址(IP+Port
),然后通过服务地址直接访问。而从eureka
服务发现的页面会发现,服务地址变成了公网IP
,这可能会导致Apollo
客户端无法连接上Config Service
,所以需要修改startup.sh
配置JAVA_OPTS
。
配置Admin Service
目录结构
解压apollo-adminservice-2.2.0-github
文件,将会得到以下结构目录,可修改目录名称以支持不同的环境
文件配置
apollo-adminservice.conf
配置
Admin Service
的日志文件存储位置
config/application-github.properties
配置
Admin Service
使用的数据库信息
scripts/startup.sh
配置
Admin Service
的启动设置
- 授权
赋予
scripts
目录下的sh
脚本可执行权限
本地部署出现的问题
Apollo
客户端和Portal
会从Config Service
获取服务的地址(IP+Port
),然后通过服务地址直接访问。而从eureka
服务发现的页面会发现,服务地址变成了公网IP
,这可能会导致Apollo
客户端无法连接上Config Service
,所以需要修改startup.sh
配置JAVA_OPTS
。
部署
Apollo
三个服务都需要启动,所以编写脚本启动是比较好的方式。