一、简介
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
官方github:https://github.com/ctripcorp/apollo
作者对Apollo对介绍:https://github.com/ctripcorp/apollo/wiki/Apollo%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%BF%83%E4%BB%8B%E7%BB%8D
二、安装部署
基础设施
本次部署环境为DEV(开发环境)、FAT(测试环境)、UAT(预生产)、PRO(生产)
应用服务器:
数据库服务器:
配置
下载代码:
比较重要的几个项目:
apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象为Apollo客户端
apollo-adminservice:提供配置管理接口,提供配置修改、发布等接口,接口服务对象为Portal,以及Eureka
apollo-portal:提供Web界面供用户管理配置
apollo-client:Apollo提供的客户端程序,为应用提供配置获取、实时更新等功能
上图简要描述了配置发布的大致过程:
用户在Portal操作配置发布
Portal调用Admin Service的接口操作发布
Admin Service发布配置后,发送ReleaseMessage给各个Config Service
Config Service收到ReleaseMessage后,通知对应的客户端
数据库初始化:
下面的sql为大写格式,注意数据库的大小写敏感设置
ApolloPortalDB:执行
ApolloConfigDB:DEV FAT UAT PRO 环境执行
调整配置并打包:
在 项目中找到目录 的配置文件 或者
数据库配置
修改数据库配置,上面的是 配置,下面的是 配置:
apollo config db info 该数据库配置只需要配置一次,不同环境无需修改
apollo portal db info 该数据库依据不同环境配置对应的数据库连接,并且需要多次打
修改环境调用地址
修改数据库数据
在DEV FAT UAT PRO 对应的 数据库中,找到表 中的 配置项:
修改环境配置,在 数据库修改表 中的 :
具体 配置,可以查看官网:https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97
编译、打包
该脚本会依次打包 , , 和 。
由于 在每个环境都有部署,所以对不同环境的 和 需要使用不同的数据库连接信息打不同的包, 和 只需要打一次包即可
开始部署
部署程序到对应的服务器
部署apollo-configservice
将 目录下的 上传到服务器上,解压
修改 :
执行 即可
如需停止服务,执行
部署apollo-adminservice
将 目录下的 上传到服务器上,解压
修改 :
执行 即可
如需停止服务,执行
部署apollo-portal
将 目录下的 上传到服务器上,解压
修改 :
执行 即可
如需停止服务,执行
访问测试
上面部署完成,可以测试
访问不同环境的 ,查看服务注册情况是否正确:
如果可以看到:
两个服务都为UP,正常!
访问客户端:
登录,默认用户名密码为:
新建项目测试。
三、使用配置中心配置信息
maven引入上面步骤编译打包成功的 和 包:
创建app.properties
请确保classpath:/META-INF/app.properties文件存在,并且其中内容为自己的项目名称,而且要保持唯一:
环境变量配置
本地开发
如果是本地开发,可以在开发工具添加Environment:
线上环境配置方式:
使用Java启动参数添加
通过操作系统的System Environment
通过配置文件:
对于Mac/Linux,文件位置为/opt/settings/server.properties
对于Windows,文件位置为C:\opt\settings\server.properties
配置apollo-env.properties
在项目中引用 和 包,在 包中可以看到 配置文件,默认配置为打包前配置的信息:
如果需要修改或者覆盖的话,在项目的 从上面复制一个 文件,修改对应环境信息就可以了
启用配置
在启动类添加 注解即可:
测试
添加一个测试的类 ,当然配置中心要有下面配置的配置信息:
完成!
四、部署方案
这个图是计划部署的方案,并不是上面写的例子的方案
领取专属 10元无门槛券
私享最新 技术干货