Apollo安装
简介
,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
四个核心模块及其主要功能
- ConfigService
提供配置获取接口
提供配置推送接口
服务于Apollo客户端- AdminService
提供配置管理接口
提供配置修改发布接口
服务于管理界面Portal- Client
为应用获取配置,支持实时更新
通过MetaServer获取ConfigService的服务列表
使用客户端软负载SLB方式调用ConfigService- Portal
配置管理界面
通过MetaServer获取AdminService的服务列表
使用客户端软负载SLB方式调用AdminService
下载配置
官网下载:https://github.com/ctripcorp/apollo/tags


解压安装包后将apollo-configservice-1.3.0.jar, apollo-adminservice-1.3.0.jar, apollo-portal-1.3.0.jar放置于apollo目录下
创建数据库
Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB。ApolloPortalDB只需要在生产环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套。
2个sql脚本的下载地址:
(前一个指定的版本)
https://github.com/ctripcorp/apollo/tree/1.8.2/scripts/sql
或者
https://github.com/ctripcorp/apollo/tree/master/scripts/sql

启动Apollo
确保端口未被占用
Apollo默认会启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用。
以windows为例启动命令
windows
启动configservice
apollo-configservice
java -jar -Dserver.port=18080 ./apollo-configservice-1.8.2.jar

apollo-configservice启动的默认端口是8080
-Dserver.port=18080 :修改启动的端口
并且数据库也得改变

启动adminservice
apollo-adminservice
java -jar -Dserver.port=18090 ./apollo-adminservice-1.8.2.jar

apollo-adminservice启动的默认端口是8090
-Dserver.port=18090 :修改启动的端口
启动portal
apollo-portal
java -jar -Dserver.port=18070 ./apollo-portal-1.8.2.jar

三者有启动顺序,
1:configservice
2:adminservice
3:portal
访问初始页面

test是之前就创建好的一个项目

appid就是项目的标识,里面配置了一些配置文件。
Linux

configservice
config
配置数据库信息


scripts
配置启动脚本


修改数据库地址

启动

adminservice
config
同Configservice一样,也连接configDB。
scripts
似Configservice一样,修改日志地址及启动端口
启动
似configservice一样,找到对应的 startup.sh
portal
config




暂时就应用dev和prod两个环境。
对应数据库也得相应配置

script


启动

页面

这dev,prod都是指向统一台服务器。配置了dev,prod也会同时改变。
Linux下多服务器的多环境(env)
2个env:dev,prod
2台linux服务器(A,B):dev在A,prod在B
A: configservice ,adminservice
B: configservice ,adminservice,portal
每多一个服务器(环境),这个新环境就配置config和admin,它俩配套同时都得有,但portal只需存在一个就可以
启动后


可以看到两台服务器的config,admin都已经启动好。
页面(访问portal)


同样的key值server.port,value不一样,说明多env搭建成功,dev,prod在不同服务器上(准确说是不同数据库)
遇到的坑
B服务器的portal找不到A服务器的adminservice
portal的日志

在阅览器http://ip:port/services/admin,查看adminservice的信息

可以看到,homepageurl是内网地址,原因可能是A的adminservice暴露的是内网地址所以B找不到A的adminservice
对展示页面的影响,只有prod环境,没有dev环境,并且页面报错(就不展示了)
解决办法:
对A,B的configservice和adminservice的启动脚本进行修改


新增的配置为:-Deureka.instance.prefer-ip-address=true -Deureka.instance.ip-address=公网ip
重启后,在访问A的 services/admin

页面也有dev和prod两种env环境。

关联公共namespace
首先创建一个新项目,并添加public的namespaces

公共的use 添加一个属性

切换到之前创建好的new项目,关联公共的use


项目启动连接pro环境

SpringCloud整合Apollo
maven
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.8.0</version>
</dependency>
version跟服务器版本下载的版本一致。
application配置
# 在应用启动阶段,向Spring容器注入被托管的application.properties文件的配置信息
apollo.bootstrap.enabled=true
# apollo配置文件的命名空间(多个以 , 隔开),默认 application
apollo.bootstrap.namespaces=application,times
# 为了防止配置中心无法连接等问题,Apollo 会自动将配置本地缓存一份
apollo.cacheDir=/opt/data/apollo-config
# 将 Apollo 加载提到初始化日志系统之前
# (将 Apollo 加载提到初始化日志系统之前,如果设置为 false,那么将打印出 Apollo 的日志信息,
# 但是由于打印 Apollo 日志信息需要日志先启动,启动后无法对日志配置进行修改,所以 Apollo 不能管理应用的日志配置,
# 如果设置为 true,那么 Apollo 可以管理日志的配置,但是不能打印出 Apollo 的日志信息)
apollo.bootstrap.eagerLoad.enabled=false
# 指定使用某个集群下的配置
apollo.cluster=DEFAULT
# apollo配置中心地址。
apollo.meta=http://127.0.0.1:18080
# AppId是应用的身份信息,是配置中心获取配置的一个重要信息。
app.id=test
项目启动
项目里的application文件

apollo上的配置

项目启动的结果

本文详细介绍了Apollo配置中心的安装、启动及使用过程,包括Windows和Linux环境下的配置,以及多环境多服务器部署。还涉及SpringCloud如何整合Apollo,以及在实际操作中遇到的问题和解决方案。

297

被折叠的 条评论
为什么被折叠?



