本篇文章为系列文章,未读前几集的同学请猛戳这里:

哈喽沃德先生:Spring Cloud 系列之 Apollo 配置中心(一)​zhuanlan.zhihu.com

哈喽沃德先生:Spring Cloud 系列之 Apollo 配置中心(二)​zhuanlan.zhihu.com

本篇文章讲解 Apollo 多环境部署方案,教大家搭建除了 DEV 的其他环境。

多环境部署方案

https://www.zhihu.com/video/1251832577117757440

为了让大家有更真实的感受,多环境部署方案我们在 Linux 环境下搭建,不再使用 Quick Start 脚本。

当项目要上线部署到生产环境时,项目的配置比如数据库、缓存、队列等服务器的地址都会发生改变,这时候就需要通过 Apollo 为生产环境添加配置。目前 Apollo 预先定义的环境为:

  • DEV:Development environment 开发环境,用于开发者调试使用;
  • FAT:Feature Acceptance Test environment 功能验收测试环境,用于软件测试者测试使用;
  • UAT:User Acceptance Test environment 用户验收测试环境(仿真环境),用于生产环境下的软件测试者测试使用
  • PRO:Production environment 生产环境,最终上线环境。

Apollo 也支持自定义环境。具体方式可以参考官方文档:https://github.com/ctripcorp/apollo/wiki/部署&开发遇到的常见问题#42-添加自定义的环境

这里我们要明确一些信息:

  • Portal 部署在生产环境的机房,通过它来直接管理 FAT、UAT、PRO 等环境的配置即可;
  • Config Service、Admin Service 和 ApolloConfigDB 在每个环境都单独部署;
  • 应用需要配置指定的环境,默认为 DEV。

总结下来就是:一套 Portal 可以管理多个环境,但是每个环境都需要独立部署一套 Config Service、Admin Service 和 ApolloConfigDB。

服务器地址说明:

  • 192.168.10.101:apollo-portal,公共的 Portal
  • 192.168.10.102:DEV 环境,独立部署一套 Config Service、Admin Service,使用公共的 Portal
  • 192.168.10.103:PRO 环境,独立部署一套 Config Service、Admin Service,使用公共的 Portal

https://www.zhihu.com/video/1251832732520091648

创建数据库

  • 192.168.10.101 这台机器运行 apolloportaldb.sql 文件。
  • 192.168.10.102 和 192.168.10.103 都运行 apolloconfigdb.sql 文件。

最终结果如下:

调整服务端配置

Apollo 自身的一些配置是放在数据库里面的,所以需要针对实际情况做一些调整。

配置项统一存储在 ApolloPortalDB.ServerConfig 表中,如下图,在③Value的地方添加环境即可,比如 dev,pro

或者也可以通过管理员工具 - 系统参数页面进行配置,通过 apollo.portal.envs 关键字查询并进行设置,无特殊说明则修改完一分钟实时生效。

下载安装包

从GitHub Release页面下载最新版本的apollo-configservice-x.x.x-github.zipapollo-adminservice-x.x.x-github.zipapollo-portal-x.x.x-github.zip即可。本小节采用这种方式,可以省去本地打包的过程。

如果需要对 Apollo 做定制开发,也可以选择通过源码构建:https://github.com/ctripcorp/apollo/wiki/分布式部署指南#222-通过源码构建 后面高可用环境的搭建我们就采用这种方式。

配置数据库

Apollo 服务端需要知道如何连接到你前面创建的数据库,数据库连接串信息位于上一步下载的压缩包中的config/application-github.properties中。

配置 apollo-configservice 的数据库连接信息

  1. apollo-configservice-x.x.x-github.zip 上传至 192.168.10.102 和 192.168.10.103
  2. 解压apollo-configservice-x.x.x-github.zip
  3. 打开config目录下的application-github.properties文件
  4. 填写正确的 ApolloConfigDB 数据库连接串信息,注意用户名和密码后面不要有空格!
  5. 修改完的效果如下:
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 1234

配置 apollo-adminservice 的数据库连接信息

  1. apollo-adminservice-x.x.x-github.zip 上传至 192.168.10.102 和 192.168.10.103
  2. 解压apollo-adminservice-x.x.x-github.zip
  3. 打开config目录下的application-github.properties文件
  4. 填写正确的 ApolloConfigDB 数据库连接串信息,注意用户名和密码后面不要有空格!
  5. 修改完的效果如下:
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 1234

