目录
一、背景
二、Apollo简介
三、安装包准备
四、安装Apollo
4.1环境准备
4.2 软件准备
4.2.1 JDK安装
4.2.2 MySQL安装
4.3 部署开发环境
4.4 启动脚本
五、环境测试
六、Springboot集成Apollo配置中心
6.1 客户端(具体应用的项目)的修改
6.1.1 pom文件
6.1.2 启动类增加Apollo客户端
6.1.3 在application.yml增加配置
6.2 在Apollo配置中心增加项目
七、参考文献
为了保证自己的开发环境和测试环境的一致性,决定自行搭建一套Apollo开发环境玩玩,中间有些许坎坷,但是还好,一下午就搞定了,总体来说,不是很难。参考文献很多,总体来说按照他们的步骤一步一步来,问题不大。特记录如下:
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
或者在我的资源下载(审核通过):
Apollo(阿波罗)开源分布式配置中心(含教程).zip-Java文档类资源-CSDN下载
我的资源下载得到3个文件夹、2个SQL和一个安装说明
apollo-configservice
apollo-adminservice
apollo-portal
apollo-portal.sql
apollo-config.sql
readme.md
注意:本次部署使用的是1.5.1版本,如果觉得旧,可以下载安装1.7.1或者更高的版本
本次部署测试环境
应用服务器
环境 |
服务器 |
服务 |
端口 |
测试 |
127.0.0.1 |
apollo-portal |
30070 |
127.0.0.1 |
apollo-configservice |
30080 |
|
127.0.0.1 |
apollo-adminservice |
30090 |
数据库服务
环境 |
服务器 |
服务 |
数据库 |
端口 |
测试 |
127.0.0.1 |
apollo-portal |
ApolloPortalDB |
3306 |
apollo-configservice |
ApolloConfigDBPro |
3306 |
注意:1、127.0.0.1修改为自己的具体IP地址;2、可以根据情况进行分布式部署。
官方文档显示jdk至少要1.8的
查看是否安装jdk java -version
未安装jdk的需要重新安装
安装教程:https://blog.csdn.net/m0_37824308/article/details/121628390
使用mysql -version查看是否安装mysql
未安装请自行安装
在127.0.0.1 的/home/work下新建目录apollo
cd /home/work
mkdir apollo && cd apollo
将apollo-configservice、apollo-adminservice和apollo-portal文件夹拖到apollo目录下
修改配置文件(也可以修改完再上传,免得麻烦)
修改configservice的数据库:
vi apollo-configservice-1.5.1/config/application-github.properties
# DataSource 修改为自己数据库的IP:端口号
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/apolloconfigdb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = abc123456
修改adminservice的数据库:
vi apollo-adminservice-1.5.1/config/application-github.properties
# DataSource 修改为自己数据库的IP:端口号
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/apolloconfigdb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = abc123456
修改portal的数据库:
# DataSource 修改为自己数据库的IP:端口号
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/apolloportaldb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = abc123456
导入apollo-config.sql和apollo-portal.sql脚本到数据库127.0.0.1
注意:需要修改apolloconfig的ServerConfig表的eureka.service.url值为自己部署服务的ip端口,如果是集群模式,写多个eureka的地址。因为Apllo自带eureka,所以可以选择不使用自己的eureka。
还需要修改apollo-portal的配置服务
vi apollo-portal-1.5.1/config/apollo-env.properties,只留下dev的注释掉其他几个环境的
local.meta=http://localhost:30080
dev.meta=http://localhost:30080
#fat.meta=http://fill-in-fat-meta-server:8080
#uat.meta=http://fill-in-uat-meta-server:8080
lpt.meta=${lpt_meta}
#pro.meta=http://fill-in-pro-meta-server:8080
注意:不建议使用安装包自带的starup.sh启动,脚本有问题(能力有限,没有细看)
启动顺序configservice->adminservice->portal
nohup java -Dserver.port=30080 -Deureka.instance.ip-address=127.0.0.1 -Deureka.instance.homePageUrl=http://127.0.0.1:30080 -jar apollo-configservice-1.5.1.jar &
nohup java -Dserver.port=30090 -Deureka.instance.ip-address=127.0.0.1 -Deureka.instance.homePageUrl=http://127.0.0.1:30090 -jar apollo-adminservice-1.5.1.jar &
nohup java -Dserver.port=30070 -jar apollo-portal-1.5.1.jar &
带参数启动(推荐):
cd /mydata/apollo-1.5.1/apollo-configservice-1.5.1/
nohup java -Xmx256m -Xms256m -Xmn128m -Dserver.port=30080 -Deureka.instance.ip-address=127.0.0.1 -jar apollo-configservice-1.5.1.jar &
cd /mydata/apollo-1.5.1/apollo-adminservice-1.5.1/
nohup java -Xmx256m -Xms256m -Xmn128m -Dserver.port=30090 -Deureka.instance.ip-address=127.0.0.1 -jar apollo-adminservice-1.5.1.jar &
cd /mydata/apollo-1.5.1/apollo-portal-1.5.1/
nohup java -Xmx512m -Xms512m -Xmn256m -Dserver.port=30070 -jar apollo-portal-1.5.1.jar &
每个命令输入后等2min再启动下一个服务,因为有依赖关系。
当然加jvm参数启动的命令参考如下(从startup.sh copy来的),不建议加一大堆这样参数,毕竟自己使用
nohup java -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom -Dserver.port=30080 -Dlogging.file=/opt/logs/100003171/apollo-configservice.log -XX:HeapDumpPath=/opt/logs/100003171/HeapDumpOnOutOfMemoryError/ -XX:+UseParNewGC -Xloggc:/opt/logs/100003171/gc.log -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:+CMSClassUnloadingEnabled -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=5M -Deureka.instance.ip-address=127.0.0.1 -Deureka.instance.homePageUrl=http://127.0.0.1:30080 -jar apollo-configservice-1.5.1.jar &
nohup java -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom -Dserver.port=30090 -Dlogging.file=/opt/logs/100003172/apollo-configservice.log -XX:HeapDumpPath=/opt/logs/100003172/HeapDumpOnOutOfMemoryError/ -XX:+UseParNewGC -Xloggc:/opt/logs/100003172/gc.log -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:+CMSClassUnloadingEnabled -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=5M -Deureka.instance.ip-address=127.0.0.1 -Deureka.instance.homePageUrl=http://127.0.0.1:30090 -jar apollo-adminservice-1.5.1.jar &
nohup java -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom -Dserver.port=30070 -Dlogging.file=/opt/logs/100003173/apollo-configservice.log -XX:HeapDumpPath=/opt/logs/100003173/HeapDumpOnOutOfMemoryError/ -XX:+UseParNewGC -Xloggc:/opt/logs/100003173/gc.log -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:+CMSClassUnloadingEnabled -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=5M -jar apollo-portal-1.5.1.jar &
eureka注册服务查看:http://{自己的IP}:30080/
Apollo后台查看
http://{自己的IP地址}:30070/ 账号/密码 apollo/admin
com.ctrip.framework.apollo
apollo-client
1.6.0
//在springboot启动类上方加入@EnableApolloConfig注解
@EnableApolloConfig
@SpringBootApplication
public class GoogleApplication {
public static void main(String[] args) {
SpringApplication.run(GoogleApplication.class, args);
}
}
app:
id: spring-demo
apollo:
# 修改为自己的Apollo地址的IP
meta: http://127.0.0.1:30080/
bootstrap:
enabled: true
namespace: application
eagerLoad:
enabled: true
点击创建项目,输入项目信息
部门:选择应用所在的部门
应用AppId:用来标识应用身份的唯一id,格式为string,需要和应用中配置的app.id对应
应用名称:应用名,仅用于界面展示
应用负责人:选择的人默认会成为该项目的管理员,具备项目权限管理、集群创建、Namespace创建等权限
具体操作截图如下:
注意:配置信息不发布,不生效!
Apollo配置中心搭建和使用教程
https://www.cnblogs.com/zhangyjblogs/p/14163702.html