Spring Cloud微服务搭建配置中心之携程开源框架Apollo
1、Apollo(阿波罗)
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景,是一款可靠的分布式配置管理中心框架。
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。
登录成功: