![888a68a4d4b27b1a6d996474ec5ac327.png](https://i-blog.csdnimg.cn/blog_migrate/6baa05ab1aa93af284f8bf87bd7c098d.jpeg)
本篇文章为系列文章,未读前几集的同学请猛戳这里:
哈喽沃德先生:Spring Cloud 系列之 Apollo 配置中心(一)zhuanlan.zhihu.com![3ad946d00d74f1c30c90ff5a9aed4095.png](https://i-blog.csdnimg.cn/blog_migrate/4abed08e093d0998ff757b656f6a4cd3.jpeg)
![40730043a47fcaee94f67580f5e898bd.png](https://i-blog.csdnimg.cn/blog_migrate/9ea0e482183ea6fcf410cf7aa6a2737b.jpeg)
本篇文章讲解 Apollo 多环境部署方案,教大家搭建除了 DEV 的其他环境。
多环境部署方案
![ee894ec6c478093113ecbc7fc7789cb3.png](https://i-blog.csdnimg.cn/blog_migrate/33072034243e90d53c3e62fd17a8d7e7.png)
为了让大家有更真实的感受,多环境部署方案我们在 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,公共的 Portal192.168.10.102
:DEV 环境,独立部署一套 Config Service、Admin Service,使用公共的 Portal192.168.10.103
:PRO 环境,独立部署一套 Config Service、Admin Service,使用公共的 Portal
![cf00a1c719aaa404f4598ebab62b9a11.png](https://i-blog.csdnimg.cn/blog_migrate/3077cd683c5c8703c3a7baa92b849dd0.png)
创建数据库
- 192.168.10.101 这台机器运行
apolloportaldb.sql
文件。 - 192.168.10.102 和 192.168.10.103 都运行
apolloconfigdb.sql
文件。
最终结果如下:
![fd850fefc4c11a3ea17fa4667ba32b11.png](https://i-blog.csdnimg.cn/blog_migrate/bf264f2e6f8f21f8c785ff3bea86286f.png)
调整服务端配置
Apollo 自身的一些配置是放在数据库里面的,所以需要针对实际情况做一些调整。
配置项统一存储在 ApolloPortalDB.ServerConfig
表中,如下图,在③Value的地方添加环境即可,比如 dev,pro
。
![aeed15df726679ceae6ca9f5e10c8d45.png](https://i-blog.csdnimg.cn/blog_migrate/eb2caa06e79ea5b9ba3a51d5697fcbd6.jpeg)
或者也可以通过管理员工具 - 系统参数
页面进行配置,通过 apollo.portal.envs
关键字查询并进行设置,无特殊说明则修改完一分钟实时生效。
![7d927b3996b61374878fb058f8bd327e.png](https://i-blog.csdnimg.cn/blog_migrate/4d7602bc1b4934f9feb61a5a0e3c590a.jpeg)
下载安装包
从GitHub Release页面下载最新版本的apollo-configservice-x.x.x-github.zip
、apollo-adminservice-x.x.x-github.zip
和apollo-portal-x.x.x-github.zip
即可。本小节采用这种方式,可以省去本地打包的过程。
如果需要对 Apollo 做定制开发,也可以选择通过源码构建:https://github.com/ctripcorp/apollo/wiki/分布式部署指南#222-通过源码构建 后面高可用环境的搭建我们就采用这种方式。
配置数据库
Apollo 服务端需要知道如何连接到你前面创建的数据库,数据库连接串信息位于上一步下载的压缩包中的config/application-github.properties
中。
配置 apollo-configservice 的数据库连接信息
- 将
apollo-configservice-x.x.x-github.zip
上传至 192.168.10.102 和 192.168.10.103 - 解压
apollo-configservice-x.x.x-github.zip
- 打开
config
目录下的application-github.properties
文件 - 填写正确的
ApolloConfigDB
数据库连接串信息,注意用户名和密码后面不要有空格! - 修改完的效果如下:
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 1234
配置 apollo-adminservice 的数据库连接信息
- 将
apollo-adminservice-x.x.x-github.zip
上传至 192.168.10.102 和 192.168.10.103 - 解压
apollo-adminservice-x.x.x-github.zip
- 打开
config
目录下的application-github.properties
文件 - 填写正确的
ApolloConfigDB
数据库连接串信息,注意用户名和密码后面不要有空格! - 修改完的效果如下:
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 1234
配置 apollo-portal 的数据库连接信息
- 先将
apollo-portal-x.x.x-github.zip
上传至 192.168.10.101。 - 解压
apollo-portal-x.x.x-github.zip
- 打开
config
目录下的application-github.properties
文件 - 填写正确的
ApolloPortalDB
数据库连接串信息,注意用户名和密码后面不要有空格! - 修改完的效果如下:
# 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) 地址,类似以下方式,修改完需要重启生效。
![7c1d5caf99a7270c23dd3e279b0b8c7f.png](https://i-blog.csdnimg.cn/blog_migrate/e9c85b695a38f6423190d218ca9c3019.jpeg)
{
"DEV":"http://192.168.10.102:8080",
"PRO":"http://192.168.10.103:8080"
}
旧版本配置方式
打开apollo-portal-x.x.x-github.zip
中config
目录下的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
高):
- 通过 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");
- 通过操作系统的 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 以及各服务是否正常启动,如下:
![a1d76ee7cab8e42d82234633eeaf71bb.png](https://i-blog.csdnimg.cn/blog_migrate/7bc4bcb5d33ffb0f8f195eb868d78207.jpeg)
![462e1751dfcf4d80ad6c874968dc29c3.png](https://i-blog.csdnimg.cn/blog_migrate/055f48578430edcbf4bf62851b155b5a.jpeg)
再访问:192.168.10.101:8070 输入 Apollo/admin 进行登录,点击案例项目 SampleApp 进入项目首页,看到多环境说明搭建成功,后续的操作就和之前讲的一样了,这里就不再过多赘述。
![66d248165c8787c855cc95645cab8736.png](https://i-blog.csdnimg.cn/blog_migrate/88af6d043ea669ee4d932619738a0eb5.jpeg)
下一篇我们讲解 Apollo 高可用环境搭建,灰度发布,教大家搭建企业中真实环境的配置中心,记得关注噢~
![40da4a137060590208128bd0cb711b54.gif](https://i-blog.csdnimg.cn/blog_migrate/bc8843aa08a7862fd8bf6bc10f65d6c0.gif)
大家可以通过 分类
查看更多关于 Spring Cloud
的文章。
本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议
。
您的点赞
和转发
是对我最大的支持。
扫码关注 哈喽沃德先生
「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~
![ebacaf70ecc20f1e2c4013e9c71545c8.gif](https://i-blog.csdnimg.cn/blog_migrate/91412f15d3d1f8751e123462e751b3e6.gif)
![bc3daae4231776c97cf5d4282d5ca885.png](https://i-blog.csdnimg.cn/blog_migrate/b787714fd74688f3b82547a8ac31bfb6.png)