目前apollo版本:v1.5.0-SNAPSHOT
JDK:1.8+
数据库:192.168.1.109(本地,dev环境),192.168.1.110(uat环境)
实例:192.168.1.109(本地,dev环境,安装portal、adminservice和configservice),192.168.1.111(uat环境,安装adminservice和configservice)。
实例的AdminService和ConfigService部署在同一台机器上。
apollo代码官方网址:https://github.com/ctripcorp/apollo 或国内镜像:https://gitee.com/nobodyiam/apollo
(就提交记录来看,github更活跃一点)
下载下来之后,首先执行数据库脚本(使用MySQL 5.6.5或以上版本)。
首先执行根目录下的scripts\db\migration\configdb\V1.0.0__initialization.sql,会在MySQL中创建ApolloConfigDB库,并建表。数据库名称可以更换,表名不能换。
ApolloConfigDB主要用于存储配置信息,为ConfigService和AdminService服务。如果要分环境,则每个环境要分别安装这个库。比如有DEV环境和PRO环境,则要安装两次。(当然也可以在一个MySQL实例中安装两次,库名不同。但这样和apollo高可用的初衷相违背)
然后执行根目录下scripts\db\migration\portaldb\V1.0.0__initialization.sql,这个脚本用于创建ApolloPortalDB。这个库用于Apollo前端管理,服务于ApolloPortal。这个DB不管有多少环境,只用安装一个即可。一个portal可以管理多个环境和集群。
安装结果如图:
如果要同时配置多个环境,执行完portal脚本后,需要修改portal数据库。打开serverconfig表,修改key为apollo.portal.envs的value来添加环境。环境之间使用英文逗号隔开(大小写不敏感)。目前apollo默认支持环境可以参考枚举类com.ctrip.framework.apollo.core.enums.Env
public enum Env{
LOCAL, DEV, FWS, FAT, UAT, LPT, PRO, TOOLS, UNKNOWN;
}
apollo也支持自定义环境。方式可以参考官方文档:https://github.com/ctripcorp/apollo/wiki/部署&开发遇到的常见问题#42-添加自定义的环境
比如,我需要部署两套环境,UAT和DEV,那么我修改的值就是
至此数据库的准备工作完成。接下来准备打包。
打开根目录下的scripts文件夹,里面有一个build.bat和一个build.sh。windows下执行bat文件,MAC 和 LINUX下执行sh文件。
不过执行前我们还是要修改一下信息。以windows版本为例,使用sublime打开build.bat,apollo_config_db_*配置是连接ApolloConfigDB库的信息,apollo_portal_db_*是连接ApolloPortalDB库的信息。修改好对应的url、username、password。
如果是不同环境,这里要多次打包。有几个ApolloConfigDB就要修改几次apollo_config_db_*的配置再打包。多环境下由于共用一套portal,所以portal相关信息不用修改。
下面的配置里,修改好对应环境的地址。比如我打算将uat环境部署在111上,将dev环境部署在本地(109)上,则修改对应的地址即可。
修改后的配置示例:
@echo off
rem apollo config db info
set apollo_config_db_url="jdbc:mysql://192.168.1.110:3306/ApolloConfigDB?characterEncoding=utf8"
set apollo_config_db_username="yourusername"
set apollo_config_db_password="yourpassword"
rem apollo portal db info
set apollo_portal_db_url="jdbc:mysql://192.168.1.109:3306/ApolloPortalDB?characterEncoding=utf8"
set apollo_portal_db_username="yourusername"
set apollo_portal_db_password="yourpassword"
rem meta server url, different environments should have different meta server addresses
set dev_meta="http://192.168.1.109:8080"
set fat_meta="http://localhost:8080"
set uat_meta="http://192.168.1.111:8080"
set pro_meta="http://localhost:8080"
......
由于我没有用到fat环境和pro环境,所以这两个环境的meta我没有修改。
打包好后,分别去apollo-adminService、apollo-configservice 和 apollo-portal下的target目录下拿zip包。
将configservice和adminservice的zip包拷贝到111中并解压。解压后的文件如图(以configservice为例):
重新打包109环境的包后,同样将portal、adminservice 和 configservice解压到109。
多环境下,要修改portal的配置文件。打开portal下的config目录,修改apollo-env.properties文件:
修改完成后就可以准备启动apollo了。
分别找到configservice、adminservice和portal下的scripts目录,执行startup.sh即可启动。
启动要按照configservice、adminservice、portal 的顺序启动。因为启动configservice的时候会启动其自带的Eureka。adminservice需要注册到Eureka中。portal需要发现各环境的adminservice。
这里特别注意,多环境下,一定要先将所有环境的adminservice和configservice都启动后,最后再启动portal。
至此,apollo就安装启动完成。分别访问109和111的8080端口查看Eureka,可以看到configservice和adminservice都已经注册到各自环境的Eureka中,打开portal所在服务器的8070端口打开apollo管理界面(默认用户名/密码为apollo/admin)可以看到默认应用已经出现了不同环境。效果图如下:
uat环境:
dev环境:
portal:
官方部署指南:https://github.com/ctripcorp/apollo/wiki/分布式部署指南
教学视频地址:https://pan.baidu.com/s/1rUAphfVq9fnEMqRrscDk-w#list/path=%2F%制作视频%2Fapollo&parentPath=%2F制作视频 (感谢github用户 @lingjiaju)