Apollo分布式配置中心部署以及使用

一、简介
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

官方github:https://github.com/ctripcorp/apollo

作者对Apollo对介绍:https://github.com/ctripcorp/apollo/wiki/Apollo配置中心介绍

二、安装部署
基础设施
本次部署环境为DEV(开发环境)、FAT(测试环境)、UAT(预生产)、PRO(生产)

应用服务器:

数据库服务器:

配置
下载代码:

git clone https://github.com/ctripcorp/apollo.git
1
比较重要的几个项目:

apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象为Apollo客户端
apollo-adminservice:提供配置管理接口,提供配置修改、发布等接口,接口服务对象为Portal,以及Eureka
apollo-portal:提供Web界面供用户管理配置
apollo-client:Apollo提供的客户端程序,为应用提供配置获取、实时更新等功能


上图简要描述了配置发布的大致过程:

用户在Portal操作配置发布
Portal调用Admin Service的接口操作发布
Admin Service发布配置后,发送ReleaseMessage给各个Config Service
Config Service收到ReleaseMessage后,通知对应的客户端
数据库初始化:

下面的sql为大写格式,注意数据库的大小写敏感设置

ApolloPortalDB:执行apollo\scripts\sql\apolloportaldb.sql
ApolloConfigDB:DEV FAT UAT PRO 环境执行apollo\scripts\sql\apolloconfigdb.sql
调整配置并打包:

在Apollo项目中找到目录apollo\scripts\的配置文件build.bat或者build.bat

数据库配置
修改数据库配置,上面的是ApolloConfigDB配置,下面的是ApolloPortalDB配置:
# apollo config db info 该数据库配置只需要配置一次,不同环境无需修改
apollo_config_db_url=jdbc:mysql://192.168.35.227:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=XXXX
apollo_config_db_password=XXXX

# apollo portal db info 该数据库依据不同环境配置对应的数据库连接,并且需要多次打对应环境的JAR包
apollo_portal_db_url=jdbc:mysql://192.168.35.226:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=XXXX
apollo_portal_db_password=XXXX
1
2
3
4
5
6
7
8
9
apollo config db info 该数据库配置只需要配置一次,不同环境无需修改
apollo portal db info 该数据库依据不同环境配置对应的数据库连接,并且需要多次打
修改环境调用地址
# meta server url, different environments should have different meta server addresses
dev_meta=http://192.168.35.207:9100
fat_meta=http://192.168.35.208:9100
uat_meta=http://192.168.35.209:9100
pro_meta=http://192.168.35.210:9100
1
2
3
4
5
修改数据库数据
在DEV FAT UAT PRO 对应的ApolloConfigDB数据库中,找到表ServerConfig中的eureka.service.url配置项:

UPDATE apolloconfigdb.ServerConfig SET ServerConfig.`Value`=‘http://localhost:9100/eureka/‘ WHERE `Key`=‘eureka.service.url‘;
1
具体eureka配置,可以查看官网:https://github.com/ctripcorp/apollo/wiki/分布式部署指南

编译、打包
./build.sh
1
该脚本会依次打包apollo-configservice, apollo-adminservice, apollo-portal和apollo-client。
由于ApolloConfigDB在每个环境都有部署,所以对不同环境的config-service和admin-service需要使用不同的数据库连接信息打不同的包,portal和client只需要打一次包即可
开始部署
部署程序到对应的服务器

部署apollo-configservice
将apollo-configservice/target/目录下的apollo-configservice-x.x.x-github.zip上传到服务器上,解压
修改scripts/startup.sh :

LOG_DIR=/opt/logs/100003171
SERVER_PORT=9100
1
2
执行scripts/startup.sh即可
如需停止服务,执行scripts/shutdown.sh.

部署apollo-adminservice
将apollo-adminservice/target/目录下的apollo-adminservice-x.x.x-github.zip上传到服务器上,解压
修改scripts/startup.sh:

LOG_DIR=/opt/logs/100003172
SERVER_PORT=9101
1
2
执行scripts/startup.sh即可
如需停止服务,执行scripts/shutdown.sh.

部署apollo-portal
将apollo-portal/target/目录下的apollo-portal-x.x.x-github.zip上传到服务器上,解压
修改scripts/startup.sh:

LOG_DIR=/opt/logs/100003173
SERVER_PORT=9102
1
2
执行scripts/startup.sh即可
如需停止服务,执行scripts/shutdown.sh.

访问测试

上面部署完成,可以测试

访问不同环境的eureka,查看服务注册情况是否正确:

http://192.168.35.207:9100/
1
如果可以看到:

192.168.35.207:apollo-adminservice:9101
192.168.35.207:apollo-configservice:9100
1
2
两个服务都为UP,正常!

访问客户端:

http://192.168.35.206:9102/
1
登录,默认用户名密码为:apollo/admin

新建项目测试。

三、使用配置中心配置信息
maven引入上面步骤编译打包成功的apollo-core和apollo-client包:
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-core</artifactId>
<version>0.11.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>0.11.0-SNAPSHOT</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
创建app.properties
请确保classpath:/META-INF/app.properties文件存在,并且其中内容为自己的项目名称,而且要保持唯一:

app.id=demo
1
环境变量配置
本地开发

如果是本地开发,可以在开发工具添加Environment:

env=DEV
1
线上环境配置方式:

使用Java启动参数添加java -Denv=YOUR-ENVIRONMENT -jar xxx.jar
通过操作系统的System Environment
通过配置文件:
对于Mac/Linux,文件位置为/opt/settings/server.properties
对于Windows,文件位置为C:\opt\settings\server.properties
配置apollo-env.properties
在项目中引用apollo-core和apollo-client包,在apollo-core包中可以看到apollo-env.properties配置文件,默认配置为打包前配置的信息:

