首页 > 其他分享 >Apollo配置中心

Apollo配置中心

时间:2023-06-21 14:02:56浏览次数:40  
标签:Apollo 中心 配置 环境 集群 apollo properties

• 统一管理不同环境、不同集群的配置

○ Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。

○ 同一份代码部署在不同的集群,可以有不同的配置,比如zk的地址等

○ 通过命名空间(namespace)可以很方便的支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖

○ 配置界面支持多语言(中文,English)

• 配置修改实时生效(热发布)

○ 用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序。

• 版本发布管理

○ 所有的配置发布都有版本概念,从而可以方便的支持配置的回滚。

• 灰度发布

○ 支持配置的灰度发布,比如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。

• 权限管理、发布审核、操作审计

○ 应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。

○ 所有的操作都有审计日志,可以方便的追踪问题。

• 客户端配置信息监控

○ 可以方便的看到配置在被哪些实例使用


目前唯一的外部依赖是MySQL,所以部署非常简单,只要安装好Java和MySQL就可以让Apollo跑起来


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

1. application (应用)

2. environment (环境)

3. cluster (集群)

4. namespace (命名空间)

举例:一个应用可以部署多个环境,每个环境可以创建多个集群,每个集群下还可以有多个命名空间,根据需要进行创建。


一般可以只使用环境和命名空间进行配置,如:有n个项目,在dev环境下创建common和application两个命名空间,common用来写各个项目公用的配置,application写私有的配置。再创建local、test、pro等环境(也是创建common和application两个命名空间,不过只是举例,可以根据实际需求创建其他命名空间,每个命名空间就相当于一个properties配置文件),根据不同环境进行不同配置即可。

安装教程:

准备:jdk1.8,mysql5.6及以上


以下内容请仔细阅读每一行,不要漏掉某一行或某项配置

安装准备

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

安装之前先导入2个数据库,https://github.com/ctripcorp/apollo/tree/master/scripts/sql

两种安装方式

1. 直接下载安装包

○ 从GitHub Release页面下载预先打好的安装包

○ 如果对Apollo的代码没有定制需求,建议使用这种方式,可以省去本地打包的过程

2. 通过源码构建

○ 从GitHub Release页面下载Source code包或直接clone源码后在本地构建

○ 如果需要对Apollo的做定制开发,需要使用这种方式


采用第一种安装方式,从GitHub Release页面下载最新版本的apollo-configservice-x.x.x-github.zip、apollo-adminservice-x.x.x-github.zip和apollo-portal-x.x.x-github.zip即可。


启动服务前要配置数据库信息:(spring.datasource.url最好按照本文档中给出的连接配置,以免某些版本数据库连接出现问题)

1.修改adminservice,和configservice的config文件夹中application-github.properties中数据库配置信息

spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8

spring.datasource.username =

spring.datasource.password =

2.修改portalservice的config文件夹下application-github.properties中数据库配置信息

spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8



运行apollo步骤:

1.下载上述三个程序

2.导入上述2个数据库

3.在3个程序的配置中修改数据库连接信息

4.修改环境配置,详见Apollo配置中心,并注意端口问题,详见Apollo配置中心 

5.启动服务,运行scripts文件夹中的start.sh启动服务 shutdown.sh可以关闭服务



环境配置

apollo根据环境的配置区分不同的运行环境,比如开发环境DEV,此环境的配置在开发时使用,生产环境PRO,此环境在生产环境下使用。

每个环境都要部署一份config和admin服务以及serviceconfig数据库,portal服务单独部署一份。

环境配置大致是2步:1.在apollo-portal的config/apollo-env.properties中配置env的地址,如图所示,假如一个环境想配置多个节点实现高可用,可以添加多个,用逗号分隔。2.修改对应环境下ApolloConfigDB 数据库中serverconfig表的eureka.service.url字段,与apollo-env.properties中配置env的地址一致。


每个环境可以根据实际情况配置在多台服务器,防止一台服务器挂掉后某个环境的配置就无法使用了

1. 下面以dev环境为例为dev环境新增一台服务器

2. (ApolloConfigDB 数据库) [dev 环境]

3. 修改表

 http://localhost:8080/eureka/,

 http://localhost:5080/eureka/

4. 修改

5. config\apollo-env.properties

