Apollo阿波罗配置中心(基础安装,docker部署)
Apollo配置中心基础概念,配置中心单体,单体测试,docker部署,
文章目录
本文基于java开发
<apollo.version>2.2.0</apollo.version>
一、apollo
这个官方文档我只能说 聊胜于无
好吧还是离不开这玩意
开发指南
文中主要内容为apollon部署内容,客户端使用方法
1、基础
这玩意就和nacos类似,但是有灰度发布和权限流程的管理。本身还包含了一个eurka做注册中心,你可以将eurka提换到自己的注册服务
Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
特点(只说比较独特的)
- 灰度发布(例如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。)
- 配置项的全局视角搜索
- 权限管理、发布审核、操作审计
- 提供Java和.Net原生客户端
- Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。(但是他强行依赖于)
2、概念
核心服务
apollo-portal
apollo-adminservice
apollo-configservice
3、Spring整合基础配置
前提 :Spring整合(Spring 3.1.1+)
maven
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version> </version>
</dependency>
主类注解
@EnableApolloConfig
本地连接远端配置
apollo:
meta:
bootstrap:
enabled: true
namespaces: application.properties
cluster: DEFAULT
config-service: 服务地址
app:
id: 唯一id
服务器中配置
apollo:
meta: 服务地址
bootstrap:
enabled: true
namespaces: application.properties
cluster: DEFAULT
app:
id: 唯一id
官方文档中也可基于XMl或者JAVA配置
需要注意的是,如果之前有使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的,请替换成org.springframework.context.support.PropertySourcesPlaceholderConfigurer。Spring 3.1以后就不建议使用PropertyPlaceholderConfigurer了,要改用PropertySourcesPlaceholderConfigurer。
如果之前有使用context:property-placeholder,请注意xml中引入的spring-context.xsd版本需要是3.1以上(一般只要没有指定版本会自动升级的),建议使用不带版本号的形式引入,如:http://www.springframework.org/schema/context/spring-context.xsd
4、配置多环境Apollo
apollo本身是由一个前台客户端服务,一个config服务,一个admin注册中心,
多个环境其实是多个config服务,一个config服务就代表一个环境,
每有一个config服务就需要搭配一个apolloconfigd数据库
在apollo-portalf服务下 apollo-env.properti文件中配置不同环境的地址

二、单体配置
2.1、单体服务端apollo-quick-start
单体不支持多环境,启动超时时加长时间设置即可
前提
Apollo服务端:1.8+
Apollo客户端:1.8+ 如需运行在 Java 1.7 运行时环境,请使用 1.x 版本的 apollo 客户端,如 1.9.1
Mysql 5.6.5以上版本。
下载安装包,直接整个全部下载下来
https://github.com/apolloconfig/apollo-quick-start
将下面两个sql,apolloconfigdb.sql ,apolloportaldb.sql 分别执行,各建一个数据库
https://github.com/apolloconfig/apollo/tree/master/scripts/sql/profiles/mysql-default
修改demo.sh脚本 不同版本的脚本内容有可能不同 主要改动就是设置上面两个数据库的地址密码和
export SPRING_CONFIG_DATASOURCE_URL="jdbc:mysql://your-mysql-server:3306/ApolloConfigDB?useUnicode=true&characterEncoding=UTF8"
export SPRING_CONFIG_DATASOURCE_USERNAME="apollo-username"
export SPRING_CONFIG_DATASOURCE_PASSWORD="apollo-password"
export SPRING_PORTAL_DATASOURCE_URL="jdbc:mysql://your-mysql-server:3306/ApolloPortalDB?useUnicode=true&characterEncoding=UTF8"
export SPRING_PORTAL_DATASOURCE_USERNAME="apollo-username"
export SPRING_PORTAL_DATASOURCE_PASSWORD="apollo-password"
java -jar apollo-all-in-one.jar
使用 git bash启动脚本
启动
./demo.sh start
stop关闭
client
注意启动的时候会产生日志文件,如果启动没成功请看 apollo-service.log文件,就在项目根目录下
其他内容不管,只要出现了 地址 now就代表成功了


2.2、单体服务端java demo验证
注: 出现这个错误是因为版本问题需要要jdk11版本
ch/qos/logback/classic/spi/LogbackServiceProvider has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
第一步下载demo
demo地址https://github.com/apolloconfig/apollo-demo-java

