Apollo配置中心 1.1.2

问题

由于最近公司要弄灰度发布,所以需要添加一套Apollo配置,默认是可以管理 dev, fat, uat, pro四套环境,但是我们想自定义一下环境,所以就尝试一下自定义环境,需要自己修改源码然后自己编译打包

如果默认的四套环境能够满足自己需求,就可以直接使用官网提供的包,我们只需修改数据库配置和环境信息即可使用

下载地址:https://github.com/ctripcorp/apollo/releases(自己定制的不需要下载)

使用目前最新版本 apollo-1.1.2

环境准备

  1. Java环境,JDK1.8或者以上(刚需)
  2. Mysql数据库,版本5.6.5以上(刚需)
  3. 下载Apollo源码:https://github.com/ctripcorp/apollo(自己定制的需要下载)

数据库准备

执行SQL语句,创建数据库

(portal库只需要创建一个,因为一个portal可以管理多个config,config数据库需要建立多个,因为一套环境需要一个独立的数据库,所以创建config库的时候,要去脚本修改数据库名称,图2是建好之后的数据库)

Apollo配置中心 1.1.2_第1张图片Apollo配置中心 1.1.2_第2张图片

修改数据库配置

  1. 修改 portal 库的 ServerConfig 表,默认只管理 dev,可配置多套环境,逗号隔开Apollo配置中心 1.1.2_第3张图片
  2. 修改 config 库的 ServerConfig 表,修改端口号,由于默认是8080,但是我需要在一台机器上部署多个config,所以修改端口号避免冲突,也便于管理(此处演示的是 dev,是系统默认自带的环境dev,uat,fat,pro之一,所以只演示一个)Apollo配置中心 1.1.2_第4张图片
  3. 修改自定义环境的 config 库的 ServerConfig 表,修改和上面操作一样Apollo配置中心 1.1.2_第5张图片

修改源码(自己定制的需要,不定制的可忽略)

修改的时候最好导入到 idea 里面操作,这样会很方便,而且还便于后续测试,也便于看源码

Apollo配置中心 1.1.2_第6张图片

  1. 假设需要添加的环境名称叫 beta
  2. 修改com.ctrip.framework.apollo.core.enums.Env类,在其中加入BETA枚举:Apollo配置中心 1.1.2_第7张图片
  3. 修改com.ctrip.framework.apollo.core.enums.EnvUtils类,在其中加入BETA枚举的转换逻辑:Apollo配置中心 1.1.2_第8张图片
  4. 修改apollo-env.properties,增加 beta.meta 占位符:Apollo配置中心 1.1.2_第9张图片
  5. 修改com.ctrip.framework.apollo.core.internals.LegacyMetaServerProvider类,增加读取BETA环境的meta server地址逻辑:Apollo配置中心 1.1.2_第10张图片

修改打包脚本(自己定制的需要,不定制的可忽略)

此处去除了 config 的数据库连接配置,因为不同环境对应的数据库不同,所以打包后修改配置文件即可

Apollo配置中心 1.1.2_第11张图片

开始打包(自己定制的需要,不定制的可忽略)

由于第一次编译打包会下载很多文件,所以会比较慢,建议连接 阿里的中央仓库,速度会快很多,在mirrors节点下添加


    nexus-aliyun
    *
    Nexus aliyun
    http://maven.aliyun.com/nexus/content/groups/public
 

Apollo配置中心 1.1.2_第12张图片

修改好配置之后,双击 build.bat 开始打包,等待几分钟,控制台最后会提示打包完成

Apollo配置中心 1.1.2_第13张图片

Apollo配置中心 1.1.2_第14张图片Apollo配置中心 1.1.2_第15张图片

然后找到 admin、config、portal 对应的.zip包,然后再解压,修改配置,再上传到服务器,就可以部署我们的 apollo 服务了

