安装环境:VMware,CentOS7,Docker
一、配置Apollo数据库
直接使用apollo内部提供好的sql文件进行导入即可:
apollo/apolloportaldb.sql at master · apolloconfig/apollo · GitHub
apollo/apolloconfigdb.sql at master · apolloconfig/apollo · GitHub
二、下载Apollo镜像
[root@localhost ~]# docker pull apolloconfig/apollo-portal:latest
[root@localhost ~]# docker pull apolloconfig/apollo-adminservice:latest
[root@localhost ~]# docker pull apolloconfig/apollo-configservice:latest
三、Apollo架构设计
四个核心模块及其主要功能
ConfigService
- 提供配置获取接口
- 提供配置推送接口
- 服务于Apollo客户端
AdminService
- 提供配置管理接口
- 提供配置修改发布接口
- 服务于管理界面Portal
Client
- 为应用获取配置,支持实时更新
- 通过MetaServer获取ConfigService的服务列表
- 使用客户端软负载SLB方式调用ConfigService
Portal
- 配置管理界面
- 通过MetaServer获取AdminService的服务列表
- 使用客户端软负载SLB方式调用AdminService
三个辅助服务发现模块
Eureka
- 用于服务发现和注册
- Config/AdminService注册实例并定期报心跳
- 和ConfigService住在一起部署
MetaServer
- Portal通过域名访问MetaServer获取AdminService的地址列表
- Client通过域名访问MetaServer获取ConfigService的地址列表
- 相当于一个Eureka Proxy
- 逻辑角色,和ConfigService住在一起部署
NginxLB
- 和域名系统配合,协助Portal访问MetaServer获取AdminService地址列表
- 和域名系统配合,协助Client访问MetaServer获取ConfigService地址列表
- 和域名系统配合,协助用户访问Portal进行配置管理
四、运行镜像
1、Apollo Config Service
docker run -d -p 8080:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.79.21:3306/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root \
-e SPRING_DATASOURCE_PASSWORD=123456 \
-e "EUREKA_INSTANCE_PREFERIPADDRESS=true" \
-e "EUREKA_INSTANCE_IPADDRESS=192.168.79.21" \
-e "EUREKA_INSTANCE_NONSECUREPORT=8080" \
-e "EUREKA_INSTANCE_INSTANCEID=192.168.79.21:8080" \
-v /tmp/logs:/opt/logs \
--name apollo-configservice apolloconfig/apollo-configservice
2、Apollo Admin Service
docker run -d -p 8090:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.79.21:3306/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root \
-e SPRING_DATASOURCE_PASSWORD=123456 \
-e "EUREKA_INSTANCE_PREFERIPADDRESS=true" \
-e "EUREKA_INSTANCE_IPADDRESS=192.168.79.21" \
-e "EUREKA_INSTANCE_NONSECUREPORT=8090" \
-e "EUREKA_INSTANCE_INSTANCEID=192.168.79.21:8090" \
-v /tmp/logs:/opt/logs \
--name apollo-adminservice apolloconfig/apollo-adminservice
需要手动修改eureka配置,否则admin service的日志将会出现注册错误。
注册完成后,访问注册中心:http://192.168.79.21:8081/
3、Apollo Portal
docker run -d -p 8070:8070 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.79.21:3306/ApolloPortalDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root \
-e SPRING_DATASOURCE_PASSWORD=123456 \
-e APOLLO_PORTAL_ENVS=pro \
-e PRO_META=http://192.168.79.21:8080 \
-v /tmp/logs:/opt/logs \
--name apollo-portal apolloconfig/apollo-portal
参数说明:
- SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
- SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
- SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
- APOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置的话,可以通过此环境参数配置
- DEV_META/PRO_META(可选): 配置对应环境的Meta Service地址,以${ENV}_META命名,需要注意的是如果配置了ApolloPortalDB中的apollo.portal.meta.servers配置,则以apollo.portal.meta.servers中的配置为准
五、测试
访问地址: http://192.168.79.21:8070/signn
用户名/密码:apollo/admin
六、SpringBoot集成
集成源代码(Demo): ms-config-center: ms-config-center
server:
port: 18081
#Apollo应用
app:
id: sprintboot-apollo-test #使用的 Apollo 的项目(应用)编号
apollo:
meta: http://192.168.79.21:8080 #Apollo Meta Server 地址
cacheDir: ./ms-config-apollo/config
bootstrap:
enabled: true #是否开启 Apollo 配置预加载功能。默认为 false。
eagerLoad:
enable: true #是否开启 Apollo 支持日志级别的加载时机。默认为 false。
namespaces: application
test:
key: xiaxinyu
注意:VMware和Docker环境部署,导致网络异常复杂,第四步骤里面指定Eureka的配置非常重要。很容易出现错误:Could not complete get operation [Cause: connect timed out]。
个人感觉与Apollo架构中软负载有一点的关系。