Apollo 配置中心部署指南

官方文档:https://github.com/ctripcorp/apollo/wiki

源码解析:http://www.iocoder.cn/categories/Apollo/

apollo 的官方文档已经很完善了,写这个博客的目的在于在官网文档的基础上加上一些经验分享

欢迎加群交流讨论:816478697

环境准备:

Java: 1.8+ 检查:java -version

MySql:5.6.5+ 检查:SHOW VARIABLES WHERE Variable_name = ‘version’;

apollo 模块介绍

Config Service 提供配置获取接口,提供配置更新推送接口,Eureka 与 Config Service 在同一项目中,接口服务对象为 Apollo 客户端

Admin Service 提供配置管理接口,提供配置修改、发布等接口,接口服务对象为 Portal

Portal 提供 Web 界面供用户管理配置

一、分布式部署

第一步 确定部署方案

1、部署几个环境

我的方案是部署 DEV(开发环境)、FAT(测试环境)、PRO(生产环境)三个环境,主要是根据公司项目的实际情况来选择。大部分公司这三个环境就已满足了,分工明细流程规范一点的公司会分的细一点,可能需要增加 UAT(回归测试)、其它自定义环境

2、服务器分配,哪个服务器部署什么环境

我使用的是官网的一个最常规的部署方式,如下图:

第二步 创建数据库

apollo 有两个数据库:

ApolloPortalDB 为 Portal 模块的数据库,只需要在有部署 Portal 的地方部署就可以,我只在 PRO 有,也就是只需要在生产环境部署一套

ApolloConfigDB 需要在每一个环境都部署一套,也就是需要针对 DEV、FAT、UAT 分别部署一套

执行 sql 在源码中有,部署完数据库后,我们先打包需要的部署包,后面再讲数据库的配置

第三步 打包 PRO 环境所需部署包,原因是生产环境部署了 Portal 有具体的后台管理界面

源码 git 地址:https://github.com/ctripcorp/apollo.git

因为 Eureka 在 Config Service 中,我们先设置 Config Service 的配置

下面主要是 eureka 的配置,需要注意的是假如服务器有多网卡,必须要指定一下注册地址

接下来配置 Admin Service

配置 portal

接着配置 core,不注意的话很可能会忽略掉这点,把不需要的环境注释掉,或者需要额外增加环境的话也需要在这个配置里面增加

apollo 支持的环境有 LOCAL, DEV, FWS, FAT, UAT, LPT, PRO, TOOLS,可看下面枚举

配置编译脚本,当前配置的都是 PRO(生产环境)

这个时候我们对每一个环境的启动端口,数据库配置等都有了一个认识,然后我们再来修改数据库的配置就很清晰了,这个步骤一定不能少,不然 portal 会找不到环境

执行 build.sh 打包,我用的是 git-bash 环境进行的编译

编译完成后我们需要 3 个部署文件

apollo-adminservice-0.11.0-SNAPSHOT-github.zip

apollo-configservice-0.11.0-SNAPSHOT-github.zip

apollo-portal-0.11.0-SNAPSHOT-github.zip

将 3 个 zip 文件丢到服务器 unzip 解压,得到部署文件

为了让 apollo 知道当前部署的是哪个环境,需要在系统里面添加一个配置文件,说明当前系统的环境

配置文件地址:/opt/settings/server.properties 或者 c:\opt\settings\server.properties

配置信息: env=PRO (设置成对应的环境)

执行启动脚本 startup.sh

linux 获取文件执行权限 chmod u+x *.sh

我们 adminservice 部署的是 9002 端口,浏览器打开http://ip:9002 显示如下图说明部署成功

再同样的方法启动 apollo-configservice 和 apollo-portal

启动 apollo-congfigservice 成功后浏览器打开http://ip: 端口,会看到两个服务已成功注册到 eureka

然后我们访问 apollo-portal 部署地址,就可以进入配置管理后台

初始账号 apollo,密码 admin

其它环境配置方式和部署方式一致,仅少了 apollo-portal 的部署步骤

到此 apollo 的三个环境就部署完成了,登陆后台可以看到三个环境的配置

项目集成(spring 项目集成):

首先在原有的项目中引入所需 jar 文件

核心 jar 为(编译后获得):

apollo-core-0.11.0.jar

apollo-client-0.11.0.jar

相关依赖如下:

//apollo 相关依赖 jar 包 gradle 版

compile group: ‘com.ctrip.framework.apollo’, name: ‘apollo-core’, version: ‘0.11.0’

compile group: ‘com.ctrip.framework.apollo’, name: ‘apollo-client’, version: ‘0.11.0’

compile ‘aopalliance:aopalliance:1.0’

compile ‘com.google.inject:guice:4.2.0’

compile ‘com.google.code.gson:gson:2.6.1’

compile ‘com.google.guava:guava:18.0’

compile ‘javax.inject:javax.inject:1’

compile ‘org.apache.logging.log4j:log4j-core:2.11.0’

compile ‘org.apache.logging.log4j:log4j-api:2.11.0’

compile ‘org.apache.logging.log4j:log4j-slf4j-impl:2.11.0’

//maven 版

com.ctrip.framework.apollo

apollo-client

0.11.0

com.ctrip.framework.apollo

apollo-core

0.11.0

com.google.inject

guice

4.1.0

com.google.code.gson

gson

2.8.0

2、在项目 resource 中添加 /META-INF/app.properties 文件,添加 app.id=${app.id}

3、创建文件 C:\opt\settings\server.properties,添加 env=DEV

4、集成

4.1 springboot 集成,在 application.properties 只配置下边内容

apollo.bootstrap.enabled=true

apollo.bootstrap.namespaces=application

4.2 spring 集成

5、正常启动并查看 C:\opt\data${app.id}\config-cache 下文件内容有配置即集成完成。

6、如果本地开发,可以在 3 步骤的 server.propoerties 中 env=DEV 改为 env=LOCAL, 这样就会使用 C:\opt\data${app.id}\config-cache 配置而不会在去服务器上拉取配置

经验分享:

1、在创建项目配置时需要充分理解 apollo 的 namespace 的设计理念,做好划分,充分的重用配置

namespace 分为以下几种:

初始化项目分配的 application:私有,只能被当前应用引用,在 spring 配置中引入 即可使用,一些比较独立的配置可放到这里

私有:只能被当前应用引用,一些比较独立的配置可放到这里

公有:所有项目都可以引用,一些都有的配置项放到这里,比如 jdbc,zookeeper,redis,mq 等的配置,这样可以极大的提高配置的重用,当改动时只需改动一个配置即可达到全部应用都改变

2、在项目中要充分利用好 LOCAL 的特性,当当前环境配置 /opt/settings/server.properties 成本地环境 LOCAL 时 apollo 不会去拉取远程的配置,而是读取本地的缓存配置文件。除了在本地开发时常用,这个特性还可以在当 apollo 的某个环境服务停掉时应急使用,可以将该环境暂时改为 LOCAL,这样不会影响到应用程序的正常运行,等服务恢复后再改回来。

常见问题汇总:https://github.com/ctripcorp/apollo/wiki/%E9%83%A8%E7%BD%B2&%E5%BC%80%E5%8F%91%E9%81%87%E5%88%B0%E7%9A%84%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98#42-%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E7%8E%AF%E5%A2%83

分布式部署指南: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

快速部署方式:https://github.com/ctripcorp/apollo/wiki/Quick-Start

nameSpace 设计:https://github.com/ctripcorp/apollo/wiki/Apollo%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E4%B9%8B%E2%80%9CNamespace%E2%80%9D

源码解析:http://www.iocoder.cn/categories/Apollo/

转载于:https://my.oschina.net/zhch/blog/1859015

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值