apollo官方文档地址:www.apolloconfig.com/#/zh/README
1. 准备工作
1.1 准备java环境
官方建议Java环境应为:Java 1.8+
可以使用java -version
查看是否Java环境, 输出应为下方这样1.8+版本
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
复制代码
若显示没有Java命令或版本太低,可以使用yum安装
yum install lrzsz java-1.8.0-openjdk.x86_64
1.2 准备mysql环境
- 版本要求:5.6.5+
Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。
连接上MySQL后,可以通过如下命令检查:
SHOW VARIABLES WHERE Variable_name = 'version';
Variable_name | Value |
---|---|
version | 5.7.11 |
没有安装mysql的自行安装,MariaDB可能会有问题,尽量使用mysql
- 部署台数要求
每个环境各需要一套数据库,如果有dev、test 和 production 3个环境需要配置中心,则需要使用3套数据库。生产环境apollo使用的数据库最好支持高可用。
1.3 准备apollo安装包和sql脚本
- 项目代码位置: github.com/ctripcorp/a…
- 选择最新 Releases 版本下载组件(共3个),例如:apollo-adminservice-1.8.2-github.zip、apollo-configservice-1.8.2-github.zip、 apollo-portal-1.8.2-github.zip
- 下载sql脚本(共2个),位置为scripts/sql/apolloportaldb.sql 和 scripts/sql/apolloconfigdb.sql
1.4 在防火墙开启对应端口或关闭防火墙
开启对应端口方法自行百度。关闭命令如下:
systemctl stop firewalld.service
systemctl disable firewalld.service
临时关闭命令: setenforce 0
永久关闭SELinux:
vi /etc/sysconfig/selinux
,然后将配置SELinux=enforcing改为SELinux=disabled ,重启系统生效,可和setenforce 0
一起使用则无需重启系统。
2. 部署
2.1 创建数据库
- 初始化 ApolloPortalDB
新建数据库ApolloPortalDB,并执行apolloportaldb.sql进行初始化。执行完成后使用以下语句进行验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
复制代码
应输出一条记录, 若表是空的,则可尝试将sql文件的语句copy到 Navicat 等客户端执行。
Id | Key | Value | Comment |
---|---|---|---|
1 | apollo.portal.envs | dev | 可支持的环境列表 |
- 初始化 ApolloConfigDB
新建数据库ApolloConfigDB,并执行apolloconfigdb.sql进行初始化。执行完成后使用以下语句进行验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
复制代码
应输出一条记录, 若表是空的,则可尝试将sql文件的语句copy到 Navicat 等客户端执行。
Id | Key | Value | Comment |
---|---|---|---|
1 | eureka.service.url | http://127.0.0.1:8080/eureka/ | Eureka服务Url |
2.2 部署程序并修改配置文件
- 部署 apollo-configservice
将对应环境的apollo-configservice-x.x.x-github.zip上传到服务器上,然后解压,打开config目录下的application-github.properties文件,填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格,密码不需要用引号括起来!
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
复制代码
- 部署 apollo-adminservice
将对应环境的apollo-adminservice-x.x.x-github.zip上传到服务器上,然后解压,打开config目录下的application-github.properties文件,填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格,密码不需要用引号括起来!
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
复制代码
- 部署 apollo-portal
将对应环境的apollo-portal-x.x.x-github.zip上传到服务器上,然后解压,打开config目录下的application-github.properties文件,填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格,密码不需要用引号括起来!
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
复制代码
打开config目录下的apollo-env.properties 文件,填写正确的Meta Service地址。 为了实现meta service的高可用,推荐通过SLB(Software Load Balancer)做动态负载均衡
local.meta=http://localhost:8080
dev.meta=http://192.168.230.129:8080
#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://192.168.230.128:8080
复制代码
3. 启动
3.1 修改启动时的JVM内存(非生产环境一般不修改此项)
在各个组件的 scripts/startup.sh 文件中可以设置JVM内存。如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分。以下是我们的默认设置,供参考:
export JAVA_OPTS="-server -Xms6144m -Xmx6144m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=4096m -XX:MaxNewSize=4096m -XX:SurvivorRatio=18"
复制代码
3.2 修改启动时的端口号
如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。另外apollo-configservice同时承担meta server职责,如果要修改端口,注意要同时ApolloConfigDB.ServerConfig表中的eureka.service.url配置项以及apollo-portal和apollo-client中的使用到的meta server信息。
3.3 修改程序的日志文件路径
如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-configservice.conf(或apollo-portal.conf、或apollo-adminservice.conf)中的LOG_DIR。
3.4 启动组件
解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh.
注意:如果ApolloConfigDB.ServerConfig的eureka.service.url只配了当前正在启动的机器的话,在启动apollo-configservice的过程中会在日志中输出eureka注册失败的信息,例如: com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused。需要注意的是,这个是预期的情况,因为apollo-configservice需要向Meta Server(它自己)注册服务,但是因为在启动过程中,自己还没起来,所以会报这个错。后面会进行重试的动作,所以等自己服务起来后就会注册正常了。
3.5 访问apollo-portal页面
经过上面的步骤,apollo配置中心已经部署完成。可以通过apollo-portal所在的http://ip:port 访问页面,例如http://192.168.230.128:8070/