第1章 Apollo项目实战
能力目标
- 掌握Apollo安装
- 掌握Apollo配置操作
- 能够实现SpringBoot集成Apollo
- 能够实现Apollo适用功能自动刷新、监听器、配置加密、1灰度发布
1 Apollo应用
项目地址:https://github.com/ctripcorp/apollo
使用手册(多读多读):https://github.com/ctripcorp/apollo/wiki
1.1 初识Apollo
Apollo(阿波罗)是携程框架部门开发的分布式配置中心,可以集中管理不同环境、不同集群的配置。配置修改后可实时推送到应用端,具有权限标准化、流程治理等特点,适用于微服务配置管理场景。
服务端基于Spring Boot和Spring Cloud开发、包装后可直接运行,无需额外安装Tomcat等应用容器。
Java客户端不依赖任何框架,可以在所有框架中运行Java环境同时正确Spring/Spring Boot环境也有很好的支持。
不同环境和集群配置的统一管理: 1:Apollo统一界面集中管理不同环境(environment)、不同集群(cluster)、命名空间不同(namespace)的配置。 2:在不同的集群中部署相同的代码,可以有不同的配置,如zk的地址等 三、通过命名空间(namespace)它可以方便地支持多个不同的应用程序共享相同的配置,并允许应用程序覆盖共享配置 4:配置界面支持多语言(中文,English) 热发布: 用户在Apollo配置修改发布后,客户端可以实时(1秒)接收最新配置,并通知应用程序。 版本发布管理: 所有配置发布都有版本概念,方便支持配置回滚。 版本发布管理: 所有配置发布都有版本概念,方便支持配置回滚。 灰度发布: 支持配置的灰度发布,如点击发布后,只对部分应用实例生效,观察一段时间后推给所有应用实例。 权限管理、发布审计、操作审计: 1.应用和配置管理有完善的权限管理机制,配置管理分为编辑和发布两个环节,减少人为错误。 2.所有操作都有审计日志,便于跟踪问题。 客户配置信息监控: 可以很容易地看到配置在哪些实例中使用 提供Java和.Net原客户:原客户: 1:提供了Java和.Net本地客户端,方便集成应用 2:支持Spring Placeholder,Annotation和Spring Boot的ConfigurationProperties,使用方便(需要)Spring 3.1.1 ) 三、同时提供Http接口,非Java和.Net应用也可以方便使用 提供开放平台API: 1:Apollo本身提供了相对完善的统一配置管理界面,支持多环境、多数据中心配置管理、权限、流程管理等特点。 2:不过Apollo考虑到通用性,只要符合基本格式,配置的修改就不会受到太大限制。 2:不过Apollo考虑到通用性,只要符合基本格式,配置的修改就不会受到太大限制。 3.在我们的研究中发现,对于一些用户来说,他们的配置可能有更复杂的格式,比如xml, json,格式需要验证。 4:也有一些用户,比如DAL,不仅有特定的格式,还需要检查输入值,如检查数据库、用户名和密码是否匹配。 5:对于这类应用,Apollo通过开放接口支持应用程序Apollo修改和发布配置,并有完善的授权和权限控制 部署简单: 1.作为基础服务,配置中心的可用性要求很高Apollo尽可能少地依赖外部依赖 2:目前唯一的外部依赖是MySQL,所以部署很简单,只要安装好Java和MySQL就可以让Apollo跑起来 3:Apollo还提供包装脚本,一键生成所有必要的安装包,并支持
自定义操作参数
国内很多大厂都在用Apollo作为一个分布式配置中心,如果你的网站也在使用,在https://github.com/ctripcorp/apollo/issues/451可以注册。
携程、华为、JD.COM、智联招聘、中国移动、360金融、中通快递、转弯、贝壳网、土巴兔、平安银行、有赞等国内大厂都在使用Apollo。
1.2 Apollo单机部署
接下来,我们将实现它Apollo安装前,我们先介绍一下单机版的结构,如下图所示:
上图展示了Apollo单机部署架构,我们解释每个节点:
Apollo Config Service:提供读取、推送等功能的配置,服务对象是 Apollo 客户端。 Apollo Admin Service:提供配置修改、发布等功能,服务对象为Apollo Portal。 Apollo Portal:Apollo 不同项目的配置(项目配置、权限配置等、权限配置等。),服务对象是开发者和开放平台API。
环境说明:
MySQL:MySQL建议用5.7,版本要求5.6.5 Apollo服务端:JDK1.8 Apollo客户端:JDK1.7
Apollo安装方式多种多样,官方提供快速安装模式Docker在安装模式下,我们一次实现两种安装模式,但如果是生产环境,请使用分布式部署方案
(https://github.com/ctripcorp/apollo/wiki/分布式部署指南)
1.2.1 快速安装
[root@skywalking ~]# java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
SELECT VERSION() ----------------- 5.7.32-log
Apollo一个已经准备好了Quick Start安装包apollo-quick-start.zip
,里面包含了可以自动启动的jar包,以及所有的依赖jar包,数据库脚本,内置Tomcat容器等,安装包63M,您只需下载到本地,即可直接使用,避免过程。
Github下载地址:https://github.com/nobodyiam/apollo-build-scripts
Quick Start只用于本地测试,所以一般用户不需要下载源代码打包,只需要下载打包好的包即可。但也有用户希望修改代码后重新打包,可以参考以下步骤:
1:修改apollo-configservice, apollo-adminservice和apollo-portal的pom.xml,注释掉spring-boot-maven-plugin和maven-assembly-plugin
2:在根目录下执行mvn clean package -pl apollo-assembly -am -DskipTests=true
3:复制apollo-assembly/target下的jar包,rename为apollo-all-in-one.jar
Apollo服务端共需要两个数据库:ApolloPortalDB
和ApolloConfigDB
,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。
注意:如果你本地已经创建过Apollo数据库,请注意备份数据。我们准备的sql文件会清空Apollo相关的表。
我们的数据库地址不是固定的,Apollo服务端需要知道如何连接到你前面创建的数据库,因此需要修改数据库连接地址,在安装包里有一个启动脚本demo.sh
,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息:
# apollo config db info
apollo_config_db_url="jdbc:mysql://192.168.200.129:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_config_db_username=root
apollo_config_db_password=root
# apollo portal db info
apollo_portal_db_url="jdbc:mysql://192.168.200.129:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_portal_db_username=root
apollo_portal_db_password=root
Quick Start脚本会在本地启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用,如果端口没有被使用,我们可以直接启动程序,启动程序执行demo.sh
脚本即可,启动过程比较慢。
./demo.sh start
当看到如下输出后,就说明启动成功了!
==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!
启动完成后访问 http://192.168.200.129:8070/,可以看到Apollo配置界面,登录账号apollo,密码admin
1.2.2 Docker容器安装
如果您对Docker非常熟悉,可以使用Docker的方式快速部署Apollo,从而快速的了解Apollo。确保docker-quick-start文件夹已经在本地存在,如果本地已经clone过Apollo的代码,则可以跳过此步骤。
在docker-quick-start目录下执行docker-compose up
,第一次执行会触发下载镜像等操作,需要耐心等待一些时间。
搜索所有apollo-quick-start
开头的日志,看到以下日志说明启动成功:
apollo-quick-start | ==== starting service ====
apollo-quick-start | Service logging file is ./service/apollo-service.log
apollo-quick-start | Started [45]
apollo-quick-start | Waiting for config service startup.......
apollo-quick-start | Config service started. You may visit http://localhost:8080 for service status now!
apollo-quick-start | Waiting for admin service startup......
apollo-quick-start | Admin service started
apollo-quick-start | ==== starting portal ====
apollo-quick-start | Portal logging file is ./portal/apollo-portal.log
apollo-quick-start | Started [254]
apollo-quick-start | Waiting for portal startup.......
apollo-quick-start | Portal started. You can visit http://localhost:8070 now!
不过基于Docker安装需要注意一些问题:
1:数据库的端口映射为13306,所以如果希望在宿主机上访问数据库,可以通过localhost:13306,用户名是root,密码留空。
2:如要查看更多服务的日志,可以通过docker exec -it apollo-quick-start bash登录, 然后到/apollo-quick-start/service和/apollo-quick-start/portal下查看日志信息。
安装完成后访问http://192.168.200.129:8070/,可以看到Apollo配置界面,
2 基本使用
登录apollo,进行如下操作
2.1 创建项目
1、登录后界面如下:
2、创建项目
点击创建应用,会出现如下表单:
创建应用参数说明:
- 部门:选择应用所在的部门。部门数据来自
ApolloPortalDB
库的ServerConfig
表的Key = organizations
对应的记录。 - 应用 AppId:用来标识应用身份的唯一 id,格式为 string,需要和客户端
app.properties
中配置的app.id
对应。 - 应用名称:应用名,仅用于界面展示。
- 应用负责人:默认具有项目管理员权限。
- 项目管理员:可以创建 Namespace 和集群、分配用户权限。
创建完成后如下图所示:
2.2 创建配置
我们在默认的namespace
下创建配置信息,默认的namespace
支持的是properties
形式的配置,即:k=v
结构的
1、将hailtaxi-driver
项目的配置托管到apollo
中,在apollo
中创建配置
2、创建好的配置还未发布,一定要发布
3、将hailtaxi-driver
项目的其余配置从nacos
中转移到apollo
也就是说hailtaixi-driver
项目中的所有配置如下:
management:
endpoint:
health:
show-details: always
app:
name: 黑马顺风车
version: v1.0
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/hailtaxi-driver?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: root
seata:
enabled: true
application-id: ${
spring.application.name}
tx-service-group: my_seata_group
enable-auto-data-source-proxy: true
use-jdk-proxy: false
excludes-for-auto-proxying: firstClassNameForExclude,secondClassNameForExclude
client:
rm:
async-commit-buffer-limit: 1000
report-retry-count: 5
table-meta-check-enable: false
report-success-enable: false
saga-branch-register-enable: false
lock:
retry-interval: 10
retry-times: 30
retry-policy-branch-rollback-on-conflict: true
tm:
degrade-check: false
degrade-check-period: 2000
degrade-check-allow-times: 10
commit-retry-count: 5
rollback-retry-count: 5
undo:
data-validation: true
log-serialization: jackson
log-table: undo_log
only-care-update-columns: true
log:
exceptionRate: 100
service:
vgroup-mapping:
my_seata_group: default
enable-degrade: false
disable-global-transaction: false
transport:
shutdown:
wait: 3
thread-factory:
boss-thread-prefix: NettyBoss
worker-thread-prefix: NettyServerNIOWorker
server-executor-thread-prefix: NettyServerBizHandler
share-boss-worker: false
client-selector-thread-prefix: NettyClientSelector
client-selector-thread-size: 1
client-worker-thread-prefix: NettyClientWorkerThread
worker-thread-size: default
boss-thread-size: 1
type: TCP
server: NIO
heartbeat: true
serialization: seata
compressor: none
enable-client-batch-send-request: true
registry:
type: nacos
nacos:
application: seata-server
server-addr: 192.168.200.129:8848
group : "SEATA_GROUP"
namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
username: "nacos"
password: "nacos"
注意:seata的
namespace
而apollo
中默认私有的application
的namespce
中支持的是properties
形式的,故需要将yaml
转换成properties
可以使用在线转换工具:https://www.toyaml.com/index.html
将转换完成的properties
添加到apollo
中,可以使用批量添加
添加完成后,发布!!!
2.3 应用接入
1、在hailtaxi-driver
项目中 添加apollo
的客户端依赖
<!--ApolloClient-->
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.7.0</version>
</dependency>
2、在bootstrap.yml
配置文件中添加启动配置
首先停用nacos
配置中心
spring:
cloud:
nacos:
config:
# 关闭 nacos 配置中心
enabled: false
然后添加apollo
的启动配置,
3、配置appId
,可以在META-INF/app.properties
中配置
#使用的 Apollo 的项目(应用)编号 AppId
app.id=hailtaxi-driver-config
也可在applicaton.properties/bootstrap.yml
中配置
# 启用apollo配置中心
#app:
# id: hailtaxi-driver-config
apollo:
meta: http://192.168.200.129:8080 # Apollo Meta Server 地址(它的注册中心地址,eureka地址)
cacheDir: /opt/data
bootstrap:
enabled: true #是否开启 Apollo 配置预加载功能。默认为 false。
eagerLoad:
enable: true #是否开启 Apollo 支持日志级别的加载时机。默认为 false。
# 指定 namespace
namespaces: application #使用的 Apollo 的命名空间,默认为 application,多个用逗号隔开
4、使用@EnableApolloConfig
开启apollo
配置,通过-Denv=dev
指定环境,不指定默认连接dev
5、启动项目,访问:http://localhost:18081/driver/appinfo
6、验证动态刷新:apollo
也是支持Environment
和 @Value
刷新
在apollo
中修改app.name
和 app.version
查看动态刷新的结果
3 Apollo其他应用
3.1 公共配置
apollo
中的所有配置都有从属的namespace
,而namespace
有两种类型:public
和private
,区别如下:
public:
公共的Namespace的配置能被任何项目读取
通过创建公共Namespace可以实现公共组件的配置,或多个应用共享同一份配置的需求
如果其它应用需要覆盖公共部分的配置,可以在其它应用那里关联公共Namespace,然后在关联的Namespace里面配置需要覆盖的配置即可
如果其它应用不需要覆盖公共部分的配置,那么就不需要在其它应用那里关联公共Namespace
private:
私有Namespace的配置只能被所属的应用获取到
通过创建一个私有的Namespace可以实现分组管理配置
私有Namespace的格式可以是xml、yml、yaml、json、txt. 您可以通过apollo-client中ConfigFile接口来获取非properties格式Namespace的内容
1.3.0及以上版本的apollo-client针对yaml/yml提供了更好的支持,可以通过ConfigService.getConfig("someNamespace.yml")直接获取Config对象,也可以通过@EnableApolloConfig("someNamespace.yml")或apollo.bootstrap.namespaces=someNamespace.yml注入yml配置到Spring/SpringBoot中去
配置创建
1、创建公共配置shared-datasource
公共namespace
下的配置只能是properties
类型的
2、假设现在数据源的配置作为公共配置,我们将数据源的配置添加到公共配置中
首先从默认的application
中删除数据源的配置
然后在shared-datasource
下添加
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/hailtaxi-driver?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = root
注意:删除和添加都要在对应的
namespace
中提交!!!
3、在应用端(apollo
客户端)的bootstrap.yml
中添加namespace
# 启用apollo配置中心
app:
id: hailtaxi-driver-config #使用的 Apollo 的项目(应用)编号 AppId
apollo:
meta: http://192.168.200.129:8080 # Apollo Meta Server 地址(它的注册中心地址,eureka地址)
bootstrap:
enabled: true #是否开启 Apollo 配置预加载功能。默认为 false。
eagerLoad:
enable: true #是否开启 Apollo 支持日志级别的加载时机。默认为 false。
# 指定namespace
namespaces: application,shared-datasource #使用的 Apollo 的命名空间,默认为 application,多个用逗号隔开
4、启动测试:http://localhost:18081/driver/info/1
配置关联
我们接下来创建一个项目hailtaxi-order
,在它里面关联公共配置,
然后创建namespace
的时候关联公共配置
完成后如下所示:
当然如果对于有些公共配置,在本项目中我们还可以采取覆盖操作
3.2 私有配置
私有namespace
下的配置是可以在创建namespace
时指定类型的.
1、在hailtaxi-driver-config
项目中创建一个私有namespace
创建完项目下的展示如下
2、在mydriver
中添加如下配置,
driver:
name: 唐僧老师
age: 18
我们添加部分信息如下图:
3、在bootstrap.yml
中添加namespace
,这里需要注意一下私有的namespace
名称如果是非properties
的时,名字要带后缀
4、找到DriverController
,添加如下代码
@Value("${driver.name}")
private String driverName;
@Value("${driver.age}")
private int driverAge;
@GetMapping("/driverinfo")
public String getDriverInfo() {
return driverName + ";"+driverAge;
}
5、启动,访问: http://localhost:18081/driver/driverinfo
3.3 配置刷新
@Value 和 Environment
前面已经讲过,apollo
支持@Value
和Environment
动态刷新,而对于@ConfigurationProperties
,能加载到配置,但是无法自动刷新
1、创建com.itheima.driver.properties.DriverProperties
,读取前面配置的driver.name
和driver.age
信息
package com.itheima.driver.properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "driver")
public class DriverProperties {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "DriverProperties{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2、改造刚刚的com.itheima.driver.controller.DriverController#getDriverInfo
方法
@Autowired
private DriverProperties driverProperties;
@GetMapping("/driverinfo")
public String getDriverInfo() {
return driverName + ";"+driverAge + ","+driverProperties;
}
3、启动访问:http://localhost:18081/driver/driverinfo
在apollo中修改配置,查看是否能刷新!!!
Apollo监听器
Apollo 已经能够满足我们绝大多数场景下的自动刷新配置的功能,但是项目中如果使用了@ConfigurationProperties
此时只能借助Apollo的监听器功能实现数据刷新,可以先在监听器中读取变更的内容,然后调用指定的set方法执行重新赋值操作。
我们在hailtaxi-driver
中创建监听器com.itheima.driver.listener.ApolloConfigListener
,代码如下:
@Component
@Slf4j
public class ApolloConfigListener implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Autowired
RefreshScope refreshScope;
@ApolloConfigChangeListener(
value = {
"mydriver","application","test"} // 指定要监听的namespace
// ,interestedKeyPrefixes = {"driver","app","person"} // 以driver开头的配置发生变更后会进行通知
)
public void configChange(ConfigChangeEvent event) {
// 配置发生变更后获取最新配置数据
Set<String> changedKeys = event.changedKeys();
for (String changedKey : changedKeys) {
log.info("changed key = {}",changedKey);
log.info("oldValue={},newValue={}",event.getChange(changedKey).getOldValue(),event.getChange(changedKey).getNewValue());
}
this.applicationContext.publishEvent(new EnvironmentChangeEvent(event.changedKeys()));
refreshScope.refreshAll();
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
测试发现properties类型的配置能被监听到!!!
新建
test
名称空间(properties)类型,添加配置:driver.name = 黑马程序员唐僧老师!!! driver.age = 18
在apollo中修改配置,查看效果!!!
3.4 配置加密
考虑到安全性,我们可能最好将配置文件中的敏感信息进行加密。例如说,MySQL 的用户名密码、第三方平台的 Token 令牌等等。不过,Apollo 暂时未内置配置加密的功能。官方文档说明如下:
项目地址:https://github.com/ctripcorp/apollo-use-cases/tree/master/spring-boot-encrypt
1、在hailtaxi-driver
中添加jasypt坐标依赖
<!--jasypt-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
2、配置jasypt
加密算法及对应的密钥(放到bootstrap.yml
中即可)
jasypt:
encryptor:
#算法
algorithm: PBEWithMD5AndDES
#向量操作对象
iv-generator-classname: org.jasypt.iv.NoIvGenerator
#秘钥
password: itheima
配置数据可以放到apollo中,!!!
3、创建测试程序,将数据库密码加密:com.itheima.driver.DriverApplicationTest
@SpringBootTest
@RunWith(SpringRunner.class)
public class DriverApplicationTest {
@Autowired
private StringEncryptor encryptor;
@Test
public void encode() {
String password = "root";
System.out.println(encryptor.encrypt(password));
}
}
测试运行输出的密文:3OzWpNao6JPFAHYHeWIrlw==
4、将密文配置到apollo中
我们将密文配置到Apollo中,以ENC(密文)
修饰,我们对数据连接中密码进行加密,如下图:
5、启动项目进行测试:http://localhost:18081/driver/info/1
3.5 灰度发布
通过创建灰度版本,您可以对某些配置做灰度测试 灰度流程为:
1.创建灰度版本
2.配置灰度配置项
3.配置灰度规则.如果是私有的namespace可以按照客户端的IP进行灰度,如果是公共的namespace则可以同时按AppId和客户端的IP进行灰度
4.灰度发布
灰度版本最终有两种结果:
:灰度的配置合到主版本并发布,所有的客户端都会使用合并后的配置
:删除灰度版本,所有的客户端都会使用回主版本的配置 注意事项:如果灰度版本已经有灰度发布过,那么修改灰度规则后,无需再次灰度发布就立即生效
1、将hailtaxi-driver
打包,上传到192.168.200.129
服务器上,
2、在apollo中将`下将数据库的连接地址改一下,如下
注意,数据库要开启远程访问权限!!!
3、在129
机器上启动hailtaxi-driver
java -jar hailtaxi-driver-1.0-SNAPSHOT.jar
4、针对application
命名空间下的配置进行灰度
按照 IP
进行灰度,灰度配置只在129
机器上生效
如果namespace
是public
的,可以按照appid
和IP
进行灰度
5、灰度下修改配置,要点击灰度发布才生效!
6、测试:
http://localhost:18081/driver/appinfo 还是原版本
http://192.168.200.129:18081/driver/appinfo 是灰度版本
6、全量灰度发布在现实工作中是指灰度版本没有问题了,需要把所有服务的版本全部切换成完成测试的灰度版本,我们点击全量发布即可,全量发布的时候,我们可以把灰度版本删除。
7、再次测试:
http://localhost:18081/driver/appinfo 均是灰度后的版本了!!!
4 Apollo多环境配置
现实中Apollo是要作多环境部署的,比如:dev
,test
,pro
等等
1、下载三个服务
wget https://github.com/ctripcorp/apollo/releases/download/v1.7.0/apollo-adminservice-1.7.0-github.zip
wget https://github.com/ctripcorp/apollo/releases/download/v1.7.0/apollo-configservice-1.7.0-github.zip
wget https://github.com/ctripcorp/apollo/releases/download/v1.7.0/apollo-portal-1.7.0-github.zip
2、创建对应的目录并赋权限
mkdir -p adminservice/dev
mkdir -p adminservice/pro
mkdir -p configservice/dev
mkdir -p configservice/pro
mkdir portal
chmod -R 755 adminservice/ configservice/ portal/
3、解压到对应的目录下
unzip apollo-adminservice-1.7.0-github.zip -d adminservice/dev
unzip apollo-adminservice-1.7.0-github.zip -d adminservice/pro/
unzip apollo-configservice-1.7.0-github.zip -d configservice/dev
unzip apollo-configservice-1.7.0-github.zip -d configservice/pro/
unzip apollo-portal-1.7.0-github.zip -d portal
4、准备数据库,现在有两套环境,dev
和pro
需要单独准备数据库
在192.168.200.129
上创建两套库,,主要是针对apolloconfigdb
,apolloportaldb
只需要一份
5、在数据库中修改相关参数信息
在apolloportaldb
中增加环境列表
6、确保apollo-configservice
服务和apollo-adminservice
服务启动时连接各自的数据库
编辑
/adminservice/dev/config/application-github.properties
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloConfigDB_dev?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
/adminservice/pro/config/application-github.properties
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloConfigDB_pro?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
编辑
/configservice/dev/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloConfigDB_dev?characterEncoding=utf8