6. dev.meta=

http://localhost:8080/eureka/,

 http://localhost:5080/eureka/

7. 然后在打包到 localhost 环境部署 apollo-adminservice 和 apollo-configservice

(这里要注意 , 新部署的 5080端口 需要和 之前的 8080端口的程序 连接同一个数据库)

8. 这个时候启动 关闭8080端口的服务器 还是能继续使用dev环境

端口配置

portal服务默认端口8070,config服务默认8080,如果要更改端口号,需要在startup.sh中修改。

如果config更改端口还需要在apolloconfig的serviceconfig表中修改eureka.service.url字段,同时apollo-portal的config/apollo-env.properties中配置env的地址也要进行相应的修改

特别提醒:

zookeeper内置的admin服务会占用8080端口,apollo默认的8080会和zookeeper服务冲突,所以最好修改其中之一。

第一种方式:在zookeeper的conf文件夹下的zoo.cfg文件添加admin.serverPort=确保没有服务占用的端口号;

第二种方式:修改apollo configservice的端口号不为8080即可

以上提醒不仅限于zookeeper,应注意可能占用8080端口的其他服务。

集群配置(如果配置了多环境,集群一般不是必要的,可以略过集群配置)

同一个程序 一个环境下如果有多套配置,可以配置多个集群,

• 通过添加集群,可以使同一份程序在不同的集群(如不同的数据中心)使用不同的配置

• 如果不同集群使用一样的配置,则没有必要创建集群

• Apollo默认会读取机器上/opt/settings/server.properties(linux)或C:\opt\settings\server.properties(windows)文件中的idc属性作为集群名字, 如SHAJQ(金桥数据中心)、SHAOY(欧阳数据中心)

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


使用教程

访问 portal服务 默认用户名apollo 密码admin


Apollo配置中心_配置文件

Apollo配置中心_配置文件_02

可以在主页创建项目,进入项目配置


Apollo配置中心_Apollo_03


• 私有Namespace的配置可以是yml,xml等格式、但是只有properties格式时才能直观的显示每个key对应的value以及修改时间,其他格式只能通过文本方式查看,没有表格页面。(所以还是用properties好一些。。)

• 公有Namespace只能使用properties格式的配置

集成Springboot

在需要apollo管理的项目中引入如下配置:

配置文件配置:

#每个项目的唯一的标识,配置中心通过这个来找到对应项目


app:

  id: ${spring.application.name}

#configservice的地址

apollo:

服务的地址,如果配置了多个节点可以写多个,用逗号分隔

  bootstrap:

#每个namespace对应apollo配置中心中的一组配置,如有多个用,分隔,不写默认是application

    namespaces: application

    enabled: true

    eagerLoad:

      enabled: true


:@Value 注解修饰的变量,会读取配置文件中的配置,引入apollo配置中心后,将直接支持动态获取配置的值,配置修改后再去获取@Value注释的变量值也会更新。

拓展使用

灰度发布

通俗解释就是,一个namespace作用于多个项目时,创建一个灰度版本,可以在其中添加一部分配置,通过配置灰度规则只作用于部分项目,后续也可以将这部分配置全量发布,合并到正常版本中。

本地开发模式

Apollo客户端还支持本地开发模式,这个主要用于当开发环境无法连接Apollo服务器的时候,比如在邮轮、飞机上做相关功能开发。

在本地开发模式下,Apollo只会从本地文件读取配置信息,不会从Apollo服务器读取配置。

可以通过下面的步骤开启Apollo本地开发模式。

1 修改环境

修改/opt/settings/server.properties(Mac/Linux)或C:\opt\settings\server.properties(Windows)文件,设置env为Local:

env=Local

更多配置环境的方式请参考1.2.2 Environment

2 准备本地配置文件

在本地开发模式下,Apollo客户端会从本地读取文件,所以我们需要事先准备好配置文件。

2.1 本地配置目录

本地配置目录位于:

• Mac/Linux: /opt/data/{appId}/config-cache

• Windows: C:\opt\data\{appId}\config-cache

appId就是应用的appId,如100004458。

请确保该目录存在,且应用程序对该目录有读权限。

【小技巧】推荐的方式是先在普通模式下使用Apollo,这样Apollo会自动创建该目录并在目录下生成配置文件。 本地缓存文件名如图所示

