笔者在工作中遇到如下问题,随着程序功能越多,配置文件不断增加,一些功能的开关、服务器地址、接口地址、不同环境的一些配置文件不同,这些在每次发布不同环境、更新项目时都比较繁琐,后来学习微服务时接触到了Spring Cloud Config配置中心,用了一段时间发现比之前方便不少,但是还是比较繁琐和麻烦,而且功能还达不到生产级,只能小规模场景下使用,在中大规模企业场景下不建议采用。后来了解到携程Apollo配置中心,Apollo支持完善的管理界面,支持多环境,配置变更实时生效,权限和配置审计等多种生产级功能,而且在携程到微服务架构体系中也运用了这个,在国内众多互联网公司也有落地案例,就开始去接触了解。最后结合工作和学习的一些经验分享给大家Apollo的入门使用和一些走过的坑,本篇文章主要介绍了在Linux(Centons7)下配置安装Apollo。
①、下载Apollo解压包
②、解压Apollo
③、修改配置文件(重点)
④、启动Apollo
⑤、修改配置文件、启动、关闭Apollo脚本(笔者自己写的简单脚本)
推荐博客:
Apollo架构体系、Apollo运行原理、Apollo配置中心简单介绍:https://blog.csdn.net/zjh_746140129/article/details/86179522
Linux下配置安装Apollo、Centons下配置安装Apollo:https://blog.csdn.net/zjh_746140129/article/details/86179601
Spring Boot项目整合Apollo配置中心:https://blog.csdn.net/zjh_746140129/article/details/86361168
Spring boot项目整合apollo错误:for env UNKNOWN from com.ctrip.framework.apollo.internals.DefaultMetaServer
https://github.com/ctripcorp/apollo/releases
这里把下载的三个包放到一个apollo下去解压了,也可以新建一个apollo文件把这三个解压进去即可。
tar -zxvf pollo.tar.gz
查看文件
1、配置apollo-adminservice的数据库连接信息
vim application-github.properties
修改数据库连接信息
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/apolloconfigdb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
2、配置apollo-configservice的数据库连接信息
vim application-github.properties
修改数据库连接信息
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/apolloconfigdb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
3、配置apollo-portal的数据库连接信息
vim application-github.properties
修改数据库连接信息
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/apolloconfigdb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
4、修改apollo-portal的配置中的meta.service信息
Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息。默认情况下,meta service和config service是部署在同一个JVM进程,所以meta service的地址就是config service的地址。
使用程序员专用编辑器(如vim,notepad++,sublime等)打开apollo-portal-x.x.x-github.zip中config目录下的apollo-env.properties文件。
假设DEV的apollo-configservice未绑定域名,地址是1.1.1.1:8080,FAT的apollo-configservice绑定了域名apollo.fat.xxx.com,UAT的apollo-configservice绑定了域名apollo.uat.xxx.com,PRO的apollo-configservice绑定了域名apollo.xxx.com,那么可以如下修改各环境meta service服务地址,格式为${env}.meta=http://${config-service-url:port},如果某个环境不需要,也可以直接删除对应的配置项(如lpt.meta):
dev.meta=http://1.1.1.1:8080
fat.meta=http://apollo.fat.xxx.com
uat.meta=http://apollo.uat.xxx.com
pro.meta=http://apollo.xxx.com
注1: 为了实现meta service的高可用,推荐通过SLB(Software Load Balancer)做动态负载均衡
注2: meta service地址也可以填入IP,0.11.0版本之前只支持填入一个IP。从0.11.0版本开始支持填入以逗号分隔的多个地址(PR #1214),如http://1.1.1.1:8080,http://2.2.2.2:8080,不过生产环境还是建议使用域名(走slb),因为机器扩容、缩容等都可能导致IP列表的变化。
apollo-env.properties
local.meta=http://localhost:8080
dev.meta=http://192.168.234.155:8080
5、设置jvm内存、端口、日志路径
记得在scripts/startup.sh中按照实际的环境设置一个JVM内存,以下是我们的默认设置,供参考:
export JAVA_OPTS="-server -Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=22"
注1:如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分。
注2:如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-portal.conf中的LOG_DIR。
注3:如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。
1、启动apollo-adminservice
2、启动apollo-configservice(图是后面补上的)
3、启动apollo-portal
http://192.168.234.155:8070 用户名:apollo 密码:admin
1、启动Apollo脚本
#!/bin/bash
cd /usr/local/devtools/apollo/apollo/apollo-adminservice-1.1.2-github/scripts/
./startup.sh
cd ~
cd /usr/local/devtools/apollo/apollo/apollo-configservice-1.1.2-github/scripts/
./startup.sh
cd ~
cd /usr/local/devtools/apollo/apollo/apollo-portal-1.1.2-github/scripts/
./startup.sh
ps -ef | grep appllo
2、停止Apollo脚本
#!/bin/bash
cd /usr/local/devtools/apollo/apollo/apollo-adminservice-1.1.2-github/scripts/
./shutdown.sh
cd ~
cd /usr/local/devtools/apollo/apollo/apollo-configservice-1.1.2-github/scripts/
./shutdown.sh
cd ~
cd /usr/local/devtools/apollo/apollo/apollo-portal-1.1.2-github/scripts/
./shutdown.sh
cd ~
rm -rf /usr/local/devtools/apollo/apollo/logs/
ps -ef | grep appllo
3、修改配置文件脚本
#!/bin/bash
cd /usr/local/devtools/apollo/apollo/apollo-adminservice-1.1.2-github/config/
echo spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 > application-github.properties
echo spring.datasource.username = root >> application-github.properties
echo spring.datasource.password = root >> application-github.properties
cd /usr/local/devtools/apollo/apollo/apollo-configservice-1.1.2-github/config/
echo spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 > application-github.properties
echo spring.datasource.username = root >> application-github.properties
echo spring.datasource.password = root >> application-github.properties
cd /usr/local/devtools/apollo/apollo/apollo-portal-1.1.2-github/config/
echo spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 > application-github.properties
echo spring.datasource.username = root >> application-github.properties
echo spring.datasource.password = root >> application-github.properties
cd /usr/local/devtools/apollo/apollo/apollo-portal-1.1.2-github/config/
echo local.meta=http://localhost:8080 > apollo-env.properties
echo dev.meta=http://localhost:8080 >> apollo-env.properties