使用 Apollo 搭建 Spring Boot 配置中心
监测程序的分布式部署需要一个中心节点控制各监测节点的配置,Spring Cloud Config 看起来太复杂了,这里采用Apollo配置中心进行配置管理
根据官方文档进行部署,并记录相关步骤
MySQL搭建
采用Docker搭建MySQL数据库,具体操作参见:
Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,导入数据库即可:
导入后通过如下语句进行验证:
Apollo搭建
使用Docker进行Apollo搭建
Apollo Config Service
获取镜像
根据镜像创建容器
1 | docker run -p 8080:8080 \ |
参数说明:
- SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
- SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
- SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
Apollo Admin Service
获取镜像
根据镜像创建容器
1 | docker run -p 8090:8090 \ |
参数说明:
- SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
- SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
- SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
Apollo Portal
获取镜像
根据镜像创建容器
1 | docker run -p 8070:8070 \ |
参数说明:
- SPRING_DATASOURCE_URL: 对应环境ApolloPortalDB的地址
- SPRING_DATASOURCE_USERNAME: 对应环境ApolloPortalDB的用户名
- SPRING_DATASOURCE_PASSWORD: 对应环境ApolloPortalDB的密码
- APOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置的话,可以通过此环境参数配置
- DEV_META/PRO_META(可选): 配置对应环境的Meta Service地址,以${ENV}_META命名,需要注意的是如果配置了ApolloPortalDB中的apollo.portal.meta.servers配置,则以apollo.portal.meta.servers中的配置为准
Apollo管理界面
可以通过 http://fill-in-the-correct-server:8070 来访问Apollo的管理界面,输入用户名apollo,密码admin登陆账号
通过管理员工具 → 系统参数 → Key → 查询可以查看相应系统配置,以organizations举例,可以查看当前的部门配置,并进行修改保存。
Error: Admin Services Not Found
在管理员工具 → 系统信息界面发现环境异常,Admin Services Not Found:
通过Docker log查看日志,发现请求出错
将localhost改为真实IP后重启容器,报错消失
客户端配置
客户端配置较为简单,在配置文件内加入下列参数:
1 | #apollo相关配置# |
并在pom.xml中加入依赖
1 | <!-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client --> |
之后在springboot启动类添加注解@EnableApolloConfig即可
Error: Docker虚拟IP地址
测试时持续报错,发现程序一直在请求Docker的虚拟IP地址172.17.0.3:8080
这显然是无法请求到的,需要手工声明 Apollo Meta Server 的服务地址
添加程序启动参数
再次运行后报错消失