环境要求
JDK 1.8+ (安装后,修改 Path 环境变量)Maven 3.5+ (安装后,修改 Path 环境变量,建议修改 Maven 源地址,加快下载速度)MySQL 5.6.5+Docker JDK 和 Maven 只在编译 Apollo 源代码时使用,实际使用 Docker 部署并不需要。
创建数据库
从部署策略图中可以看出,搭建 Apollo 环境需要使用到 PortalDB、ConfigDB 两个数据库,这两个数据库的初始脚本官方源码中已提供:
我们需要在自己的数据库上执行以上两个文件的脚本,这里将搭建一个基于 PRO 的分布式环境( 如果需要支持多个环境,需要在对应环境的数据库上建 ConfigDB,服务启动改成对应环境的数据库连接,更多请参考 调整ApolloPortalDB配置 和 调整ApolloConfigDB配置 ),如下: #构建 Docker 镜像 1. 下载最新 apollo master 分支 代码(当前是 1.5.0-SNAPSHOT),网上很多介绍都需要修改源代码后再进行编译,这个版本已有哥们提交了 Merge Request ,使在 Docker 部署上更简化了。如有特殊需要,也可自行修改源码。 2. 下载完成后在根目录下执行 .\scripts\build.bat(我是在 windows 进行编译的),编译成功后在 apollo-adminservice、apollo-configservice、apollo-portal 下的 target 目录会生成对应压缩包 pollo-configservice-1.5.0-SNAPSHOT-github.zip、apollo-adminservice-1.5.0-SNAPSHOT-github.zip、apollo-portal-1.5.0-SNAPSHOT-github.zip,这个几个文件就是我们在构建 Docker 镜像需要的 3. pollo源码中已经提供了构建 Docker 镜像的 Dockerfile 文件,apollo-configservice\src\main\docker\Dockfile、apollo-adminservice\src\main\docker\Dockfile、apollo-portal\src\main\docker\Dockfile 可以直接使用,最终如下: 4. 分别构建 Docker 镜像,然后可以通过 docker push 推送到自己的 Docker 仓库,比如 我的仓库 ,或者在要部署是机器上生成 Docker 镜像直接使用,最终得到 apollo-configservice、apollo-adminservice、apollo-portal 3个镜像。
编写 docker-compose
apollo-configservice &&apollo-adminservice:
version: '3'
services:
apollo-configservice:
image: apollo-configservice:latest # 镜像地址,这里使用的是直接在当前主机上构建的镜像
ports:
- "8080:8080"
volumes:
# 日志挂载
- /usr/local/apollo/servers/server2/logs/apollo-configservice:/opt/logs
environment:
# 可通过 SERVER_PORT 指定默认启动端口,ports 也需要对应修改
# SERVER_PORT: 8080
# 指定 homePageUrl 为当前宿主的 apollo-configservice 地址,不然会出现无法访问
JAVA_OPTS: "-Deureka.instance.homePageUrl=http://${当前主机IP}:8080"
# 数据库连接地址
DS_URL: "jdbc:mysql://${数据库IP}:${数据库Port}/ApolloConfigDB?characterEncoding=utf8"
# 数据库用户名
DS_USERNAME: "apollo"
# 数据库密码
DS_PASSWORD: "123456"
apollo-adminservice:
image: apollo-adminservice:latest # 镜像地址,这里使用的是直接在当前主机上构建的镜像
ports:
- "8090:8090"
volumes:
# 日志挂载
- /usr/local/apollo/servers/server2/logs/apollo-adminservice:/opt/logs
environment:
# 指定 homePageUrl 为当前宿主的 apollo-adminservice 地址,不然会出现无法访问
JAVA_OPTS: "-Deureka.instance.homePageUrl=http://${当前主机IP}:8090"
# 数据库连接地址
DS_URL: "jdbc:mysql://${数据库IP}:${数据库Port}/ApolloConfigDB?characterEncoding=utf8"
# 数据库用户名
DS_USERNAME: "apollo"
# 数据库密码
DS_PASSWORD: "123456"
depends_on:
- apollo-configservice
apollo-portal:
version: '3'
services:
apollo-portal:
image: apollo-portal:latest # 镜像地址,这里使用的是直接在当前主机上构建的镜像
container_name: apollo-portal
ports:
- "8070:8070"
volumes:
# 日志挂载
- /usr/local/apollo/servers/server1/logs/apollo-portal:/opt/logs
environment:
# 数据库连接地址
DS_URL: "jdbc:mysql://${数据库IP}:${数据库Port}/ApolloPortalDB?characterEncoding=utf8"
# 数据库用户名
DS_USERNAME: "apollo"
# 数据库密码
DS_PASSWORD: "123456"
# META_SERVER 地址,如 http://192.168.100.234:8080,http://192.168.100.234:8081(多个可用,分隔,建议使用 LB 域名),
PRO_META: "http://${实例1的 apollo-configservice 地址},http://${实例2的 apollo-configservice 地址}"
初始数据库数据修改
ApolloPortalDB 库的 ServerConfig 表 apollo.portal.envs 和 configView.memberOnly.envs 值修改为:pro;(因为这里我们搭建的是 PRO 的分布式环境)
ApolloConfigDB 库的 ServerConfig 表 eureka.service.url 值修改为:http://${实例1的 apollo-configservice 地址}/eureka/,http://${实例2的 apollo-configservice 地址}/eureka/;
启动服务
这里将在同一个机器上启动 1 个 apollo-portal 实例(端口 8070),2 个 apollo-configservice(端口 8080、8081)和 2 个 apollo-adminservice(端口 8090、8091)。
注意:启动的过程会比较慢,一般会在 100~200s 左右
通过访问** http://${apollo-portal 服务IP}:8070 **,输入默认用户名密码 apollo/admin 登录:(当前的测试脚本提供一个默认的测试项目,新版本的 sql 脚本可能没有 SampleApp) 通过 管理员工具 =>系统信息 可查看当前环境信息: 可以看出 Config Services 和 Admin Services 都是两个实例,我们可以模拟 kill 其中一台,服务依然是可以正常使用的。
接下来就可以创建应用,添加配置信息,提供给客户端使用,具体客户端如何使用后续将会继续介绍。
在确保有免安装版mysql文件后,在其目录下添mysqlinstall.bat文件与executesql.bat文件内容。之前做mysql一键安装部署,初始化数据库、表及数据时找了好多帖子,在测试时有好多坑。处理之后测试成功。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)