美文网首页
Apollo公共配置与集群

Apollo公共配置与集群

作者: 烂融小菜花 | 来源:发表于2019-10-08 15:36 被阅读0次

以我们目前的项目来做考量,每个项目存在很多相同的配置,如:数据库连接、mongoDB连接、MQ连接等。

在接入Apollo后,我们应如何配置这些相同的配置项,以达到最少的配置实现最好的效果?

每个开发人员本地开发环境都不一样(假设本地装有数据库、mongoDB、MQ),又应该怎样进行自己的配置而不影响其他人?

下面来讲讲Apollo的公共配置和集群,这两个东西可以解决我们的问题。

一、公共配置

为了方便管理公共配置,我登录Apollo管理界面,新建了一个common项目。

1.创建新的Namespace

创建Namespace需要项目管理员权限,如果发现没有添加Namespace按钮,可以找项目管理员授权。

  • 点击页面左侧的添加Namespace

    进入common项目后,点击页面左下角的添加Namespace。

  • 点击“创建新的Namespace”

    输入公共组件的Namespace名称,需要注意的是Namespace名称全局唯一

    Apollo会默认把部门代号添加在最前面

Apollo-namespace1.png
  • 点击提交后,页面会自动跳转到关联Namespace页面

    首先,选中所有需要有这个Namespace的环境和集群,一般建议全选

    其次,选中刚刚创建的namespace

    最后,点击提交

Apollo-namespace2.png
  • 关联成功后,页面会自动跳转到Namespace权限管理页面

    分配修改权限

    分配发布权限

    修改完成后,返回项目首页。

2.添加公共配置项,并发布

在公共的Namespace下添加的是各应用项目统一的配置项。采用文本方式更加简单快速。

Apollo-namespace3.png

3.应用关联以及覆盖公共配置

  • 关联公共组件Namespace

    进入使用公共组件的应用项目首页,我们这里以cas单点登录项目为例,也就是进入cas项目的首页,点击左侧的添加Namespace按钮,进入关联公共Namespace页面进行关联公共配置。关联成功后返回项目首页。

Apollo-namespace4.png

关联成功后,会在原来的默认application配置下面多出公共配置。

Apollo-namespace5.png
  • 覆盖公共配置

    覆盖公共配置有两种方式:

    方式一:点击公共配置项右边的”覆盖此配置“的按钮,进行配置更改覆盖

    方式二:直接在私有配置(application)下进行配置同名的配置项,同名的私有配置会比公共配置优先级高

4.更改应用项目使用的Namespace

apollo.bootstrap.namespaces=application,rscenter.common

5.测试

@RestController
@RequestMapping("test")
public class TestController {
    @Value("${testname:}")
    private String testName;

    @GetMapping("testApollo")
    public String testApollo() {
        return "hello: " + testName;
    }
}

启动项目后访问,即可获取到公共配置中testname的值

二、集群

在有些特殊情况下,应用有需求对不同的集群做不同的配置,比如部署在A机房的应用连接的es服务器地址和部署在B机房的应用连接的es服务器地址不一样。

在这种情况下,可以通过在Apollo创建不同的集群来解决。

当然我们也可以用Apollo的集群来解决我们各开发人员在自己本地开发时,需要配置不同的配置的问题。而这些不同的配置大致都是些公共配置,如:数据库连接、MongoDB连接、MQ连接等。所以我们一般只需要进行公共配置集群就可以了。

1. 创建集群

创建集群需要项目管理员权限,如果发现没有添加集群按钮,可以找项目管理员授权。我这里只进行公共配置的集群。所以直接进入common项目首页进行操作。

  • 点击页面左侧的“添加集群”按钮

  • 输入集群名称,选择环境并提交

    Apollo默认会读取机器上/opt/settings/server.properties(linux)C:\opt\settings\server.properties(windows)文件中的idc属性作为集群名字,

    在这里创建的集群名字需要和机器上server.properties中idc属性一致

    集群的名称最好以约定好的格式来命名,我们目前只为了解决开发人员本地不用的配置问题,可以约定以人名来命名,如:caishihua

  • 切换到对应的集群,修改配置并发布