配置 apollo-portal 的数据库连接信息

  1. 先将 apollo-portal-x.x.x-github.zip 上传至 192.168.10.101。
  2. 解压apollo-portal-x.x.x-github.zip
  3. 打开config目录下的application-github.properties文件
  4. 填写正确的 ApolloPortalDB 数据库连接串信息,注意用户名和密码后面不要有空格!
  5. 修改完的效果如下:
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 1234

配置 apollo-portal 的 meta service 信息

Apollo Portal 需要在不同的环境访问不同的 meta service(apollo-configservice) 地址,所以我们需要在配置中提供这些信息。默认情况下,meta service 和 config service 是部署在同一个JVM进程,所以 meta service 的地址就是 config service 的地址。

对于 1.6.0 及以上版本,可以通过 ApolloPortalDB.ServerConfig 中的配置项来配置 Meta Service 地址。

新版本配置方式

通过 apollo.portal.meta.servers 添加 meta service(apollo-configservice) 地址,类似以下方式,修改完需要重启生效。

{"DEV":"http://192.168.10.102:8080","PRO":"http://192.168.10.103:8080"
}

旧版本配置方式

打开apollo-portal-x.x.x-github.zipconfig目录下的apollo-env.properties文件。

假设 DEV 的 apollo-configservice 未绑定域名,地址是 1.1.1.1:8080,FAT 的 apollo-configservice 绑定了域名 http://apollo.fat.xxx.com,UAT 的 apollo-configservice 绑定了域名 http://apollo.uat.xxx.com,PRO 的 apollo-configservice 绑定了域名 http://apollo.xxx.com,那么可以如下修改各环境 meta service 服务地址,格式为${env}.meta=http://${config-service-url:port},如果某个环境不需要,也可以直接删除对应的配置项,参考案例如下:

dev.meta=http://1.1.1.1:8080
fat.meta=http://apollo.fat.xxx.com
uat.meta=http://apollo.uat.xxx.com
pro.meta=http://apollo.xxx.com

如果采用旧版本配置方式,本小节配置方案如下:

#local.meta=http://localhost:8080
dev.meta=http://192.168.10.102:8080
#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://192.168.10.103:8080

除了通过apollo-env.properties方式配置 meta service 以外,apollo 也支持在运行时指定 meta service(优先级比apollo-env.properties高):

  1. 通过 Java System Property ${env}_meta
  • 可以通过 Java 的 System Property ${env}_meta来指定
  • java -Ddev_meta=http://config-service-url -jar xxx.jar
  • 也可以通过程序指定,如System.setProperty("dev_meta", "http://config-service-url");
  1. 通过操作系统的 System Environment ${ENV}_META
  • DEV_META=http://config-service-url
  • 注意 key 为全大写,且中间是_分隔

启动

三台机器都进入对应安装包的 script 目录,执行 startup.sh 文件。

我的启动顺序为:

  • 192.168.10.101 启动 Portal
  • 192.168.10.102 启动 ConfigService 再启动 AdminService
  • 192.168.10.103 启动 ConfigService 再启动 AdminService

先访问:192.168.10.102:8080 和 192.168.10.103:8080 看看 Eureka 以及各服务是否正常启动,如下:

再访问:192.168.10.101:8070 输入 Apollo/admin 进行登录,点击案例项目 SampleApp 进入项目首页,看到多环境说明搭建成功,后续的操作就和之前讲的一样了,这里就不再过多赘述。

下一篇我们讲解 Apollo 高可用环境搭建,灰度发布,教大家搭建企业中真实环境的配置中心,记得关注噢~

大家可以通过 分类 查看更多关于 Spring Cloud 的文章。

本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议

您的点赞转发是对我最大的支持。

扫码关注 哈喽沃德先生「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~

