spring cloud微服务搭建配置中心之携程开源框架Apollo

发布时间 2023-07-26 17:46:17作者: sowler

1、Apollo(阿波罗)

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

github官方地址

https://github.com/apolloconfig/apollo

中文最新开发文档

https://www.apolloconfig.com/#/zh/README

2、下载Apollo

进入Apollo官网,找到官网发布的版本进行下载。点击Releases(https://github.com/apolloconfig/apollo/releases),选择想要下载的版本信息,找到Assets进行下载。在下载的时候我们会发现Assets下面有很多个包,具体我们需要下载那个呢?这里就需要在

介绍一下这个配置中心Apollo了。其实Apollo不是由一个服务组成的,而是由三个主要的服务组成,分别为:Config Service服务、Admin Service 服务、Portal Server服务。Apollo最主要的就是这三个工程,需要用这三个工程进行部署才能使用配置中心。

Portal Server服务:管理配置界面,对应有一个PortalDB数据库,Portal Server是用来管理不同的环境的,不管对接了多少个环境,Portal Server和PortalDB数据库只需要部署一份就可以了。需要在PortalDB数据库添加具体有那些环境。

Config Service 服务和 Admin Service 服务:每个环境都有一个Config和Admin,对应每个环境都有一个自己的ConfigDB库。也就是说我们可以配置多套Config和Admin服务。

通过介绍之后,现在就知道需要那些包了吧。目前之讲解单机版,每个服务只部署一个即可。选择好版本后分别下载:apollo-adminservice-x.xx-github.zip、apollo-adminservice-x.xx-github.zip和apollo-adminservice-x.xx-github.zip,本人下载的是1.9.2版本。读友可以根据需要自行下载版本。

3、创建数据库

我们下载成功后,就需要创建相应的数据库了。Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,数据库、表的创建和样例数据都分别准备了sql文件,我们只需要导入数据库即可。

 下载地址

https://github.com/apolloconfig/apollo/blob/master/scripts/sql/apolloconfigdb.sql

在/scripts/sql/下面,里面有两个sql脚本进行下载导入Mysql数据库即可。注意官网提示对MySQL数据库版本有限制:Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。

输入Sql语句查看Mysql数据库版本:

SHOW VARIABLES WHERE Variable_name = 'version';

目前只部署的为一个环境,如果部署多个环境的话需要准备多个configdb数据库。需要在polloconfigdb.sql中稍作修改。

4、修改配置数据库连接信息

配置apollo-configservice和apollo-adminservice 的数据库连接信息,分别进入:/apollo-adminservice/config和 /apollo-configservice/config目录,分别编辑文件:application-github.properties 

#修改数据库连接配置信息。
spring.datasource.url = jdbc:mysql://fill-in-the-correct-server:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = FillInCorrectUser
spring.datasource.password = FillInCorrectPassword
fill-in-the-correct-server :替换为数据库连接地址
FillInCorrectUser:数据库用户名称
FillInCorrectPassword:数据库密码

配置apollo-portal的数据库连接信息,进入/apollo-portal/config 目录,编辑文件:application-github.properties

#修改数据库连接配置信息。
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 1234qwer

fill-in-the-correct-server :替换为数据库连接地址
FillInCorrectUser:数据库用户名称
FillInCorrectPassword:数据库密码

配置完apollo-portal的数据库连接后,数据库配置就配置完成了。

5、修改端口号

启动之前,我们可以修改服务的端口号,服务有默认端口号如果不修改会使用默认端口:adminservice:8090,configservice:8080,apollo-portal:8070,分别进入三个工程里面/scripts目录下startup.sh脚本里面,可以查看和修改当前端口号以及更改日志输出地址。

我们分别修改端口和配置日志地址:

SERVICE_NAME=apollo-configservice  服务名称
SERVER_PORT=${SERVER_PORT:=7800}  服务端口  
LOG_DIR=D:/apollo/logs-local/100003171 输出日志路径

SERVICE_NAME=apollo-adminservice
SERVER_PORT=${SERVER_PORT:=7850}
LOG_DIR=D:/apollo/logs-local/100003172

SERVICE_NAME=apollo-portal
LOG_DIR=D:/apollo/logs-local/100003173
SERVER_PORT=${SERVER_PORT:=8000}

更改端口后,apollo-configservice不以8080端口启动的情况下,要修改ApolloConfigDB库的ServerConfig表的eureka.service.url的value值为http://localhost:7800/eureka/,端口从数据库默认的8080改为7800。

6、配置portal的meta service环境信息

我们进入/apollo-portal/config目录下面会发现该服务比其他两个多了一个配置文件apollo-env.properties,apollo-env可以指定不同环境的configservice的连接地址。由于我们configservice和adminservice只配置了一套,所以只是使用了一个环境,配置dev就行了。如果后续配置多个则根据需要配置相应的地址。

local.meta=http://localhost:7800
dev.meta=http://localhost:7800
#fat.meta=http://fill-in-fat-meta-server:8080
#uat.meta=http://fill-in-uat-meta-server:8080
lpt.meta=${lpt_meta}
#pro.meta=http://fill-in-pro-meta-server:8080

7、启动应用

应用启动顺序:configservice -> adminservice -> portal,每个服务启动成功后再启动下一个服务,因为有依赖关系。执行scripts/startup.sh 启动程序

即停止服务顺序应该为: portal ->  adminservice  -> configservice ,执行scripts/shutdown.sh 停止程序

启动成功后,访问http://localhost:8000,可以访问管理界面。默认的用户名是apollo,密码是admin。

登录成功: