携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍

1、What is Apollo

1.1 Apollo简介

Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

Apollo支持4个维度管理Key-Value格式的配置:

  1. application (应用)
  2. environment (环境)
  3. cluster (集群)
  4. namespace (命名空间)

同时,Apollo基于开源模式开发,开源地址:https://github.com/ctripcorp/apollo

 

 二、分布式部署指南

1.环境

1.1 Java

  • Apollo服务端:1.8+
  • Apollo客户端:1.7+

可以通过如下命令检查:

java -version

样例输出:

java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

1.2 MySQL

  • 版本要求:5.6.5+

连接上MySQL后,可以通过如下命令检查:

SHOW VARIABLES WHERE Variable_name = 'version';
Variable_name Value
version 5.7.11


1.3、环境

分布式部署需要事先确定部署的环境以及部署方式。

Apollo目前支持以下环境:

 

2、部署步骤

部署步骤共三步:

  1. 创建数据库

    ApolloconfigDB(), 

    • Apollo服务端依赖于MySQL数据库,所以需要事先创建并完成初始化
  2. 获取安装包:GitHub地址:https://github.com/ctripcorp/apollo/releases
    • Apollo服务端安装包共有3个:apollo-configservice, apollo-adminservice, apollo-portal
      • 可以直接下载我们事先打好的安装包,也可以自己通过源码构建  
      • Apollo客户端jar包中由于会包含meta server信息,无法上传一个统一的jar包到中央仓库
      • 可以直接下载我们事先打好的安装包,修改相应配置后上传到自己公司的Maven私服
      • 也可以直接通过源码构建并上传到公司的Maven私服
  3. 部署Apollo服务端
    • 获取安装包后就可以部署到公司的测试和生产环境了

2.1 创建数据库

Apollo服务端共需要两个数据库:ApolloPortalDBApolloConfigDB

2.1.1 创建ApolloPortalDB

sql:下载地址:https://github.com/ctripcorp/apollo/tree/master/scripts/sql

通过各种MySQL客户端导入sql/apolloportaldb.sql即可。

导入成功后,可以通过执行以下sql语句来验证:

select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
Id Key Value Comment
1 apollo.portal.envs dev 可支持的环境列表

注:ApolloPortalDB只需要在生产环境部署一个即可

2.1.2 创建ApolloConfigDB

sql:下载地址:https://github.com/ctripcorp/apollo/tree/master/scripts/sql

通过各种MySQL客户端导入sql/apolloconfigdb.sql即可。

导入成功后,可以通过执行以下sql语句来验证:

select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
Id Key Value Comment
1 eureka.service.url http://127.0.0.1:8080/eureka/ Eureka服务Url

注:ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro分别部署3套ApolloConfigDB

2.1.3 调整服务端配置

Apollo自身的一些配置是放在数据库里面的。

2.1.3.1 调整ApolloPortalDB配置

配置项统一存储在ApolloPortalDB.ServerConfig表中。

1.apollo.portal.envs - 可支持的环境列表

默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感),如:

DEV,FAT,UAT,PRO

注1:一套Portal可以管理多个环境,但是每个环境都需要独立部署一套Config Service、Admin Service和ApolloConfigDB

注2:只在数据库添加环境是不起作用的,还需要为apollo-portal和apollo-client添加新增环境对应的meta server地址。

2.organizations - 部门列表

Portal中新建的App都需要选择部门,所以需要在这里配置可选的部门信息,样例如下:

[{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"}]

3.superAdmin - Portal超级管理员

超级管理员拥有所有权限

默认值apollo(默认用户),多个账号以英文逗号分隔(,)。

4.consumer.token.salt - consumer token salt

如果会使用开放平台API的话,可以设置一个token salt。如果不使用,可以忽略。

5.wiki.address

portal上“帮助”链接的地址,默认是Apollo github的wiki首页,可自行设置。

6.admin.createPrivateNamespace.switch

是否允许项目管理员创建private namespace。设置为true允许创建,设置为false则项目管理员在页面上看不到创建private namespace的选项。

2.1.3.2 调整ApolloConfigDB配置

配置项统一存储在ApolloConfigDB.ServerConfig表中,需要注意每个环境的ApolloConfigDB.ServerConfig都需要单独配置。

1.eureka.service.url - Eureka服务Url

apollo-configservice和apollo-adminservice都需要向eureka服务注册,需要配置eureka服务地址。默认apollo-configservice本身就是一个eureka服务,所以只需要填入apollo-configservice的地址即可,如有多个,用逗号分隔(注意不要忘了/eureka/后缀)。

如:内网开发环境

  1. 在DEV环境的ApolloConfigDB.ServerConfig表中设置eureka.service.url为:注1:这里需要填写本环境中全部的eureka服务地址,因为eureka需要互相复制注册信息

注2:如果希望将Config Service和Admin Service注册到公司统一的Eureka上

pollo默认自带了Eureka作为内部的注册中心实现,一般情况下不需要考虑为Apollo单独部署注册中心。

如需要注册到自己的Eureka,需修改Config Service:

  1. 修改com.ctrip.framework.apollo.configservice.ConfigServiceApplication,把@EnableEurekaServer改为@EnableEurekaClient
@EnableEurekaClient
@EnableAspectJAutoProxy
@EnableAutoConfiguration // (exclude = EurekaClientConfigBean.class)
@Configuration
@EnableTransactionManagement
@PropertySource(value = {"classpath:configservice.properties"})
@ComponentScan(basePackageClasses = {ApolloCommonConfig.class,
    ApolloBizConfig.class,
    ConfigServiceApplication.class,
    ApolloMetaServiceConfig.class})
public class ConfigServiceApplication {
  ...
}
  1. 修改ApolloConfigDB.ServerConfig表中的eureka.service.url,指向自己的Eureka地址

需要注意的是更改Eureka地址只需要改ApolloConfigDB.ServerConfig表中的eureka.service.url即可,不需要修改meta server地址。

2.namespace.lock.switch - 一次发布只能有一个人修改开关,用于发布审核

这是一个功能开关,如果配置为true的话,那么一次配置发布只能是一个人修改,另一个发布。

3.config-service.cache.enabled - 是否开启配置缓存

这是一个功能开关,如果配置为true的话,config service会缓存加载过的配置信息,从而加快后续配置获取性能。

默认为false,开启前请先评估总配置大小并调整config service内存配置。

2.2 获取安装包

可以通过两种方式获取安装包:

  1. 直接下载安装包
    • GitHub Release页面下载预先打好的安装包
    • GitHub地址:https://github.com/ctripcorp/apollo/releases
    • 如果对Apollo的代码没有定制需求,建议使用这种方式,可以省去本地打包的过程
    • 测试V0.11.0版本,在下载安装包,成功部署后,后台默认账号密码会出现密码错误,后来使用了源码构建
  2. 通过源码构建
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值