之前直接安装过apollo。直接用jar安装,过程特别麻烦,在不熟悉环境的情况下,安装了一个礼拜,用docker安装apollo太简单,太快了。
Apollo部署文档
版本号
- Apollo:1.7.1
- Java:1.8
- MySQL:8.0.22
部署文档
系统使用文档
编辑
- 创建数据库
- Apollo配置中心需要独立的数据库,为方便起见,推荐使用Docker部署。
- 创建ApolloPortalDB,ApolloConfigDB数据库 分别导入对应sql文件
- apolloportaldb.sql
- apolloconfigdb.sql
- 调整服务端配置
- 调整ApolloPortalDB配置 配置项统一存储在ApolloPortalDB.ServerConfig表中,也可以通过管理员工具 - 系统参数页面进行配置。参考
- 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的地址。样例如下:
{
"DEV":"http://1.1.1.1:8080",
"FAT":"http://apollo.fat.xxx.com",
"UAT":"http://apollo.uat.xxx.com",
"PRO":"http://apollo.xxx.com"
}
修改完需要重启生效。
- organizations - 部门列表 Portal中新建的App都需要选择部门,所以需要在这里配置可选的部门信息,样例如下:
[{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"}]
- superAdmin - Portal超级管理员 默认值apollo,后续可添加多个账号以英文逗号分隔(,)。
- consumer.token.salt - consumer token salt 若使用开放平台API,可以设置一个token salt。若不使用可忽略。
- wiki.address portal上“帮助”链接的地址,默认是Apollo github的wiki首页,可自行设置。
- admin.createPrivateNamespace.switch 是否允许项目管理员创建private namespace。设置为true允许创建,设置为false则项目管理员在页面上看不到创建private namespace的选项。
- emergencyPublish.supported.envs 配置允许紧急发布的环境列表,多个env以英文逗号分隔。 当config service开启一次发布只能有一个人修改开关(namespace.lock.switch)后,一次配置发布只能是一个人修改,另一个发布。为了避免遇到紧急情况时(如非工作时间、节假日)无法发布配置,可以配置此项以允许某些环境可以操作紧急发布,即同一个人可以修改并发布配置。
- configView.memberOnly.envs 只对项目成员显示配置信息的环境列表,多个env以英文逗号分隔。 对设定了只对项目成员显示配置信息的环境,只有该项目的管理员或拥有该namespace的编辑或发布权限的用户才能看到该私有namespace的配置信息和发布历史。公共namespace始终对所有用户可见。
- role.create-application.enabled - 是否开启创建项目权限控制 默认为false,所有用户都可以创建项目 如果设置为true,那么只有超级管理员和拥有创建项目权限的帐号可以创建项目,超级管理员可以通过管理员工具 - 系统权限管理给用户分配创建项目权限
- role.manage-app-master.enabled - 是否开启项目管理员分配权限控制 默认为false,所有项目的管理员可以为项目添加/删除管理员 如果设置为true,那么只有超级管理员和拥有项目管理员分配权限的帐号可以为特定项目添加/删除管理员,超级管理员可以通过管理员工具 - 系统权限管理给用户分配特定项目的管理员分配权限
- admin-service.access.tokens - 设置apollo-portal访问各环境apollo-adminservice所需的access token 如果对应环境的apollo-adminservice开启了访问控制,那么需要在此配置apollo-portal访问该环境apollo-adminservice所需的access token,否则会访问失败 格式为json,如下所示:
{
"dev" : "098f6bcd4621d373cade4e832627b4f6",
"pro" : "ad0234829205b9033196ba818f7a872b"
}
- 调整ApolloConfigDB配置 配置项统一存储在ApolloConfigDB.ServerConfig表中,需要注意每个环境的ApolloConfigDB.ServerConfig都需要单独配置,修改完一分钟实时生效。
- eureka.service.url - Eureka服务Url apollo-configservice本身是一个eureka服务,所以只需填入apollo-configservice的地址,如有多个,用逗号分隔(注意不要忘了/eureka/后缀)。 需要注意的是每个环境只填入自己环境的eureka服务地址。
- namespace.lock.switch - 一次发布只能有一个人修改开关,用于发布审核 这是一个功能开关,如果配置为true的话,那么一次配置发布只能是一个人修改,另一个发布。
- config-service.cache.enabled - 是否开启配置缓存 这是一个功能开关,如果配置为true的话,config service会缓存加载过的配置信息,从而加快后续配置获取性能。 默认为false,开启前请先评估总配置大小并调整config service内存配置。
- item.key.length.limit - 配置项 key 最大长度限制 默认配置128。
- item.value.length.limit - 配置项 value 最大长度限制 默认配置20000。
- admin-service.access.control.enabled - 配置apollo-adminservice是否开启访问控制 默认为false,如果配置为true,那么apollo-portal就需要正确配置访问该环境的access token,否则访问会被拒绝
- admin-service.access.tokens - 配置允许访问apollo-adminservice的access token列表 如果该配置项为空,那么访问控制不会生效。如果允许多个token,token 之间以英文逗号分隔 样例:
admin-service.access.tokens=098f6bcd4621d373cade4e832627b4f6
admin-service.access.tokens=098f6bcd4621d373cade4e832627b4f6,ad0234829205b9033196ba818f7a872b
- 安装JDK
- 使用yum下载JDK
yum install -y java-1.8.0-openjdk-devel
- 输入以下命令,查看是否安装成功
java -version
- 使用docker部署镜像地址
- 部署apollo-portal
- 拉取最新版本镜像
docker pull apolloconfig/apollo-portal:1.7.1
- 使用docker命令启动
docker run -p 8070:8070 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://fill-in-the-correct-server:3306/ApolloPortalDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=FillInCorrectUser -e SPRING_DATASOURCE_PASSWORD=FillInCorrectPassword \
-e APOLLO_PORTAL_ENVS=dev,pro \
-e DEV_META=http://fill-in-dev-meta-server:8080 -e PRO_META=http://fill-in-pro-meta-server:8080 \
-d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal:${version}
- 参数说明
SPRING_DATASOURCE_URL: 对应环境ApolloPortalDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloPortalDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloPortalDB的密码
APOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置的话,可以通过此环境参数配置
DEV_META/PRO_META(可选): 配置对应环境的Meta Service地址,以${ENV}_META命名,需要注意的是如果配置了ApolloPortalDB中的apollo.portal.meta.servers配置,则以apollo.portal.meta.servers中的配置为准
- 这里需要注意参数 :例如:1: fill-in-the-correct-server 需要修改为安装数据库的ip地址2:FillInCorrectUser \ 修改为数据库账号 默认root3:FillInCorrectPassword \ 修改为数据库密码4:dev,pro \ 这里需要跟数据库apolloPortalDB 里面的apollo.portal.envs 字段设置的一直,默认是 dev,最好修改为:DEV,FAT,UAT,PRO5:apollo-portal:${version} 修改apollo的版本号,上面镜像获取的版本号是多少,就改为多少:例如apollo的版本号是:1.7.1 那么就修改为 apollo-portal:1.7.1
- docker run -p 8070:8070 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://172.16.2.14:3306/ApolloPortalDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root \ -e SPRING_DATASOURCE_PASSWORD=password \ -e APOLLO_PORTAL_ENVS=dev,pro \ -e DEV_META=http://172.16.2.14:8080 -e PRO_META=http://172.16.2.14:8080 \ -d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal:1.7.1
- 部署apollo-adminservice
- 拉取镜像,,版本可根据实际情况选择。
docker pull apolloconfig/apollo-adminservice:1.7.1
- 使用docker命令启动
docker run -p 8090:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://fill-in-the-correct-server:3306/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=FillInCorrectUser -e SPRING_DATASOURCE_PASSWORD=FillInCorrectPassword \
-d -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice:1.7.1
- 参数说明
SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
- docker run -p 8090:8090 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://172.16.2.14:3306/ApolloConfigDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root \ -e SPRING_DATASOURCE_PASSWORD=password \ -d -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice:1.7.1
- 部署apollo-configservice
- 拉取镜像,版本可根据实际情况选择。
docker pull apolloconfig/apollo-configservice:1.7.1
- 使用docker命令启动
docker run -p 8080:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://fill-in-the-correct-server:3306/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=FillInCorrectUser -e SPRING_DATASOURCE_PASSWORD=FillInCorrectPassword \
-d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice:1.7.1
- 参数说明
SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
- docker run -p 8080:8080 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://172.16.2.14:3306/ApolloConfigDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root \ -e SPRING_DATASOURCE_PASSWORD=password \ -d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice:1.7.1