原理和应用场景:
通过添加集群,可以使同一份程序在不同的集群(如不同的数据中心)使用不同的配置
如果不同集群使用一样的配置,则没有必要创建集群
Apollo默认会读取机器上/opt/settings/server.properties(linux)或C:\opt\settings\server.properties(windows)文件中的idc属性作为集群名字, 如SHAJQ(XX数据中心)、SHAOY(XX数据中心)
在这里创建的集群名字需要和机器上server.properties中的idc属性一致
一, 集群原理
Apollo支持配置按照集群划分,也就是说对于一个appId和一个环境,对不同的集群可以有不同的配置。
1.0.0版本开始支持以下方式集群,按照优先级从高到低分别为:
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.properties或bootstrap.properties中指定apollo.cluster=SomeCluster
3.通过server.properties配置文件
可以在server.properties配置文件中指定idc=xxx
对于Mac/Linux,文件位置为/opt/settings/server.properties
对于Windows,文件位置为C:\opt\settings\server.properties
Cluster Precedence(集群顺序)
1.如果apollo.cluster和idc同时指定:
我们会首先尝试从apollo.cluster指定的集群加载配置
如果没找到任何配置,会尝试从idc指定的集群加载配置
如果还是没找到,会从默认的集群(default)加载
2.如果只指定了apollo.cluster:
我们会首先尝试从apollo.cluster指定的集群加载配置
如果没找到,会从默认的集群(default)加载
3.如果只指定了idc:
我们会首先尝试从idc指定的集群加载配置
如果没找到,会从默认的集群(default)加载
4.如果apollo.cluster和idc都没有指定:
我们会从默认的集群(default)加载配置
默认应用程序使用default集群,可以在application.yml中指定使用哪个集群,不能在app.properties中指定,不起作用,也可以在启动的时候指定。
二,创建集群
1.在首页面 的右下角点击 添加集群
2.添加集群名字,然后提交
3.切换到对应的集群,修改配置并发布即可
4.修改C:\opt\settings\server.properties(windows)文件中的idc属性作为集群名字。
5.如果应用还在其它机房部署了应用,那么在上述的配置下,会读到default集群下的配置。