修改配置 Portal

  1. apollo-portal-1.1.2-github\scripts\startup.sh    修改端口号,自定义,只要不冲突就行Apollo配置中心 1.1.2_第16张图片
  2. apollo-portal-1.1.2-github\config\application-github.properties  portal 数据库配置(打包时已输入,则此处无需修改)
  3. apollo-portal-1.1.2-github\config\apollo-env.properties portal管理的环境配置(打包时已输入,则此处无需修改)Apollo配置中心 1.1.2_第17张图片

修改配置 Config(以dev为例,每个环境都是一样的)

  1. apollo-configservice-1.1.2-dev\scripts\startup.sh  修改端口号,自定义,只要不冲突就行Apollo配置中心 1.1.2_第18张图片
  2. apollo-configservice-1.1.2-dev\config\application-github.properties config的数据库配置(根据不同环境配置不同)
  3. apollo-configservice-1.1.2-dev\config\bootstrap.yml 由于是分布式部署,在云服务器上就有可能出现内网和外网IP的问题,所以此处需要指定IP,以免出现访问不到的问题(文件是由源码复制出来修改的)
    ​​​​eureka:
      instance:
        ip-address: 193.112.126.181
        preferIpAddress: true
      client:
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:41001/eureka/
        healthcheck:
          enabled: true
        eurekaServiceUrlPollIntervalSeconds: 60
    
    endpoints:
      health:
        sensitive: false
    
    management:
      security:
        enabled: false
      health:
        status:
          order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP

    Apollo配置中心 1.1.2_第19张图片

修改配置 Admin(以dev为例,每个环境都是一样的)

  1. apollo-adminservice-1.1.2-dev\scripts\startup.sh  修改端口号,自定义,只要不冲突就行Apollo配置中心 1.1.2_第20张图片
  2. apollo-adminservice-1.1.2-dev\config\application-github.properties 与config一致
  3. apollo-adminservice-1.1.2-dev\config\bootstrap.yml 与 config 类似,不同的是端口号不同

部署

  1. 本地修改后的包,portal只有一份,config和admin一对一,可以有多份Apollo配置中心 1.1.2_第21张图片
  2. 将修改好配置的包全部上传到服务器 放到指定文件夹,位置随意,目的是方便管理Apollo配置中心 1.1.2_第22张图片
  3. 然后修改每个startup.sh,shutdown.sh的权限,默认只有读写权限,没有执行权限
    chmod -R 755 startup.sh
    chmod -R 755 shutdown.sh
  4. 启动服务   到各个目录下,运行 ./startup.sh,若全部启动成功则表示服务已经启动成功。若出现报错,则可以根据提示去指定路径查看错误日志
  5. 启动成功后就可以去portal访问了,如果是云服务器可能需要自己开放端口号,默认密码 apollo / adminApollo配置中心 1.1.2_第23张图片
  6. 登陆成功后,能看到管理的环境列表,自己可以创建工程,配置参数,发布等功能Apollo配置中心 1.1.2_第24张图片

客户端访问服务

  1. opt/settings/server.properties 若为window系统,则是c:/opt/settings/server.properties; 若为Linux系统,则配置 /opt/settings/server.properties;之前老版本使用的 env=PRO(环境的名称,在打包文件 build.bat 里面定义的)的方式,现在直接配置最后一行即可,地址为想要连接环境的 IP + Port,我的41001对应的为 dev 环境
  2. 在项目中,app.properties 文件中,设置app.id,与 portal 创建的 AppId 一致Apollo配置中心 1.1.2_第25张图片
  3. 启动 SimpleApolloConfigDemo,然后输入 key,获取 value,获取值为portal所配置,到此为止客户端访问成功。具体原理需要自己去看源码了,可以参考  Java客户端使用指南https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97Apollo配置中心 1.1.2_第26张图片
  4. Apollo配置中心 1.1.2_第27张图片

你可能感兴趣的:(环境配置,Linux,Apollo)