zoukankan      html  css  js  c++  java
  • Apollo

    Apollo

    以下仅列出Apollo的搭建,更多详情请查阅
    Apollo环境搭建

    准备工作

    1.1 运行时环境

    1.1.1 OS

    服务端基于Spring Boot,启动脚本理论上支持所有Linux发行版,建议CentOS 7。

    1.1.2 Java

    • Apollo服务端:1.8+
    • Apollo客户端:1.7+

    由于需要同时运行服务端和客户端,所以建议安装Java 1.8+。

    对于Apollo客户端,运行时环境只需要1.7+即可。
    注:对于Apollo客户端,如果有需要的话,可以做少量代码修改来降级到Java 1.6,详细信息可以参考Issue 483
    在配置好后,可以通过如下命令检查:

    java -version
    

    样例输出:

    java version "1.8.0_74"
    Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
    Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
    

    1.2 MySQL

    • 版本要求:5.6.5+

    Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。

    连接上MySQL后,可以通过如下命令检查:

    SHOW VARIABLES WHERE Variable_name = 'version';
    
    Variable_name Value
    version 5.7.11

    注1:MySQL版本可以降级到5.5,详见mysql 依赖降级讨论。

    注2:如果希望使用Oracle的话,可以参考vanpersl在Apollo 0.8.0基础上开发的Oracle适配代码,Oracle版本为10.2.0.1.0。

    注3:如果希望使用Postgres的话,可以参考oaksharks在Apollo 0.9.1基础上开发的Pg适配代码,Postgres的版本为9.3.20,也可以参考xiao0yy在Apollo 0.10.2基础上开发的Pg适配代码,Postgres的版本为9.5。

    部署步骤

    2.1 创建数据库

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

    需要注意的是ApolloPortalDB只需要在生产环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro分别部署3套ApolloConfigDB。

    注意:如果你本地已经创建过Apollo数据库,请注意备份数据。我们准备的sql文件会清空Apollo相关的表。

    2.1.1 创建ApolloPortalDB

    2.1.1.1 手动导入SQL创建

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

    以MySQL原生客户端为例:

    source /your_local_path/scripts/sql/apolloportaldb.sql
    

    2.1.2 创建ApolloConfigDB

    2.1.2.1 手动导入SQL

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

    以MySQL原生客户端为例:

    source /your_local_path/scripts/sql/apolloconfigdb.sql
    

    2.2 虚拟机/物理机部署

    2.2.1 获取安装包

    可以通过两种方式获取安装包:

    1. 直接下载安装包
      • 从GitHub Release页面下载预先打好的安装包
      • 如果对Apollo的代码没有定制需求,建议使用这种方式,可以省去本地打包的过程
    2. 通过源码构建
      • 从GitHub Release页面下载Source code包或直接clone源码后在本地构建
      • 如果需要对Apollo的做定制开发,需要使用这种方式
    2.2.1.1 直接下载安装包
    2.2.1.1.1 获取apollo-configservice、apollo-adminservice、apollo-portal安装包

    从GitHub Release页面下载最新版本的apollo-configservice-x.x.x-github.zip、apollo-adminservice-x.x.x-github.zip和apollo-portal-x.x.x-github.zip即可。

    2.2.1.1.2 配置数据库连接信息

    Apollo服务端需要知道如何连接到你前面创建的数据库,数据库连接串信息位于上一步下载的压缩包中的config/application-github.properties中。

    2.2.1.1.2.1 配置apollo-configservice的数据库连接信息
    1. 解压apollo-configservice-x.x.x-github.zip
    2. 用程序员专用编辑器(如vim,notepad++,sublime等)打开config目录下的application-github.properties文件
    3. 填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格!
    4. 修改完的效果如下:
    # DataSource
    spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
    spring.datasource.username = someuser
    spring.datasource.password = somepwd
    

    注:由于ApolloConfigDB在每个环境都有部署,所以对不同的环境config-service需要配置对应环境的数据库参数

    2.2.1.1.2.2 配置apollo-adminservice的数据库连接信息
    1. 解压apollo-adminservice-x.x.x-github.zip
    2. 用程序员专用编辑器(如vim,notepad++,sublime等)打开config目录下的application-github.properties文件
    3. 填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格!
    4. 修改完的效果如下:
    # DataSource
    spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
    spring.datasource.username = someuser
    spring.datasource.password = somepwd
    

    注:由于ApolloConfigDB在每个环境都有部署,所以对不同的环境admin-service需要配置对应环境的数据库参数

    2.2.1.1.2.3 配置apollo-portal的数据库连接信息
    1. 解压apollo-portal-x.x.x-github.zip
    2. 用程序员专用编辑器(如vim,notepad++,sublime等)打开config目录下的application-github.properties文件
    3. 填写正确的ApolloPortalDB数据库连接串信息,注意用户名和密码后面不要有空格!
    4. 修改完的效果如下:
    # DataSource
    spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
    spring.datasource.username = someuser
    spring.datasource.password = somepwd
    
    2.2.1.1.2.4 配置apollo-portal的meta service信息

    Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息。默认情况下,meta service和config service是部署在同一个JVM进程,所以meta service的地址就是config service的地址。

    对于1.6.0及以上版本,可以通过ApolloPortalDB.ServerConfig中的配置项来配置Meta Service地址,详见apollo.portal.meta.servers - 各环境Meta Service列表

    使用程序员专用编辑器(如vim,notepad++,sublime等)打开apollo-portal-x.x.x-github.zip中config目录下的apollo-env.properties文件。

    假设DEV的apollo-configservice未绑定域名,地址是1.1.1.1:8080,FAT的apollo-configservice绑定了域名apollo.fat.xxx.com,UAT的apollo-configservice绑定了域名apollo.uat.xxx.com,PRO的apollo-configservice绑定了域名apollo.xxx.com,那么可以如下修改各环境meta service服务地址,格式为${env}.meta=http://${config-service-url:port},如果某个环境不需要,也可以直接删除对应的配置项(如lpt.meta):

    dev.meta=http://192.168.64.101:8080
    fat.meta=http://192.168.64.101:8180
    uat.meta=http://192.168.64.101:8380
    pro.meta=http://192.168.64.101:8480
    

    除了通过apollo-env.properties方式配置meta service以外,apollo也支持在运行时指定meta service(优先级比apollo-env.properties高):

    1. 通过Java System Property ${env}_meta
      • 可以通过Java的System Property ${env}_meta来指定
      • 如java -Ddev_meta=http://config-service-url -jar xxx.jar
      • 也可以通过程序指定,如System.setProperty("dev_meta", "http://config-service-url");
    2. 通过操作系统的System Environment${ENV}_META
      • 如DEV_META=http://config-service-url
      • 注意key为全大写,且中间是_分隔

    注1: 为了实现meta service的高可用,推荐通过SLB(Software Load Balancer)做动态负载均衡

    注2: meta service地址也可以填入IP,0.11.0版本之前只支持填入一个IP。从0.11.0版本开始支持填入以逗号分隔的多个地址(PR #1214),如http://1.1.1.1:8080,http://2.2.2.2:8080,不过生产环境还是建议使用域名(走slb),因为机器扩容、缩容等都可能导致IP列表的变化。

    2.2.2 部署Apollo服务端

    2.2.2.1 部署apollo-configservice

    将对应环境的apollo-configservice-x.x.x-github.zip上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh.

    记得在scripts/startup.sh中按照实际的环境设置一个JVM内存,以下是我们的默认设置,供参考:

    export JAVA_OPTS="-server -Xms6144m -Xmx6144m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=4096m -XX:MaxNewSize=4096m -XX:SurvivorRatio=18"
    

    注1:如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分。

    注2:如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-configservice.conf中的LOG_DIR。

    注3:如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。另外apollo-configservice同时承担meta server职责,如果要修改端口,注意要同时ApolloConfigDB.ServerConfig表中的eureka.service.url配置项以及apollo-portal和apollo-client中的使用到的meta server信息,详见:2.2.1.1.2.4 配置apollo-portal的meta service信息和1.2.2 Apollo Meta Server。

    注4:如果ApolloConfigDB.ServerConfig的eureka.service.url只配了当前正在启动的机器的话,在启动apollo-configservice的过程中会在日志中输出eureka注册失败的信息,如com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused。需要注意的是,这个是预期的情况,因为apollo-configservice需要向Meta Server(它自己)注册服务,但是因为在启动过程中,自己还没起来,所以会报这个错。后面会进行重试的动作,所以等自己服务起来后就会注册正常了。

    注5:如果你看到了这里,相信你一定是一个细心阅读文档的人,而且离成功就差一点点了,继续加油,应该很快就能完成Apollo的分布式部署了!不过你是否有感觉Apollo的分布式部署步骤有点繁琐?是否有啥建议想要和作者说?如果答案是肯定的话,请移步 #1424,期待你的建议!

    2.2.2.2 部署apollo-adminservice

    将对应环境的apollo-adminservice-x.x.x-github.zip上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh.

    记得在scripts/startup.sh中按照实际的环境设置一个JVM内存,以下是我们的默认设置,供参考:

    export JAVA_OPTS="-server -Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=22"
    

    注1:如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分。

    注2:如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-adminservice.conf中的LOG_DIR。

    注3:如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。

    2.2.2.3 部署apollo-portal

    将apollo-portal-x.x.x-github.zip上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh.

    记得在startup.sh中按照实际的环境设置一个JVM内存,以下是我们的默认设置,供参考:

    export JAVA_OPTS="-server -Xms4096m -Xmx4096m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=22"
    

    注1:如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分。

    注2:如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-portal.conf中的LOG_DIR。

    注3:如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。

    Apollo相关介绍

    这个设置开机启动有点麻烦
    手动启动Apollo:

    cd /usr/apollo
    
    apollo-configservice/scripts/startup.sh
    apollo-adminservice/scripts/startup.sh
    apollo-portal/scripts/startup.sh
    

    效果图:默认账号apollo admin

  • 相关阅读:
    第一个EJB示例
    Visual Studio/Eclipse调用 JBoss5中的WebService
    TomEE
    eclipse 启动时使用指定的jdk
    Haskell示例
    安装VS2010 SP1后,再安装mvc3
    Mysql报错为1366的错误的时候
    Java8-如何将List转变为逗号分隔的字符串
    IDEA连接mysql又报错!Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope
    he last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  • 原文地址:https://www.cnblogs.com/Nine4Cool/p/13873393.html
Copyright © 2011-2022 走看看