Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
在此用的是centos6.7系统,IP:192.168.106.242
安装需要mysql数据库,建议5.7以上,jdk1.8
1、下载aploll配置中心 https://github.com/nobodyiam/apollo-build-scripts
下载完成后,上传到linux机器上
解压:
[root@common apollo]# unzip apollo-build-scripts-master.zip
2、新建mysql数据库
Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,新建这两个库,并从解压后的apollo-build-scripts-master目录中找到sql目录,对sql文件导入到对应的库中。
3、配置demo.sh
解压后的apollo-build-scripts-master目录中有一个demo.sh,编辑此文件,修改如下内容
前两个红框内是数据库连接修改,写成自己的数据地址、用户名和密码即可
最后一个红框内是apollo的一些配置, 写成部署apollo机器的ip:端口
修改完成后,启动:
[root@common apollo-build-scripts-master]# ./demo.sh start
访问:http://192.168.106.242:8080/
访问:http://192.168.106.242:8070/
apollo的默认帐号:apollo 密码:admin ,登录后界面如下,点击“创建项目”
输入相应的内容并提交,加新增一个配置
点击发布按钮,变量发布成功
在spingboot 框架在此不说,我用的是2.0.2版本
pom.xml加入以入依赖
com.ctrip.framework.apollo
apollo-client
1.0.0
com.ctrip.framework.apollo
apollo-core
1.0.0
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
2.0.1.RELEASE
在application.yml 中加入配置
server:
port : 8081
spring:
application:
name: demo-01
eureka:
client:
service-url:
defaultZone: http://192.168.106.242:8080/eureka #部署apollo服务的ip
在resources 目录下新建如下配置文件:
app.properties内容:
app.id=apollo_example
app.id就是在apollo界面中,创建项目时的id
apollo-env.properties内容,其中ip为部署apollo服务的机器ip
local.meta=http://192.168.106.242:8080
dev.meta=http://192.168.106.242:8080
fat.meta=${fat.meta}
uat.meta=${uat.meta}
lpt.meta=${lpt.meta}
pro.meta=${pro.meta}
同时在C:\opt\settings(目录自己建)下新建server.properties,写入:env=DEV,我们在开发环境下测试
新建一个controller
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/apollo")
public class ApolloController {
//test为默认值
@Value("${appolo_config:test}")
private String configStr;
@RequestMapping("/getConfig")
public String getConfig(){
return configStr;
}
}
在主启动类上加上@EnableApolloConfig注解。
启动springboot项目测试
“张三“ 就是我们在apollo中设置的内容
注:在阿里云或百度云服务器上部署apollo时,Eureka会用服务器的内网ip,导致我们的项目在连接apollo时,无法连接,打开你的ip:8080 eureka可以发现此问题的根源----Eureka是内网地址,我本地或公网无法访问到, 怎么办???
不着急,apollo做为一个成熟的框架,肯定不会这么low,问题在于自己对apollo不是很精通,翻阅资料发现,加一点配置就可以了