apollo分布式部署
分布式部署需要事先确定部署的环境以及部署方式。
Apollo目前支持以下环境:
- DEV
- 开发环境
- FAT
- 测试环境,相当于alpha环境(功能测试)
- PRO
- 生产环境
- Portal部署在生产环境的机房,通过它来直接管理FAT、UAT、PRO等环境的配置
- Meta Server、Config Service和Admin Service在每个环境都单独部署,使用独立的数据库
- Meta Server、Config Service和Admin Service在生产环境部署在两个机房,实现双活
- Meta Server和Config Service部署在同一个JVM进程内,Admin Service部署在同一台服务器的另一个JVM进程内
二、部署步骤
部署步骤共三步:
1. 创建数据库
Apollo服务端依赖于MySQL数据库,所以需要事先创建并完成初始化
2. 获取安装包
Apollo服务端安装包共有3个:apollo-configservice, apollo-adminservice, apollo-portal 可以直接下载我们事先打好的安装包,也可以自己通过源码构建部署Apollo服务端
3 获取安装包后就可以部署到公司的测试和生产环境了
1、下载安装包
获取apollo-configservice、apollo-adminservice、apollo-portal安装包
从GitHub Release页面下载最新版本的apollo-configservice-x.x.x-github.zip
、apollo-adminservice-x.x.x-github.zip
和apollo-portal-x.x.x-github.zip
即可。
2、 创建数据库
Apollo服务端共需要两个数据库:ApolloPortalDB
和ApolloConfigDB
,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。
需要注意的是ApolloPortalDB只需要在生产环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro分别部署3套ApolloConfigDB。
2.1、创建ApolloPortalDB
可以根据实际情况选择通过手动导入SQL或是通过Flyway自动导入SQL创建。
手动导入SQL创建
通过各种MySQL客户端导入apolloportaldb.sql即可。
以MySQL原生客户端为例:
source /your_local_path/scripts/sql/apolloportaldb.sql
验证
导入成功后,可以通过执行以下sql语句来验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
Id | Key | Value | Comment |
---|---|---|---|
1 | apollo.portal.envs | dev | 可支持的环境列表 |
2.2、 创建ApolloConfigDB
可以根据实际情况选择通过手动导入SQL或是通过Flyway自动导入SQL创建。
2.1.2.1 手动导入SQL
通过各种MySQL客户端导入apolloconfigdb.sql即可。
以MySQL原生客户端为例:
source /your_local_path/scripts/sql/apolloconfigdb.sql
验证
导入成功后,可以通过执行以下sql语句来验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
Id | Key | Value | Comment |
---|---|---|---|
1 | eureka.service.url | http://127.0.0.1:8080/eureka/ | Eureka服务Url |
3、调整ApolloPortalDB配置
配置项统一存储在ApolloPortalDB.ServerConfig表中,也可以通过管理员工具 - 系统参数
页面进行配置,无特殊说明则修改完一分钟实时生效。
1. apollo.portal.envs - 可支持的环境列表
默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感),如:
DEV,FAT,UAT,PRO
apollo.portal.meta.servers - 各环境Meta Service列表
Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息。默认情况下,meta service和config service是部署在同一个JVM进程,所以meta service的地址就是config service的地址。
4、调整ApolloConfigDB配置
1. eureka.service.url - Eureka服务Url
不管是apollo-configservice还是apollo-adminservice都需要向eureka服务注册,所以需要配置eureka服务地址。 按照目前的实现,apollo-configservice本身就是一个eureka服务,所以只需要填入apollo-configservice的地址即可,如有多个,用逗号分隔(注意不要忘了/eureka/后缀)。
需要注意的是每个环境只填入自己环境的eureka服务地址,比如FAT的apollo-configservice是1.1.1.1:8080和2.2.2.2:8080,UAT的apollo-configservice是3.3.3.3:8080和4.4.4.4:8080,PRO的apollo-configservice是5.5.5.5:8080和6.6.6.6:8080,那么:
- 在FAT环境的ApolloConfigDB.ServerConfig表中设置eureka.service.url为:
http://1.1.1.1:8080/eureka/,http://2.2.2.2:8080/eureka/
- 在UAT环境的ApolloConfigDB.ServerConfig表中设置eureka.service.url为:
http://3.3.3.3:8080/eureka/,http://4.4.4.4:8080/eureka/
- 在PRO环境的ApolloConfigDB.ServerConfig表中设置eureka.service.url为:
http://5.5.5.5:8080/eureka/,http://6.6.6.6:8080/eureka/
5、配置数据库连接信息
Apollo服务端需要知道如何连接到你前面创建的数据库,数据库连接串信息位于上一步下载的压缩包中的config/application-github.properties
中。
配置apollo-configservice的数据库连接信息
- 解压
apollo-configservice-x.x.x-github.zip
- 用程序员专用编辑器(如vim,notepad++,sublime等)打开
config
目录下的application-github.properties
文件 - 填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格!
- 修改完的效果如下:
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
配置apollo-adminservice的数据库连接信息
- 解压
apollo-adminservice-x.x.x-github.zip
- 用程序员专用编辑器(如vim,notepad++,sublime等)打开
config
目录下的application-github.properties
文件 - 填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格!
- 修改完的效果如下:
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
配置apollo-portal的数据库连接信息
- 解压
apollo-portal-x.x.x-github.zip
- 用程序员专用编辑器(如vim,notepad++,sublime等)打开
config
目录下的application-github.properties
文件 - 填写正确的ApolloPortalDB数据库连接串信息,注意用户名和密码后面不要有空格!
- 修改完的效果如下:
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
配置apollo-portal的meta service信息
更改辑器apollo-portal-x.x.x-github.zip
中config
目录下的apollo-env.properties
文件。
假设DEV的apollo-configservice未绑定域名,地址是1.1.1.1:8080,FAT的apollo-configservice绑定了域名apollo.fat.xxx.com,UAT的apollo-configservice绑定了域名apollo.uat.xxx.com,PRO的apollo-configservice绑定了域名apollo.xxx.com,那么可以如下修改各环境meta service服务地址,格式为${env}.meta=http://${config-service-url:port}
,如果某个环境不需要,也可以直接删除对应的配置项(如lpt.meta):
dev.meta=http://1.1.1.1:8080
fat.meta=http://apollo.fat.xxx.com
pro.meta=http://apollo.xxx.com
除了通过apollo-env.properties
方式配置meta service以外,apollo也支持在运行时指定meta service(优先级比apollo-env.properties
高):
6、部署开始
部署apollo-configservice
将对应环境的apollo-configservice-x.x.x-github.zip
上传到服务器上,解压后执行scripts/startup.sh即可
启动服务,执行scripts/startup.sh
停止服务,执行scripts/shutdown.sh.
部署apollo-adminservice
将对应环境的apollo-adminservice-x.x.x-github.zip
上传到服务器上,解压后执行scripts/startup.sh即可
启动服务,执行scripts/startup.sh
停止服务,执行scripts/shutdown.sh.
部署apollo-portal
将apollo-portal-x.x.x-github.zip
上传到服务器上,解压后执行scripts/startup.sh即可
启动服务,执行scripts/startup.sh
停止服务,执行scripts/shutdown.sh.
测试访问
访问portalhttp://ip:8070
用户apollo 密码admin
ok!!!一路向前,莫问前程
参考
上一篇: 什锦水果摆盘怎么摆才够引人注目呢
下一篇: Gerapy分布式部署