local.meta=http://localhost:8080
dev.meta=http://192.168.35.207:9100
fat.meta=http://192.168.35.208:9100
uat.meta=http://192.168.35.209:9100
lpt.meta=${lpt_meta}
pro.meta=http://192.168.35.210:9100
1
2
3
4
5
6
如果需要修改或者覆盖的话,在项目的resources从上面复制一个apollo-env.properties文件,修改对应环境信息就可以了

启用配置
在启动类添加@EnableApolloConfig注解即可:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* @author chihiro.zhang
*/
@EnableApolloConfig
@SpringBootApplication
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
测试
添加一个测试的类DemoConfiguration,当然配置中心要有下面配置的配置信息:

@Configuration
@EnableAutoConfiguration
public class DemoConfiguration {
@Value("${demo}")
private String demo;
}
1
2
3
4
5
6
完成!

四、部署方案
这个图是计划部署的方案,并不是上面写的例子的方案

原文地址:https://www.cnblogs.com/duanxz/p/9909073.html

时间: 2024-10-08 00:08:32

Apollo分布式配置中心部署以及使用的相关文章

pollo分布式配置中心部署以及使用(转发)

pollo分布式配置中心部署以及使用 2018年06月12日 16:38:46 阅读数:1427 一.简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景. 官方github:https://github.com/ctripcorp/apollo 作者对Apollo对介绍:https://github.com/ctripcorp/apollo/wik

携程 apollo分布式配置中心学习总结

一.apollo 组成 adminService:提供配置更新和发布接口,服务于管理界面potal 来更新和获取数据. configService:提供配置获取接口和配置推送接口,服务于apollo客户端. potal:提供配置管理界面,通过meterService 获取adminService 列表,使用客户端SLB 软负载的方式调用adminService. client:为应用获取配置,支持实时刷新,和configService 保持长连接,一旦有配置变更,clent收到configSer

Apollo分布式配置中心入门学习

一.Apollo地址 Apollo源码及简介.Apollo配置中心.Apollo设计原理 二.Apollo环境搭建 1.下载配置中心 2.执行两个sql文件:apolloconfigdb(存放配置文件信息).apolloportaldb(网站信息) 3.下载好的apollo-build-scripts-master上传到服务器.服务器需要JDK环境 4.解压:unzip apollo-build-scripts-master.zip 5.进入/apollo-build-scripts-maste

多种配置的分布式配置中心

淘宝的 diamond 参考文档 Diamond – 分布式配置中心简介 服务端搭建 安装jdk 安装maven 安装tomcat 安装mysql 启动mysql并创建数据库和表 1234567891011121314151617181920212223242526272829303132333435 -- 创建Diamond数据库CREATE DATABASE IF NOT EXISTS `diamond` /*!40100 DEFAULT CHARACTER SET utf8 */;USE

分布式配置中心 携程 apollo

1.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐. 分布式配置文件:将配置文件注册到配置中心上去,可以使用分布式配置中心实时更新配置文件,统一管理配置文件,不需要重新打包发布. 2.常用的分布式配置中心框架有哪些 disconf(依赖于Zookeeper).Zookeeper(通过Watch事件监听实现).diamond(阿里产品).携程(apollo).Redis.xxl-config. 3.携程apo

分布式配置中心Apollo

1,什么是分布式配置中心 项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做到自动更新配置文件信息,解决以上问题 常用分布式配置中心框架 Disconf(依赖于zookpeer).Zookpeer().diamond.携程(阿波罗).Redis.xxl-conf Zookpeer保证配置文件信息实时更新 (事件通知) 大型互联网公司自己内部都有自己独立分布式配置中心独立RP

携程阿波罗(Apollo)配置中心

携程阿波罗(Apollo) https://www.cnblogs.com/xiaxiaolu/p/10025597.html 一.瞎扯点什么 1.1 阿波罗 ? 阿波罗是希腊神话中的光明之神.文艺之神,同时也是罗马神话中的太阳神:他是光明之神,从不说谎,光明磊落,在其身上找不到黑暗,也被称作真理之神.他非常聪明,通晓世事,是预言之神. 后世各种各样的项目都喜欢以阿波罗命名,比如著名的美国登月计划:阿波罗计划: 既然携程以阿波罗(Apollo)命名项目,那我们我们接下来看看,携程阿波罗能给我们程

分布式配置中心201902

分布式配置中心 1.配置中心简介 2.xxl-conf简介 3.代码模拟演示 1.配置中心简介 为什么需要集中配置 当然是程序的发展,需要引入集中配置 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关.参数的配置.服务器的地址…… 对配置的期望也越来越高,配置修改后实时生效,灰度发布,分环境.分集群管理配置,完善的权限.审核机制…… 随着采用分布式的开发模式,项目之间的相互引用随着服务的不断增多,相互之间的调用复杂度成指数升高,每次投产或者上线新的项目时苦不堪言,因此需要引用配置中心治

Spring Cloud Config分布式配置中心的使用和遇到的坑

分布式配置中心 为什么要有用分布式配置中心这玩意儿?现在这微服务大军已经覆盖了各种大小型企业,每个服务的粒度相对较小,因此系统中会出现大量的服务,每个服务都要有自己都一些配置信息,或者相同的配置信息,可能不同环境每个服务也有单独的一套配置,这种情况配置文件数量比较庞大,维护起来相当费劲,举个栗子: 在开发的过程中,一般数据库是开发环境数据库,所有服务DB的IP配置为:92.168.0.1,突然老大说,开发环境换了,DB的IP要修改,这下可不好受了,所有模块挨个修改DB的配置,就问你难受不难受?