Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。官方github:https://github.com/ctripcorp/apollo
网上教学文档挺多的,我就不多做文字描述 看下架构图
这边是携程的架构图 4个环境 做了集群 portal 只需在一个环境部署 apolloPortalDB数据库也是一样
admin和config每个环境都需要部署当然 他们依赖的apolloConfigDB也要一起部署
这边有个小细节 注册中心用了一个外部项目 根据携程介绍 Config Service 是可以作为注册中心的 自己可以向自己注册的
下面为精简版
像环境之类的就不多介绍了 jdk1.8 mysql 5.6+
我这边是从github上直接拉apollo的源码,到源码中找到sql的文件的
到数据库中执行 生成两个库
主要介绍几个关键的地方
上图中 eureka.service.url value为实际eureka注册中心的地址 需要根据实际情况更改 如果有多个可以以 逗号 分隔
apollo.portal.envs 支持多个环境 默认为dev 可以手动添加 例 dev,fat
下面的部门可以根据自己的实际情况修改
获取项目包有两种方式 一种到github上直接下载 地址:https://github.com/ctripcorp/apollo/releases/tag/v1.4.0
还有一种是源码构建 看各位的需求
最终获得3个zip包
一般zip包用 tar命令可能会失败,可以选择使用unzip命令,可能会提示命令无效,因为没有安装这个命令
可以通过 yum -y install zip unzip 下载命令即可
压缩包解压成功后,需要进行配置
每个项目都有这个配置文件 在config目录下 里面就是数据库的配置 根据各服务器进行配置
# DataSource
spring.datasource.url = jdbc:mysql://ip:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = 用户名
spring.datasource.password = 密码
portal包中多一个配置文件 主要是配置各个环境的注册中心的地址
#local.meta=http://localhost:8080
dev.meta=http://fill-in-fat-meta-server:8060
#fat.meta=http://fill-in-fat-meta-server:8080
#uat.meta=http://fill-in-uat-meta-server:8080
#lpt.meta=${lpt_meta}
#pro.meta=http://fill-in-pro-meta-server:8080
每个环境的eureka 地址 根据实际修改
然后是启动命令 每个项目都在scripts目录下的 start.sh
这些都是可以自定义的 根据实际情况设置
最后 ./start.sh 命令启动 config >> admin >> portal 依次启动
--------------------------------------------更新一下-----------------------------------
因为我使用的是携程官方的包,遇到一个问题,纠结了好长时间,我使用的是阿里云服务器,使用apllo的config service (官方包 非自己打包)作为注册中心 ,我做测试的时候访问的是阿里云的公网ip,然后就一直连不上 config 的注册中心,一直会改变成阿里的内网,如下配置
#这个是默认以ip形式访问
eureka.instance.prefer-ip-address=true
#这个是指定ip访问 apollo中默认未加
eureka.instance.ip-address=172.12.9.0
所以一直会出现ip改变的问题 分享一下 希望能帮到各位
--------------------------------更新一下多环境的apollo配置--------------------------------
上面的图已经描述的很清晰了 主要几个改动点
portal 需要管理不同的环境 首先需要有可以支持的的环境 serverconfig
然后portal中需要配置每个环境的meta-server 有几个环境就配置几个
这样 apollo 就管理了多个环境了
完结 撒花
欢迎指正
努力,奋斗!