zoukankan      html  css  js  c++  java
  • Apollo源码搭建调试看一文就够

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 

    我们先拉取源码,修改maven setting file,构建本地工程同时,我们再来笔者这篇文章。

    这篇我们只关注于默认dev环境的启动配置(比较简单的配置),其实ApolloPortalDB只需要在生产环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套,如dev、fat、uat和pro分别部署4套ApolloConfigDB。

    一、创建数据库

    Apollo服务端共需要两个数据库:ApolloPortalDBApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。

    创建ApolloPortalDB

    通过MySQL客户端导入apolloportaldb.sql即可。

    创建ApolloConfigDB

    通过MySQL客户端导入apolloconfigdb.sql即可。

    二、本地启动

    2.1 启动Apollo Config Service和Apollo Admin Service

    创建运行配置

    Main class 配置

    com.ctrip.framework.apollo.assembly.ApolloApplication

    Vm options 配置

    -Dapollo_profile=github
    -Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
    -Dspring.datasource.username=root
    -Dspring.datasource.password=******
    -Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-assembly.log

    1、datasource相关配置替换成你自己的数据库连接信息,注意数据库是ApolloConfigDB

    2、程序默认日志输出为/opt/logs/100003171/apollo-assembly.log,如果需要修改日志文件路径,可以增加logging.file参数,如下:

    -Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-assembly.log

    Program arguments 配置

    --configservice --adminservice

    Use classpath of module 配置

    apollo-assembly

    启动运行

    启动完后,打开http://localhost:8080可以看到apollo-configserviceapollo-adminservice都已经启动完成并注册到Eureka。

    2.2 启动Apollo-Portal

    创建运行配置

    Main class 配置

    com.ctrip.framework.apollo.portal.PortalApplication

    Vm options 配置

    -Dapollo_profile=github,auth
    -Ddev_meta=http://localhost:8080/
    -Dserver.port=8070
    -Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
    -Dspring.datasource.username=root
    -Dspring.datasource.password=root@123
    -Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-portal.log

    1、默认ApolloPortalDB中导入的配置只会展示DEV环境的配置,所以这里配置了dev_meta属性,如果你希望在本地展示其它环境的配置,需要在这里增加其它环境的meta服务器地址,如fat_meta。

    2、程序默认日志输出为/opt/logs/100003171/apollo-assembly.log,如果需要修改日志文件路径,可以增加logging.file参数,如下:

    -Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-portal.log

    Program arguments 配置

    --configservice --adminservice

    Use classpath of module 配置

    apollo-protal

    启动完后,打开http://localhost:8070就可以看到Apollo配置中心界面了。

    默认账号密码apollo/admin

    2.3 接入客户端

    创建运行配置

    Main class 配置

    com.ctrip.framework.apollo.demo.spring.springBootDemo.SpringBootSampleApplication

    Vm options 配置

    -Denv=dev
    -Ddev_meta=http://localhost:8080

     我们先配置dev环境的meta server地址为http://localhost:8080,也就是apollo-configservice的地址。

    Use classpath of module 配置

    apollo-demo

    2.4 服务端配置项

    ApolloPortalDB配置

    1.apollo.portal.envs - 可支持的环境列表

    默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感),如:

    DEV,FAT,UAT,PRO

     修改完需要重启生效。

    2.organizations - 部门列表

    Portal中新建的App都需要选择部门,所以需要在这里配置可选的部门信息,样例如下:

    [{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"}]

    ApolloConfigDB配置

    配置项统一存储在ApolloConfigDB.ServerConfig表中,需要注意每个环境的ApolloConfigDB.ServerConfig都需要单独配置,修改完一分钟实时生效。

    1. eureka.service.url - Eureka服务Url

    默认本地就是http://localhost:8080/eureka/

    2. namespace.lock.switch - 一次发布只能有一个人修改开关,用于发布审核

    这是一个功能开关,如果配置为true的话,那么一次配置发布只能是一个人修改,另一个发布。

    3. config-service.cache.enabled - 是否开启配置缓存

    这是一个功能开关,如果配置为true的话,config service会缓存加载过的配置信息,从而加快后续配置获取性能。

    默认为false,开启前请先评估总配置大小并调整config service内存配置。

    4. item.key.length.limit - 配置项 key 最大长度限制

    默认配置是128。

    5. item.value.length.limit - 配置项 value 最大长度限制

    默认配置是20000。

    三、开发启动的常见问题

    3.1 本地运行时Portal一直报Env is down.

    默认config service启动在8080端口,admin service启动在8090端口。请确认这两个端口是否被其它应用程序占用。

    如果还伴有异常信息:org.springframework.web.client.HttpClientErrorException: 405 Method Not Allowed,一般是由于本地启动了ShadowSocks,因为ShadowSocks默认会占用8090端口。

    1.1.0版本增加了系统信息页面,可以通过管理员工具 -> 系统信息查看当前各个环境的Meta Server以及admin service信息,有助于排查问题。

    3.2 启动注册Eureka地址错误

    检查ApolloConfigDB.ServerConfig表中 eureka.service.url 是否配置正确。

    3.3 检查是否存在没有配置的环境

    java.lang.IllegalArgumentException: Not enough variable values available to expand 'pro_meta'

    检查ApolloPortalDB.ServerConfig表中 apollo.portal.envs 配置项是否都有配置,默认应该只配置dev(不区分大小写)

    3.4 检查mysql配置版本和驱动

    apollo com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serve

    检查数据库是否启动,检查mysql版本是否符合。具体可以参考

    https://github.com/ctripcorp/apollo/issues/1138

    问题持续更新。


    到这里配置已经可以进行本地联调测试,如果有任何问题可以留言一起讨论。

    更多可以参考

    1、Apollo部署指南

    2、Apollo开发指南

  • 相关阅读:
    word文档中画垂直或水平的线条
    word文档中把几个图形组合在一起
    设计模式
    确认删除的提示的JQuery
    Incorrect column count: expected 1, actual 4 问题
    Spring MVC 中的 controller层的方法的返回值类型
    SpringBoot 项目用户登录
    使用模板异常的解决
    Redis配置到本地以及可视化工具的安装运用
    第034讲:丰富的else语句及简洁的with语句 | 课后测试题及答案
  • 原文地址:https://www.cnblogs.com/lewis09/p/10815898.html
Copyright © 2011-2022 走看看