Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
在MySql中创建ApolloPortalDB数据库 执行初始化脚本
因为Apollo一个环境需要一个ApolloConfigDB所以此次安装我们还要创建两个数据库 ApolloConfigDBDev(Dev环境配置),ApolloConfigDBPro(Pro环境配置);ApolloConfig初始化脚本
打开Rancher添加需要安装的主机,点击添加容器
填写基础信息(使用idoop/docker-apollo:latest镜像)
添加环境变量
本次部署一个Dev和Pro双配置环境,在Apollo生产环境中需要注意的是portal(默认端口:8070)服务只需要在生产环境部署一个即可,而每个环境的都需要部署独立的admin和config服务。 镜像中默认四个环境以及其config和admin端口分别为DEV(8080-8090),FAT(8081-8091),UAT(8082-8092),PRO(8083-8093),启动之前请确保要启动的端口未被占用。
# 开启Portal,默认端口: 8070
PORTAL_DB: jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8
PORTAL_DB_USER: root
PORTAL_DB_PWD: 123456
# 开启dev环境, 默认端口: config 8080, admin 8090
DEV_DB: jdbc:mysql://xxx.xxx.xxx.xxx::3306/ApolloConfigDBDev?characterEncoding=utf8
DEV_DB_USER: root
DEV_DB_PWD: 123456
# 开启fat环境, 默认端口: config 8081, admin 8091
#FAT_DB: jdbc:mysql://xxx.xxx.xxx.xxx::3306/ApolloConfigDBFat?characterEncoding=utf8
#FAT_DB_USER: root
#FAT_DB_PWD: 123456
# 开启uat环境, 默认端口: config 8082, admin 8092
#UAT_DB: jdbc:mysql://xxx.xxx.xxx.xxx::3306/ApolloConfigDBUat?characterEncoding=utf8
#UAT_DB_USER: root
#UAT_DB_PWD: 123456
# 开启pro环境, 默认端口: config 8083, admin 8093
PRO_DB: jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDBPro?characterEncoding=utf8
PRO_DB_USER: root
PRO_DB_PWD: 123456
修改容器的网络模式为主机模式(网上一些博客上说可以支持桥接模式,但是之前用桥接模式注册到eureka中的地址是容器内网地址而无法使用,坑。。。)
点击创建等待一两分钟 查看容器日志出现如下日志表明启动成功
如果Rancher使用不熟练,把上面转换为docker脚本如下:
docker run --net="host" --name apollo -d \
-e PORTAL_DB = 'jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8' \
-e PORTAL_DB_USER = 'root' \
-e PORTAL_DB_PWD = '123456' \
-e DEV_DB = 'jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDBDev?characterEncoding=utf8' \
-e DEV_DB_USER = 'root' \
-e DEV_DB_PWD = '123456' \
-e PRO_DB = 'jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDBPro?characterEncoding=utf8' \
-e PRO_DB_USER = 'root' \
-e PRO_DB_PWD = '123456' idoop/docker-apollo:latest
打开localhost:8070地址用默认的用户名密码 apollo admin登录新建一个demo项目发现项目环境只有DEV
虽然Apollo安装完毕,但是还是有很多坑~等待着我们一个个的解决。
1. 因为初始化ApolloConfigDBPro是默认连接的Eureka是dev环境的Eureka修改ApolloConfigDBPro数据库表ServerConfig中eureka.service.url的端口为8083。
2. 因为ApolloPortalDB默认只有一个dev环境,修改ApolloPortalDB数据库表ServerConfig中apollo.portal.envs值为dev,pro(多环境用逗号隔开不区分大小写)
重启apollo容器等待运行成功,登录查看环境如图:
输入localhost:8080,localhost:8083如图:
出现上面三张图到此我们的apollo安装配置结束。。。
分别在DEV和UAT环境添加并发布key为server.port的配置,其中DEV环境的值为1111,PRO环境的值为2222
com.ctrip.framework.apollo
apollo-client
1.0.0
com.ctrip.framework.apollo
apollo-core
1.0.0