Apollo配置中心_Apollo_04

2.2 本地配置文件

本地配置文件需要按照一定的文件名格式放置于本地配置目录下,文件名格式如下:

{appId}+{cluster}+{namespace}.properties

• appId就是应用自己的appId,如100004458

• cluster就是应用使用的集群,一般在本地模式下没有做过配置的话,就是default

• namespace就是应用使用的配置namespace,一般是application

标签:Apollo,中心,配置,环境,集群,apollo,properties
From: https://blog.51cto.com/u_16167642/6528302

相关文章

  • PG-DBA培训03:Linux平台PostgreSQL安装配置与管理入门
    一、风哥PG-DBA培训03:Linux平台PostgreSQL安装配置与管理入门本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQL数据库实战入门与安装配置阶段之Linux平台PostgreSQL安装配置与管理入门课程,学完本课程可以掌握基于Linux平台的PostgreSQL项目规划,PostgreSQL......
  • PG-DBA培训02:Win平台PostgreSQL安装配置与管理入门 原创
    一、风哥PG-DBA培训02:Win平台PostgreSQL安装配置与管理入门本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQL数据库实战入门与安装配置阶段之Win平台PostgreSQL安装配置与管理入门课程,学完本课程可以掌握基于Windows平台的PostgreSQL项目规划,PostgreSQL数......
  • PG-DBA培训02:Win平台PostgreSQL安装配置与管理入门
    一、风哥PG-DBA培训02:Win平台PostgreSQL安装配置与管理入门本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQL数据库实战入门与安装配置阶段之Win平台PostgreSQL安装配置与管理入门课程,学完本课程可以掌握基于Windows平台的PostgreSQL项目规划,PostgreSQL数据......
  • PG-DBA培训03:Linux平台PostgreSQL安装配置与管理入门
    一、风哥PG-DBA培训03:Linux平台PostgreSQL安装配置与管理入门本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQL数据库实战入门与安装配置阶段之Linux平台PostgreSQL安装配置与管理入门课程,学完本课程可以掌握基于Linux平台的PostgreSQL项目规划,PostgreSQL数......
  • git配置全局或单项目用户名和邮箱
    git配置全局或单项目用户名和邮箱1,查看本地设置 gitconfig--local--list2,全局设置邮箱和用户名gitconfig--globaluser.name"YourName"gitconfig--globaluser.email"[email protected]"3,单项目设置用户名和邮箱gitconfiguser.name"YourName"gitc......
  • Python 修改ha配置文件
    Python修改ha配置文件任务要求1、用户输入字符串{"backend":"test.oldboy.org","record":{"server":"100.1.7.9","weight":20,"maxconn":30}}2、在对应的backend下,添加一条新记录backend不存在时,创建3、删除一条记录ba......
  • DNS的配置/etc/resolve.conf中的search字段是什么意思?
      search的意思是在你搜索的主机名后面,自动增加这个域名,拼成一个完整的域名地址然后在DNS中进行查询 比如,pingweb,会自动组合为web.cs1758coud.yyuap.yonyou这个域名示例:在dns服务器里面建立example.local域,然后建立web.example.local这条记录  完整的域名可以访......
  • 13. 注解配置SpringMVC
    使用配置类和注解代替web.xml和SpringMVC配置文件的功能13.1、创建初始化类,代替web.xml在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找到的话就用它来配置Servlet容器。Spring提供了这个接口的实现,名为SpringServletCo......
  • Ubuntu——初始配置
    1.设置root密码并使用root登录[sudo]passwordforunhan:#输入当前用户密码Newpassword:#输入root新密码Retypenewpassword:#再次输入root密码passwd:passwordupdatedsuccessfully#密码更新成功suroot#root登录2.更新源列表 sudoapt-getupdate3.......
  • Java学习之注册中心Zookeeper
    Zookeeper是什么ZooKeeper是一个用于维护配置信息、命名、提供分布式同步和提供组服务的集中式服务,它常作为一个注册中心服务用于分布式项目。Zookeeper拥有以下几个重要特性顺序一致性:来自客户端的相关指令会按照顺序执行,不会出现乱序的情况,客户端发送到服务的指令1->2->3->4,......