Apollo配置中心部署

一、简介


1、apollo简介

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

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

application (应用)
environment (环境)
cluster (集群)
namespace (命名空间)

2、apollo的特点

  • 统一管理不同环境、不同的集群配置
  • 配置修改实时生效(热发布)
  • 版本发布管理
  • 灰度发布
  • 权限管理、发布审核、操作审计
  • 客户端配置信息监控
  • 提供java和.net原生客户端
  • 部署简单

3、基础模型

如下即是Apollo的基础模型:

  • 用户在配置中心对配置进行修改并发布
  • 配置中心通知Apollo客户端有配置更新
  • Apollo客户端从配置中心拉取最新的配置、更新本地配置并通知到应用

4、整体架构设计

上图简要描述了Apollo的总体设计,我们可以从下往上看:

  • Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端
  • Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
  • Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳
  • 在Eureka之上我们架了一层Meta Server用于封装Eureka的服务发现接口
  • Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试
  • Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试
  • 为了简化部署,我们实际上会把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中

5、客户端设计

上图简要描述了Apollo客户端的实现原理:

  1. 客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。
  2. 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。
  3. 这是一个fallback机制,为了防止推送机制失效导致配置不更新
这是一个fallback机制,为了防止推送机制失效导致配置不更新
客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304 - Not Modified
定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property

apollo.refreshInterval来覆盖,单位为分钟。

  1. 客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存中
  2. 客户端会把从服务端获取到的配置在本地文件系统缓存一份
    • 在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置
  3. 应用程序从Apollo客户端获取最新的配置、订阅配置更新通知

二、部署

1、部署mysql5.7:使用docker的方式

docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.39

2、创建数据库:

#根据官网提供的sql文件,导入到创建的数据中:
ApolloPortalDB    #图形界面数据库

apolloconfig01    #config服务数据库
apolloconfig02    #另外一个config的数据库

3、添加chart仓库并查看:

helm repo add apollo https://charts.apolloconfig.com helm search repo apollo

4、修改value并部署portal:

#拉取portal服务:
helm fetch apollo/apollo-portal --untar

#修改value.yaml文件:
vim values.yaml
portaldb:
  name: apollo-portaldb
  # apolloportaldb host
  host: 113.31.105.127
  port: 3306
  dbName: ApolloPortalDB
  # apolloportaldb user name
  userName: root
  # apolloportaldb password
  password: 123456


helm upgrade --install portal ./apollo-portal -n apollo-01
#配置一个域名,进行访问:默认用户名密码:apollo/admin
 52 config:
 53   # spring profiles to activate
 54   profiles: "github,auth"
 55   # specify the env names, e.g. dev,pro
 56   envs: "dev,test"
 57   # specify the meta servers, e.g.
 58   # dev: http://apollo-configservice-dev:8080
 59   # pro: http://apollo-configservice-pro:8080
 60   metaServers:                                                                                                           
 61     dev: http://apollo-service-apollo-configservice:8080

5、修改value文件并部署config和admin服务:

#拉去config服务:
helm fetch apollo/apollo-service --untar

#修改value.yaml文件:
configdb:
  name: apollo-configdb
  # apolloconfigdb host
  host: "113.31.105.127"
  port: 3306
  dbName: apolloconfig01
  # apolloconfigdb user name
  userName: "root"
  # apolloconfigdb password
  password: "123456"

#部署两个
helm upgrade --install apollo-service ./apollo-service/ -n apollo-01
helm upgrade --install apollo-service ./apollo-service/ -n apollo-02

6、修改portal的value,添加环境:

vim value.yaml

 52 config:
 53   # spring profiles to activate
 54   profiles: "github,auth"
 55   # specify the env names, e.g. dev,pro
 56   envs: "dev,test"
 57   # specify the meta servers, e.g.
 58   # dev: http://apollo-configservice-dev:8080
 59   # pro: http://apollo-configservice-pro:8080
 60   metaServers:
 61     dev: http://apollo-service-apollo-configservice:8080
 62     test: http://apollo-service-apollo-configservice.apollo-02:8080   
#添加两个环境:dev和test,dev对应apollo-01中的服务,test对应apollo-02里面的服务

#更新:
helm upgrade  portal ./apollo-portal -f apollo-portal/values.yaml -n apollo-01

#重启portal
kubectl rollout restart deploy/portal-apollo-portal -n apollo-01

7、查看是否生效:

8、创建一个应用:

在部门选择时,只有两个默认的,需要通过数据库进行修改:

#表:ServerConfig
#定义为自己的名称:例如项目名称或公司名称,我们这里定义为:sllyn

可以看到这个新创建的应用已经有两个环境了,如果还需要增加环境:

部署一套新的apollo-service
修改portal,增加环境即可。

参考文档:Apollo


【完成】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值