Apollo-cluster.png

2.更改应用项目所需要的集群

Apollo支持多种集群配置方式,这里只选择了server.properties的配置方式进行讲解。其他方式请看后面

  • 更改server.properties的idc配置

    /opt/settings/server.properties(linux)C:\opt\settings\server.properties(windows)文件中的idc属性配置为集群名字

env=DEV
#apollo.meta=http://192.168.10.126:8080
idc=caishihua

访问cas的测试接口进行验证:

注意Apollo中cas项目的testname公共配置不能被覆盖,否则不会读取到common公共配置的caishihua集群配置。或者需要在cas项目中新建集群。

Apollo-cluster-result.png

三、集群的所有配置方式

Apollo支持以下方式集群,按照优先级从高到低分别为:

1. 通过Java System Property
apollo.cluster

可以通过Java的System Property apollo.cluster来指定

在Java程序启动脚本中,可以指定

-Dapollo.cluster=SomeCluster

如果是运行jar文件,需要注意格式是java -Dapollo.cluster=SomeCluster -jar xxx.jar

也可以通过程序指定,如System.setProperty("apollo.cluster", "SomeCluster");

2. 通过Spring Boot的配置文件

可以在Spring Boot的application.propertiesbootstrap.properties中指定apollo.cluster=SomeCluster

3. 通过Java System Property

可以通过Java的System Property idc来指定环境

在Java程序启动脚本中,可以指定

-Didc=xxx

如果是运行jar文件,需要注意格式是java -Didc=xxx -jar xxx.jar
注意key为全小写

4. 通过操作系统的System Environment

还可以通过操作系统的System Environment IDC来指定
注意key为全大写

5. 通过server.properties 配置文件

可以在server.properties配置文件中指定idc=xxx
对于Mac/Linux,文件位置为/opt/settings/server.properties
对于Windows,文件位置为C:\opt\settings\server.properties

四、Cluster Precedence(集群顺序)

  1. 如果apollo.clusteridc同时指定:
    • 我们会首先尝试从apollo.cluster指定的集群加载配置

    • 如果没找到任何配置,会尝试从idc指定的集群加载配置

    • 如果还是没找到,会从默认的集群(default)加载

  2. 如果只指定了apollo.cluster
    • 我们会首先尝试从apollo.cluster指定的集群加载配置

    • 如果没找到,会从默认的集群(default)加载

  3. 如果只指定了idc
    • 我们会首先尝试从idc指定的集群加载配置

    • 如果没找到,会从默认的集群(default)加载

  4. 如果apollo.clusteridc都没有指定:
    • 我们会从默认的集群(default)加载配置

相关文章

  • Apollo公共配置与集群

    以我们目前的项目来做考量,每个项目存在很多相同的配置,如:数据库连接、mongoDB连接、MQ连接等。 在接入Ap...

  • Apollo增加集群配置

    1.选择一个项目(例如:shipper) 2.添加一个自己的集群 3.同步集群配置(1)选中一个用于被复制集群(2...

  • Apollo的学习

    关于apollo Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的...

  • Apollo配置中心

    Apollo介绍 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群...

  • 基于Docker在Win10上部署Apollo配置中心

    简介 Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改...

  • 携程Apollo简单入门教程这一篇就够了

    1. Apollo背景 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的...

  • SpringBoot整合Apollo看这篇文章基本够了

    简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修...

  • SpringBoot 整合 apollo

    简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修...

  • Apollo简介

    Apollo简介 2016年5月,携程开源的配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能...

  • 55 开源配置中心Apollo

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的 配置,配置修改后...

网友评论

      本文标题:Apollo公共配置与集群

      本文链接:https://www.haomeiwen.com/subject/elpwpctx.html