zoukankan      html  css  js  c++  java
  • pollo分布式配置中心部署以及使用(转发)

    pollo分布式配置中心部署以及使用

    一、简介

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

    官方github:https://github.com/ctripcorp/apollo

    作者对Apollo对介绍:https://github.com/ctripcorp/apollo/wiki/Apollo%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%BF%83%E4%BB%8B%E7%BB%8D

    二、安装部署

    基础设施

    本次部署环境为DEV(开发环境)、FAT(测试环境)、UAT(预生产)、PRO(生产)

    应用服务器:

    环境服务器服务端口
    / 192.168.35.206 apollo-portal 9102
    DEV 192.168.35.207 apollo-configservice
    apollo-adminservice
    9100
    9101
    FAT 192.168.35.208 apollo-configservice
    apollo-adminservice
    9100
    9101
    UAT 192.168.35.209 apollo-configservice
    apollo-adminservice
    9100
    9101
    PRO 192.168.35.210 apollo-configservice
    apollo-adminservice
    9100
    9101

    数据库服务器:

    环境服务器服务数据库端口
    / 192.168.35.226 apollo-portal ApolloPortalDB 3306
    DEV 192.168.35.227 apollo-configservice
    apollo-adminservice
    ApolloConfigDB 3306
    FAT 192.168.35.228 apollo-configservice
    apollo-adminservice
    ApolloConfigDB 3306
    UAT 192.168.35.229 apollo-configservice
    apollo-adminservice
    ApolloConfigDB 3306
    PRO 192.168.35.230 apollo-configservice
    apollo-adminservice
    ApolloConfigDB 3306

    配置

    下载代码:

    git clone https://github.com/ctripcorp/apollo.git
    • 1

    比较重要的几个项目: 
    - apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象为Apollo客户端 
    - apollo-adminservice:提供配置管理接口,提供配置修改、发布等接口,接口服务对象为Portal,以及Eureka 
    - apollo-portal:提供Web界面供用户管理配置 
    - apollo-client:Apollo提供的客户端程序,为应用提供配置获取、实时更新等功能

    上图简要描述了配置发布的大致过程:

    • 用户在Portal操作配置发布
    • Portal调用Admin Service的接口操作发布
    • Admin Service发布配置后,发送ReleaseMessage给各个Config Service
    • Config Service收到ReleaseMessage后,通知对应的客户端

    数据库初始化:

    下面的sql为大写格式,注意数据库的大小写敏感设置

    • ApolloPortalDB:执行apolloscriptssqlapolloportaldb.sql
    • ApolloConfigDB:DEV FAT UAT PRO 环境执行apolloscriptssqlapolloconfigdb.sql

    调整配置并打包:

    Apollo项目中找到目录apolloscripts的配置文件build.bat或者build.bat 
    1. 数据库配置 
    修改数据库配置,上面的是ApolloConfigDB配置,下面的是ApolloPortalDB配置:

    # apollo config db info  该数据库配置只需要配置一次,不同环境无需修改
    apollo_config_db_url=jdbc:mysql://192.168.35.227:3306/ApolloConfigDB?characterEncoding=utf8
    apollo_config_db_username=XXXX
    apollo_config_db_password=XXXX
    
    # apollo portal db info  该数据库依据不同环境配置对应的数据库连接,并且需要多次打对应环境的JAR包
    apollo_portal_db_url=jdbc:mysql://192.168.35.226:3306/ApolloPortalDB?characterEncoding=utf8
    apollo_portal_db_username=XXXX
    apollo_portal_db_password=XXXX
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • apollo config db info 该数据库配置只需要配置一次,不同环境无需修改
    • apollo portal db info 该数据库依据不同环境配置对应的数据库连接,并且需要多次打

      1. 修改环境调用地址
    # meta server url, different environments should have different meta server addresses
    dev_meta=http://192.168.35.207:9100
    fat_meta=http://192.168.35.208:9100
    uat_meta=http://192.168.35.209:9100
    pro_meta=http://192.168.35.210:9100
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 修改数据库数据

    在DEV FAT UAT PRO 对应的ApolloConfigDB数据库中,找到表ServerConfig中的eureka.service.url配置项:

    UPDATE apolloconfigdb.ServerConfig SET ServerConfig.`Value`='http://localhost:9100/eureka/' WHERE `Key`='eureka.service.url';
    • 1

    具体eureka配置,可以查看官网:https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97

    1. 编译、打包
    ./build.sh
    • 1
    • 该脚本会依次打包apollo-configservice, apollo-adminservice, apollo-portal和apollo-client。
    • 由于ApolloConfigDB在每个环境都有部署,所以对不同环境的config-service和admin-service需要使用不同的数据库连接信息打不同的包,portal和client只需要打一次包即可

    开始部署

    部署程序到对应的服务器

    1. 部署apollo-configservice

    apollo-configservice/target/目录下的apollo-configservice-x.x.x-github.zip上传到服务器上,解压 
    修改scripts/startup.sh :

    LOG_DIR=/opt/logs/100003171
    SERVER_PORT=9100
    • 1
    • 2

    执行scripts/startup.sh即可 
    如需停止服务,执行scripts/shutdown.sh.

    1. 部署apollo-adminservice

    apollo-adminservice/target/目录下的apollo-adminservice-x.x.x-github.zip上传到服务器上,解压 
    修改scripts/startup.sh

    LOG_DIR=/opt/logs/100003172
    SERVER_PORT=9101
    • 1
    • 2

    执行scripts/startup.sh即可 
    如需停止服务,执行scripts/shutdown.sh.

    1. 部署apollo-portal

    apollo-portal/target/目录下的apollo-portal-x.x.x-github.zip上传到服务器上,解压 
    修改scripts/startup.sh

    LOG_DIR=/opt/logs/100003173
    SERVER_PORT=9102
    • 1
    • 2

    执行scripts/startup.sh即可 
    如需停止服务,执行scripts/shutdown.sh.

    访问测试

    上面部署完成,可以测试

    访问不同环境的eureka,查看服务注册情况是否正确:

    http://192.168.35.207:9100/
    • 1

    如果可以看到:

    192.168.35.207:apollo-adminservice:9101
    192.168.35.207:apollo-configservice:9100
    • 1
    • 2

    两个服务都为UP,正常!

    访问客户端:

    http://192.168.35.206:9102/
    • 1

    登录,默认用户名密码为:apollo/admin

    新建项目测试。

    三、使用配置中心配置信息

    1. maven引入上面步骤编译打包成功的apollo-coreapollo-client包:
    <dependency>
        <groupId>com.ctrip.framework.apollo</groupId>
        <artifactId>apollo-core</artifactId>
        <version>0.11.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.ctrip.framework.apollo</groupId>
        <artifactId>apollo-client</artifactId>
        <version>0.11.0-SNAPSHOT</version>
    </dependency>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 创建app.properties

    请确保classpath:/META-INF/app.properties文件存在,并且其中内容为自己的项目名称,而且要保持唯一:

    app.id=demo
    • 1
    1. 环境变量配置

    本地开发

    如果是本地开发,可以在开发工具添加Environment:

    env=DEV
    • 1

    线上环境配置方式: 
    - 使用Java启动参数添加java -Denv=YOUR-ENVIRONMENT -jar xxx.jar 
    - 通过操作系统的System Environment 
    - 通过配置文件: 
    对于Mac/Linux,文件位置为/opt/settings/server.properties 
    对于Windows,文件位置为C:optsettingsserver.properties

    1. 配置apollo-env.properties

    在项目中引用apollo-coreapollo-client包,在apollo-core包中可以看到apollo-env.properties配置文件,默认配置为打包前配置的信息:

    local.meta=http://localhost:8080
    dev.meta=http://192.168.35.207:9100
    fat.meta=http://192.168.35.208:9100
    uat.meta=http://192.168.35.209:9100
    lpt.meta=${lpt_meta}
    pro.meta=http://192.168.35.210:9100
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果需要修改或者覆盖的话,在项目的resources从上面复制一个apollo-env.properties文件,修改对应环境信息就可以了

    1. 启用配置 
      在启动类添加@EnableApolloConfig注解即可:
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    
    /**
     * @author chihiro.zhang
     */
    @EnableApolloConfig
    @SpringBootApplication
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    1. 测试

    添加一个测试的类DemoConfiguration,当然配置中心要有下面配置的配置信息:

    @Configuration
    @EnableAutoConfiguration
    public class DemoConfiguration {
        @Value("${demo}")
        private String demo;
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    完成!

    四、部署方案

    这个图是计划部署的方案,并不是上面写的例子的方案

  • 相关阅读:
    安卓系统的文件管理神器Solid Explorer(v2.2)
    地月距离竟然如此遥远
    Android在争议中逃离Linux内核的GPL约束【转】
    gearman
    PHP基础学习
    函数式编程
    有向图的实现
    无向图的实现
    百度地图API获取数据
    python队列的实现
  • 原文地址:https://www.cnblogs.com/bocai007/p/9469638.html
Copyright © 2011-2022 走看看