Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 https://github.com/ctripcorp/apollo/wiki/Apollo配置中心介绍
![img_6377846066b4a79b4a380177ee37825a.png](https://i-blog.csdnimg.cn/blog_migrate/26868e2b010061fc6d059cae170c2093.png)
apollo组件介绍
apollo配置中心包括admin service,config service, config db 等服务组件,以及portal配置管理服务以及client客户端组件。组件逻辑关系如下图:
![img_5a684fe8f69f42e456c61ccb1df4ad0e.png](https://i-blog.csdnimg.cn/blog_migrate/b356f5b560d1adf318e3a8bd8b7b1193.png)
本文说明服务端部署过程。
下面是docker部署服务的具体步骤:
1. 构建docker镜像
使用项目https://github.com/huwsun/docker-apollo来构建容器镜像,本项目包含所有服务端组件,可按需启用多环境及各组件,详细配置说明见项目说明。
注意修改Dockerfile中的版本变量,获取指定版本。
#构建
docker build -t docker-apollo:latest .
#创建tag
docker tag docker-apollo registry.cloud.xxx.com/hcf/apollo:1.1.0
#推送到镜像仓库
docker push registry.cloud.xxx.com/hcf/apollo:1.1.0
2. 本地测试镜像
按照创建数据库指导部署数据库,目前仅支持mysql。
如下命令,启动portal面板,以及dev环境的服务组件,其中8180为configservice端口,8190为adminservice端口
docker run -e DEV_DB='jdbc:mysql://1.1.1.1:3306/ApolloConfigDB?characterEncoding=utf8' \
-e DEV_DB_USER='user' \
-e DEV_DB_PWD='123' \
-e DEV_ADMIN_PORT=8190 \
-e DEV_CONFIG_PORT=8180 \
-e PORTAL_DB='jdbc:mysql://1.1.1.1:3306/ApolloPortalDB?characterEncoding=utf8' \
-e PORTAL_DB_USER='user' \
-e PORTAL_DB_PWD='123' \
-e JAVA_OPTS='-Deureka.service.url=http://localhost:8180/eureka/' \
-p 8170:8170 \
-v /opt/logs:/opt/logs --name apollo docker-apollo
3. Rancher部署
如下图,如果需要公网访问,需要将所有服务端口全部开放。环境变量配置参考本地测试配置
![img_e546e9b478ae4778aa46d9dce088a97d.png](https://i-blog.csdnimg.cn/blog_migrate/cd0fc48acd5ae3339ef34c4fd12876b0.png)
外网访问需要额外配置公网IP,如下
![img_06ba1fc590284cdfbc9f480c97b9fc17.png](https://i-blog.csdnimg.cn/blog_migrate/f7d72693aca64e0504cb764a9a049017.png)
4. 客户端使用
项目中引入依赖:
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.1.0</version>
</dependency>
启用bootstrap.yml配置如下,app.id为apollo的应用项目名称,在portal中进行配置,config-service-ip:port为configservice对应的ip及端口
app:
id: contract
apollo:
bootstrap:
enabled: true
meta: http://config-service-ip:port
详细说明及api见Java客户端使用指南