Apollo——环境搭建

编程

摘要

本文是基于Apollo源码构建,搭建Apollo运行环境的。Apollo的官方文档很详细,这里纯属记录一下,备忘。

资源

Apollo

Apollo的架构

简单来理解,可以把Apollo看成三个部分:

  1. Apollo-Portal 这个就是一个web应用,有自己的数据库,ApolloPortalDB,这里主要记录一下页面操作相关的,像操作记录、权限、角色之类的数据。
  2. Admin-Service 这个是提供http接口给Apollo-Portal 使用,用来操作真正的配置库 ApolloConfigDB。
  3. Config-Service 这个是提供http接口给客户端应用使用,用来读取ApolloConfigDB中的配置。

这里portal可以只有一份,同时操作各个环境的ApolloConfigDB,但是每一个环境的ApolloConfigDB都有一套对应的Admin-Service 和 Config-Service。

知道了这个关系,接下来部署这个应用。

部署步骤

数据库安装

数据库脚本见:apolloconfigdb.sql、apolloportaldb.sql 脚本

这里需要注意,Mysql版本需要 5.6.5+ ,否则timestamp类型的字段都会有问题(Apollo分布式部署指南)。如果Mysql版本低于 5.6.5+ ,就把脚本里面的 timestamp字段多有的default声明去掉。

配置Config-Service

配置 application.yml

spring:

application:

name: apollo-configservice

profiles:

active: ${apollo_profile}

datasource:

url: jdbc:mysql://ip:3306/ApolloConfigDB?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull

username: root

password: ***

jpa:

database-platform: org.hibernate.dialect.MySQLDialect

ctrip:

appid: 100003171

server:

port: 8080

logging:

file: /opt/logs/100003171/apollo-configservice.log

启动应用

执行main方法

com.ctrip.framework.apollo.configservice.ConfigServiceApplication.main(String[])

启动正常,默认的是8080端口

配置 Admin-Service

配置 application.yml

spring:

application:

name: apollo-adminservice

profiles:

active: ${apollo_profile}

datasource:

url: jdbc:mysql://IP:3306/ApolloConfigDB?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull

username: root

password: ***

jpa:

database-platform: org.hibernate.dialect.MySQLDialect

ctrip:

appid: 100003172

server:

port: 8090

logging:

file: /opt/logs/100003172/apollo-adminservice.log

启用应用

执行main方法

com.ctrip.framework.apollo.adminservice.AdminServiceApplication.main(String[])

默认启动的是8090端口,这些端口都是可以配置。

配置Apollo-Portal

配置 application.yml

spring:

application:

name: apollo-portal

profiles:

active: ${apollo_profile}

jpa:

properties:

hibernate:

query:

plan_cache_max_size: 192 # limit query plan cache max size

datasource:

url: jdbc:mysql://IP:3306/ApolloPortalDB?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull

username: root

password: ***

server:

port: 8070

compression:

enabled: true

tomcat:

use-relative-redirects: true

logging:

file: /opt/logs/100003173/apollo-portal.log

management:

health:

status:

order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP

这里配置的portal端口是8070,到时候页面访问就是这个端口。

配置apollo-env.properties

local.meta=http://localhost:8080

dev.meta=http://localhost:8080

fat.meta=${fat_meta}

uat.meta=${uat_meta}

lpt.meta=${lpt_meta}

pro.meta=${pro_meta}

启动应用

执行main方法

com.ctrip.framework.apollo.portal.PortalApplication.main(String[])

登录账号密码都是 apollo

http://localhost:8070/

客户端使用apollo

Apollo 新建应用

建好之后是这样的

再新建一个demo.properties文件,点“添加Namespace”->"创建Namespace"(默认是“关联公共Namespace”),输入“demo”,点“提交”就好了。

客户端应用接入

引入 apollo 客户端

<!-- apollo -->

<dependency>

<groupId>com.ctrip.framework.apollo</groupId>

<artifactId>apollo-client</artifactId>

<version>1.6.0-SNAPSHOT</version>

</dependency>

配置apollo 参数

# apollo 应用id,可以跟sentinel的project name 同名。

app.id=sentinel-demo-client

# metaServer 地址(实际上也是 config-service的地址,metaServer 跟 config-service 在同一个应用上)

apollo.meta=http://localhost:8080

# 开启apollo配置

apollo.bootstrap.enabled = true

# 配置需要从apollo 上 下载那些文件,并把这些文件注入到spring properties里面。 .properties 文件只需要一个文件名即可。

apollo.bootstrap.namespaces = application,demo

# 下载的文件临时存放路径

apollo.cacheDir=/Users/michaelfeng/apollo

自动之后,apollo客户端会从apollo平台拉取 application.properties,demo.properties 这两个文件。

更多使用参考官方文档。

以上是 Apollo——环境搭建 的全部内容, 来源链接: utcz.com/z/514753.html

回到顶部