第二步下载配置demo
-
在
apollo-demo-java/api-demo/src/main/resources/META-INF/app.properties目录下配置 app.id= 值随便 -
在服务端创建项目,点击创建应用 ,Appid一定要和demo配置的一样

注:AppId是应用的唯一身份标识,Apollo客户端使用这个标识来获取应用自己的私有Namespace配置。
对于公共Namespace的配置,没有AppId也可以获取到配置,但是就失去了应用覆盖公共Namespace配置的能力。
- 创建运行配置新建Application



main class : com.apolloconfig.apollo.demo.api.SimpleApolloConfigDemo
vm:-Dapollo.meta=http://localhost:8080 apollo-configservice地址
第三步运行测试
-
点击运行

-
在服务端创建测试数据,进入demoappid下,新建配置,




- 输入key测试,在线修改之后可以再次测试(回滚的数据即使不发布也会生效)

三、docker自定义配置Apollo
官方docker部署
docker如果不需要调整系统配置直接下载镜像就行,本次调整了端口配置所以和其他文章有部分不同
docker
部署比较简单,直接下载docker镜像就可以部署了,配置一下mysql地址和域名就行吗,下文将展示需要调整Apollo配置时的docker部署
- 要想定制化镜像先下载源码 https://github.com/apolloconfig/apollo/releases
下载 Source code【注意保持服务端和客户端的版本一致】【当前下载版本为2.2.0】
3.1、创建镜像
- ./scripts/build.sh 打包命令(一个是windos环境打包,一个是Linux环境打包,windos环境打包需要再gitbash里面)
- mvn docker:build -pl apollo-configservice,apollo-adminservice,apollo-portal 生成镜像命令(可以一次打一个镜像)
- apollo-configservice
apollo-adminservice
apollo-portal
注意先打包(如果在本地可以直接运行target目录下的jar文件),在生成镜像,可以选择在本地打好镜像上传到自己的dockerhub上共享使用
生成镜像会产生很多冗余镜像,为生成镜像过程中使用。
3.2、启动镜像
apollo-portal 看清楚第一个,另外几个也差不多(我这里面调整了每个服务的端口号,后面调整源码请看后续文章)
docker run --hostname=4cd037f8b4bc
--env=
SPRING_DATASOURCE_URL=数据库地址
--env=
SPRING_PORTAL_DATASOURCE_USERNAME=数据库用户名
--env=
SPRING_PORTAL_DATASOURCE_PASSWORD=密码
--env=
PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
--env=JAVA_HOME=/usr/local/openjdk-8
--env=LANG=C.UTF-8
--env=JAVA_VERSION=8u342
--env=APOLLO_RUN_MODE=Docker
--env=SERVER_PORT=9070
--network=bridge
-p 9070:9070
--restart=no
--label='邮箱' --runtime=runc -d apolloconfig/apollo-portal:2.2.0
apollo-configservice
docker run
--hostname=71baece4df44
--env=SPRING_DATASOURCE_URL=
--env=SPRING_DATASOURCE_USERNAME=
--env=SPRING_DATASOURCE_PASSWORD=
--env=eureka.service.url=http://192.168.56.1:9080/eureka
--env=eureka.instance.home-page-url=http://192.168.56.1:9080
--env=PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
--env=JAVA_HOME=/usr/local/openjdk-8
--env=LANG=C.UTF-8
--env=JAVA_VERSION=8u342
--env=APOLLO_RUN_MODE=Docker
--env=SERVER_PORT=9080 --network=bridge -p 9080:9080
--restart=no --label='maintainer=g632104866@gmail.com;finchcn@gmail.com;ameizi<sxyx2008@163.com>'
--runtime=runc
-d apolloconfig/apollo-configservice:2.2.0
apollo-adminservice
docker run
--hostname=0324f0eddcde
--env=SPRING_DATASOURCE_URL=
--env=SPRING_DATASOURCE_USERNAME=
--env=SPRING_DATASOURCE_PASSWORD=
--env=PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=JAVA_HOME=/usr/local/openjdk-8
--env=LANG=C.UTF-8
--env=JAVA_VERSION=8u342
--env=APOLLO_RUN_MODE=Docker
--env=SERVER_PORT=9090
--network=bridge -p 9090:9090 --restart=no
--label=''
--runtime=runc
-d apolloconfig/apollo-adminservice:2.2.0
更多推荐
所有评论(0)