Docker安装Apollo

安装环境: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

参数说明:

  1. SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
  2. SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
  3. SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
  4. APOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置的话,可以通过此环境参数配置
  5. 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架构中软负载有一点的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值