分布式部署携程配置中心apollo集群

[TOC]node

官方的文档坑比较多,在这里记录一下mysql

1、源码编译、打包、发布

1.获取源码

从github上克隆源码到本机,项目结构以下图1所示:git

<div align=center>github

<center>图1</center>spring


<div align=left>sql

2.修改默认的配置信息

部署单节点或集群,只关心3个工程:数据库

  • apollo-configservice:提供获取配置信息的接口,以及服务治理(apollo默认使用eureka注册和发现服务);
  • apollo-adminservice:提供接口修改配置信息;
  • apollo-portal:管理配置信息的门户;
  1. apollo-configservice: 修改resources同级目录script下的startup.sh:
#!/bin/bash
## 修改日志存放目录和服务端口

SERVICE_NAME=apollo-configservice
## 日志目录,建议修改在启动apollo服务的用户目录下,避免使用超级用户启动服务
LOG_DIR=/home/sharing/apollo_node_1/logs/
## 服务端口
SERVER_PORT=8080
...
...
## 若是apollo部署在云上或者多网卡的机器上,则必须执行erueka实例的地址(即configserver的地址/eureka)
## 当部署在云上的时候,因为没有只有内网网卡,会致使configserver注册到eureka的地址的为内网ip,致使客户端(应用程序)链接失败,没法使用
## 当部署在多网卡上的时候,因为有多个网卡的存在,而configserver默认获取第一个合法的ip,这个ip不必定是外网能访问的ip,一样会致使客户端链接失败
## 多网卡的状况下,能够在spring cloud配置要忽略的网卡名称,具体参考Spring Cloud的文档
## 因此建议指定erueka的实例地址
########### The following is the same for configservice, adminservice, portal ###########
export JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:ParallelGCThreads=4 ...
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT

添加eureka实例的地址:windows

########### The following is the same for configservice, adminservice, portal ###########
export JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:ParallelGCThreads=4 ...
export JAVA_OPTS="$JAVA_OPTS -Deureka.instance.ip-address=你的外网IP -Deureka.instance.prefer-ip-address=true -Dserver.port=$SERVER_PORT ...
  1. apollo-adminservice: 同上bash

  2. apollo-portal: 同上服务器

  3. 修改构建脚本 构建脚本路径:/apollo/scripts/build.sh或/apollo/scripts/build.bat 分别修改 config db 和 portal db 的数据库链接信息,以及多个meta server(即configService)的地址:

#!/bin/sh

# apollo config db info
apollo_config_db_url=jdbc:mysql://IP:PORT/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=username
apollo_config_db_password=password

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://IP:PORT/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=username
apollo_portal_db_password=password

# meta server url, different environments should have different meta server addresses
## 开发环境
dev_meta=http://IP1:PORT1,IP2:PORT2
## 测试环境
fat_meta=http://IP:PORT
## BETA环境
uat_meta=...
## 生产环境
pro_meta=...

3.导入两个sql文件建库

  1. apolloportaldb.sql
  2. apolloconfigdb.sql
  3. 修改ApolloConfigDB的ServerConfig表,Key为 eureka.service.url的Value字段,更新为你的eureka实例地址,如http://1.1.1.1:8080/eureka/,即同configService的ip和端口。多个节点,地址用,隔开。

4.打包启动

执行上述修改后的build.sh(windows执行build.bat),以后会在各自模块的target文件夹下生成zip压缩包,复制到服务器上,解压并执行scripts目录下的startup.sh,启动顺序:configService -> adminService -> portal,等待启动完成后,打开portal页面便可以管理配置信息。 默认的初始管理员帐户和密码:apollo/admin


2、直接下载安装包,采用外置配置文件的方式

1.下载安装包

  1. 这里下载

  2. 解压文件,修改apollo-configservice、apollo-adminservice和apollo-portal的config目录下的application-github.properties,添加数据库配置信息和eureka实例ip(portal无需注册到服务)等。

  3. 修改apollo-portal的config目录下的app.properties,填写dev、fat、uat以及pro的meta server地址。

  4. 导入两个sql文件建库

apolloportaldb.sql apolloconfigdb.sql 修改ApolloConfigDB的ServerConfig表,Key为 eureka.service.url的Value字段,更新为你的eureka实例地址,如http://1.1.1.1:8080/eureka/,即同configService的ip和端口。多个节点,地址用,隔开。

  1. 按顺序启动configService,adminService和portal。

3、部署多节点

1.apollo部署架构

参考apollo的官方的部署架构图:

<div align=center>

部署图 图2

部署图 图3

<div align=left>

  1. apollo的集群使用一个portal(apollo-portal + portalDB)来管理多个环境(dev, fat, uat, lpt, pro)的配置信息,每一个环境须要单独部署一套服务(apollo-adminservice + apollo-configservice + configDB);
  2. apollo同一个环境(如DEV开发环境),部署多个节点,须要修改启动端口和上述其余配置;更新ApolloConfigDB表key为eureka.service.url的Value字段,增长eureka实例的地址,用,隔开,不然configService和adminService不能注册到eureka。

<div align=center>

图4

<div align=left> 同一个环境的多个节点应该分别部署在不一样的机器,实现多活。


4、注意事项

注意:端口和日志路径默认在startup脚本里面有配置,因为apollo服务是基于SpringBoot的,system properties的入参优先级最高,因此须要修改startup的配置才会生效。或者删除startup里面关于日志路径和端口的配置,就可使外部的端口和日志路径配置生效。

步骤总结:

  • 分别修改三个项目的端口,日志路径(在startup.sh里面)。
  • 源码编译发布,须要修改build.sh的数据库链接信息,和各个环境meta server的地址(多个地址用,隔开)。
  • 已有打包发布,则须要在外置配置文件/config/application-github.properties里面配置数据库链接信息, 在portal的apollo-env.properties文件配置meta server的地址。
  • configService和adminService增长eureka.instance.ip-address和eureka.instance.prefer-ip-address的配置。能够配置在startup.sh的system properties上,也能够配置在外置配置文件application-githun.properties里面。
  • 按顺序启动:configService -> adminService -> portal

其余总结:

  • eureka服务治理和configService是在同一个服务里的。
  • 同一个环境的apollo服务的多个节点使用同一个数据库,不一样环境的apollo集群使用不一样的数据库;多个不一样环境的apollo集群使用一个portal就能够管理。
相关文章
相关标签/搜索