apollo 配置中心_Spring Cloud 系列之 Apollo 配置中心(三)相关推荐

  1. Spring Cloud 系列之 Nacos 配置中心

    目录 一.Nacos简介 二.Nacos安装及配置 1.环境准备 2.安装包下载 (1)源码方式 (2)发行包方式 3.启动Nacos服务 4.Nacos数据库配置 (1)MySQL数据源 (2)初始 ...

  2. eureka集群只注册一个_Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇

    Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇 本文主要内容: 1:spring cloud整合Eureka总结 本文是由凯哥(凯哥Java:kagejava ...

  3. eureka多台注册中心_spring cloud注册中心之Eureka

    什么是注册中心? 随着微服务的盛行,越来越多的应用,开始拆成一个一个的服务,服务之间相互依赖,那么内部的服务是怎么相互调用的.例如:服务A部署在3个服务器上,3个实例有不同的ip地址.然后服务B依赖服 ...

  4. springcloud 网关_Spring Cloud 系列之 Netflix Zuul 服务网关(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里: 哈喽沃德先生:Spring Cloud 系列之 Netflix Zuul 服务网关(一)​zhuanlan.zhihu.com 本篇文章讲解 Zuul ...

  5. @scheduled注解配置时间_Spring Cloud 之配置服务器(下)配置刷新

    学习目标 本文所讲内容为上一文的后续,我们在上一文中学习了什么是 Spring Cloud 的配置服务器:如何使用两种方式搭建 Spring Cloud Config Server 以及客户端如何连接 ...

  6. Spring Cloud【Finchley】实战-06使用/actuator/bus-refresh端点手动刷新配置 + 使用Spring Cloud Bus自动更新配置

    文章目录 概述 特别注意版本信息 使用@RefreshScope + /actuator/bus-refresh端点手动刷新配置 Step1. 添加依赖 Step2. 配置RabbitMQ信息 Ste ...

  7. 容器注册到consul_Spring Cloud 系列之 Consul 注册中心(一)

    Netflix Eureka 2.X https://github.com/Netflix/eureka/wiki 官方宣告停止开发,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka ...

  8. consul java 注册中心_Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例...

    获取springcloud实战项目详细视频教程,请留言联系. 1.创建项目 我们创建聚合项目来讲解 Consul,首先创建一个 pom 父工程. 2.添加依赖 pom.xml 4.0.0 com.ex ...

  9. Spring Cloud 系列之 ZooKeeper 注册中心

    什么是注册中心 服务注册中心是服务实现服务化管理的核心组件,类似于目录服务的作用,主要用来存储服务信息,譬如提供者 url 串.路由信息等.服务注册中心是微服务架构中最基础的设施之一. 注册中心可以说 ...

最新文章

  1. java有点_JAVA 有点儿冷
  2. tidb mysql5.7_MYSQL5.7实时同步数据到TiDB
  3. 组织敏捷之路上的七点体会
  4. 校招启动 | 2021 神策未来星全面启航,只差 1 个你!
  5. 【Linux】一步一步学Linux——who命令(95)
  6. 中南大学计算机学院羽毛球赛,“羽你同行”交通院第六届师生羽毛球赛圆满举办...
  7. 白中英 计算机组成原理_计算机组成原理 第五版.立体化教材 白中英 大学教材...
  8. python nums函数获取结果记录集有多少行记录_python3 数据挖掘之pandas学习记录(一)-----NumPy...
  9. vue和react的区别是什么?
  10. 关于AJAX的安全性
  11. ImageJ批量操作时常见报错及其原因
  12. 数据总线、地址总线、控制总线
  13. 基于Hadoop的项目实战-职位数据综合分析
  14. 记一次oracle通过dblink连接mysql实施
  15. lwip连续发数据卡死_用lwip发送大量数据时,遇到的问题解答记录 | 求索阁
  16. SQL语句group by 的求和sum
  17. ZYNQ - 无DDR固化程序(代码运行在OCM上)
  18. SAP的成本中心和利润中心的关系
  19. 分布式理论 C++11 Kafka
  20. 关于win10键盘无法打出@和#的问题

热门文章

  1. Linux 大文件拷贝失败,linux – Rsync失败,“文件太大”
  2. 服务端设置忽略更新_react服务端渲染: cookie如何透传给后端,后端如何设置cookie...
  3. java博弈,人机博弈小游戏(Java)
  4. java集合按大小排序_List集合对象中按照不同属性大小排序的实例
  5. 西安工业大学计算机专业好吗,西安工业大学(专业学位)计算机技术考研难吗
  6. 力扣812.最大三角形面积
  7. 学习Scala: 初学者应该了解的知识
  8. 【C++】C++未定义行为
  9. UVa 1586 Molar mass 分子量 题解
  10. Inside ARC — to see the code inserted by the compiler