一、Apollo包的介绍

apollo一共三个包:apollo-portal.zipapollo-configservice.zipapollo-adminservice.zip

说明:

portal:后台配置管理页面;

config:提供配置的读取、推送等功能;

admin:提供配置的修改、发布等功能

二、环境准备

测试环境

单机多环境部署:将devletestphotondevphotontesttest部署到一台机器;

数据库部署:每套环境一个apolloconfigdb数据库,可共用一个apolloportaldb数据库

设置每个环境端口号:

dev: config-8080,admin-8090,portal-8087

test: config-8081,admin-8091,portal-8087

photondev: config-8082,admin-8092,portal-8087

photontest: config-8083,admin-8093,portal-8087

letest: config-8084,admin-8094,portal-8087

连接数据库

dev—>dev_apolloconfigdb

test—>test_apolloconfigdb

photondev—>photondev_apolloconfigdb

photontest—>photontest_apolloconfigdb

letest—>letest_apolloconfigdb

portal只需要连接apolloportaldb

样例:
spring.datasource.url = jdbc:mysql://localhost:3306/dev_ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
修改startup.sh脚本

dev:LOG_DIR=/opt/logs/config-devLOG_DIR=/opt/logs/admin-dev

test:LOG_DIR=/opt/logs/config-testLOG_DIR=/opt/logs/admin-test

photondev:LOG_DIR=/opt/logs/config-photondevLOG_DIR=/opt/logs/admin-photondev

photontest:LOG_DIR=/opt/logs/config-photontestLOG_DIR=/opt/logs/admin-photontest

letest:LOG_DIR=/opt/logs/config-letestLOG_DIR=/opt/logs/admin-letest

添加eureka注册地址

在admin和config的startup.sh中添加最好添加在其他export JAVA_OPTS的下面:

export JAVA_OPTS="$JAVA_OPTS -Deureka.instance.ip-address=localhost"

startup.sh启动顺序

config-dev—>config-test—>cofig-photondev—>photontest—>letest—>portal

查看所有端口是否已启动

netstat -lnpt

连接Apollo

给java应用启动参数上添加:-Dapollo.meta=http://localhost:8080 -Denv=dev

生产环境

多机多环境部署keanonlinelejiaonlineleonlineonlinephotononlinesdbonline每套环境独立一台机器,可集群部署;

数据库部署:每套环境一个apolloconfigdb数据库,可共用一个apolloportaldb数据库

生产环境部署

设置每个环境ip,如下:

keanonline:1.1.1.1,连接对应数据库:keanonline_apolloconfigdb

lejiaonline:2.2.2.2,连接对应数据库:lejiaonline_apolloconfigdb

leonline:3.3.3.3,连接对应数据库:leonline_apolloconfigdb

online:4.4.4.4,连接对应数据库:online_apolloconfigdb

photononline:5.5.5.5,连接对应数据库:photononline_apolloconfigdb

sdbonline:6.6.6.6,连接对应数据库:sdbonline_apolloconfigdb

1、以上6台服务器都部署上(adminconfig)这两个包;
2、使用7.7.7.7服务器部署(portal)包;并且连接apolloportaldb数据库

小结:

  所有环境需要将adminconfig部署到同一台服务器上,并且连接不同数据库;portal包只需要一台服务器;

上传文件并解压

apollo-configservice-1.0.0-github.zipapollo-adminservice-1.0.0-github.zipapollo-portal-1.0.0-github.zip上传到对应的服务器

修改数据库连接

admin和config数据库配置修改:

修改文件路径:

 1、/tonder/app/apollo/config-dev/config/application-github.properties2、/tonder/app/apollo/admin-dev/config/application-github.properties

adminconfig连接同一个{env}_aplloconfigDB数据库连接

spring.datasource.url = jdbc:mysql://localhost:3306/dev_ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
portal数据库配置修改:

修改文件路径:

1、/tonder/app/apollo/config-dev/config/application-github.properties

portal比较简单,只需要修改一个:

spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root

修改启动脚本

adminconfig

1、修改日志路径:LOG_DIR=/opt/logs/config-{env}LOG_DIR=/opt/logs/admin-{env}
2、添加eureka指定ip地址注册:

export JAVA_OPTS="$JAVA_OPTS -Deureka.instance.ip-address=localhost"

portla
修改日志路径:LOG_DIR=/opt/logs/portal

执行数据库脚本:

  config.sql和portal.sql

修改数据库配置:

注意⚠️:请修改对应库名和对应的ip

修改eureka注册地址:
update keanonline_ApolloConfigDB.ServerConfig set value='http://1.1.1.1:8080/eureka/' where `key`='eureka.service.url';
update lejiaonline_ApolloConfigDB.ServerConfig set value='http://2.2.2.2:8080/eureka/' where `key`='eureka.service.url';
update leonline_ApolloConfigDB.ServerConfig set value='http://3.3.3.3:8080/eureka/' where `key`='eureka.service.url';
update online_ApolloConfigDB.ServerConfig set value='http://4.4.4.4:8080/eureka/' where `key`='eureka.service.url';
update photononline_ApolloConfigDB.ServerConfig set value='http://5.5.5.5:8080/eureka/' where `key`='eureka.service.url';
update sdbonline_ApolloConfigDB.ServerConfig set value='http://6.6.6.6:8080/eureka/' where `key`='eureka.service.url';
修改支持的环境变量:
update ApolloPortalDB.ServerConfig set value='keanonline,lejiaonline,leonline,online,photononline,sdbonline' where `key`='apollo.portal.envs';
启动脚本

启动所有config->启动所有admin->portal

验证

1、在浏览器上访问http://localhost:8070

2、输入账号:apollo;密码:admin;

3、点击SampleApp进入环境管理页面;

4、进入管理页面后,右上角没有红色弹窗,表示没有异常,如有异常到/opt/logs/portal/看报错信息

5、第四步,没有问题,就基本上apollo搭建成功了

生产应用接入方式

利用jenkines打包时添加两个java启动参数,-Dapollo.meta=http://{env_config_ipAdress}:8080 -Denv=online,可参照测试环境的配置方式

Apollo本地缓存

Apollo客户端会把从服务端获取到的配置在java应用系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。

本地缓存路径默认为:/opt/data,注意⚠️查看应用是否有读写权限

开启本地缓存开关:

update keanonline_ApolloConfigDB.ServerConfig set value='true' where `key`='config-service.cache.enabled';
update lejiaonline_ApolloConfigDB.ServerConfig set value='true' where `key`='config-service.cache.enabled';
update leonline_ApolloConfigDB.ServerConfig set value='true' where `key`='config-service.cache.enabled';
update online_ApolloConfigDB.ServerConfig set value='true' where `key`='config-service.cache.enabled';
update photononline_ApolloConfigDB.ServerConfig set value='true' where `key`='config-service.cache.enabled';
update sdbonline_ApolloConfigDB.ServerConfig set value='true' where `key`='config-service.cache.enabled';

三、java应用接入教程

1.引入jar包

<dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-core</artifactId><version>1.3.0</version>
</dependency>
<dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>1.3.0</version>
</dependency>

2.在springboot启动类Application.java上添加注解

@Configuration
@EnableApolloConfig
以上是springboot配置方式,其他配置方式见:https://github.com/ctripcorp/apollo/wiki/Java客户端使用指南

3.META-INF下创建app.properties文件

内容为:app.id=tc-manageapp.id是在apollo管理页面上创建的应用ID

4.应用启动配置方式

方式一:

在Run/Debug Configurations->Application->Environment->vm options中添加-Dapollo.meta=http://120.79.232.74:8080 -Denv=dev

方式二:

在本地环境创建/opt/settings/server.properties,内容为:env=devapollo.meta=http://120.79.232.74:8080

四、踩坑总结

第一个坑

在搭建环境时,注意⚠️服务器是否开放制定环境的端口号

第二个坑

Apollo不支持很多环境,目前只支持LOCAL, DEV, FWS, FAT, UAT, LPT, PRO, TOOLS

解决方案:

修改`Apollo`源码,添加环境变量后重新打包部署到服务器上,并将`jar`包上传到`nexus`,然后修改`java`程序`maven`依赖涉及到的类有:`Env,EnvUtils#transformEnv,LegacyMetaServerProvider#initialize`

第三个坑

apollo.meta=http://119.23.240.225:6060这个地址一定要跟env=dev对应上

第四个坑

本地环境修改配置后,会自动重启服务器,热部署是罪魁祸首:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId>
</dependency>

第五个坑

单机多环境部署时,要注意内存是否足够,因为我在测试环境【内存配置:4GB】部署五个环境,启动了11个java应用,内存不足会将其他java应用kill掉,替换新的java应用.

查看内存使用情况:free -h

查看所有环境是否全部启动,可查看端口号:netstat -nlpt

第六个坑

在java应用中查看是否成功连接上Apollo,是否可实时更新配置:

方法一:
登录apollo的管理页面中的实例列表,查看是否存在你的ip

方法二:

如果看到这个日志,说明成功连接上了

c.c.f.a.i.DefaultMetaServerProvider:42 ## Located meta services from apollo.meta configuration: http://localhost:8080!
c.c.f.apollo.core.MetaDomainConsts:93 ## Located meta server address http://localhost:8080 for env DEV from com.ctrip.framework.apollo.internals.DefaultMetaServerProvider

如果看到这个日志说明在后台管理修改配置后,能够实时推送到java应用

[Apollo-Config-1] ## INFO  ## c.c.f.a.s.p.AutoUpdateConfigChangeListener:93 ## Auto update apollo changed value successfully, new value: 66666666, key: test, beanName: javaConfigBean, field: com.tongcaipay.manage.config.TestJavaConfigBean.name

第七个坑

有时候在停apollo应用程序时,个人建议不要执行shutdown.sh,直接kill -9,有时候你执行那个脚本后,会出现诡异事件,eureka连接不上的问题。

Apollo 配置教程以及踩坑总结相关推荐

  1. 踩坑日常_MinGW-w64安装教程及踩坑记录

    踩坑日常_MinGW-w64安装教程及踩坑记录 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器.Gcc编译器能将C.C++语言源程序.汇程式化序 ...

  2. k8s containerd集群配置安装完整踩坑教程

    完整踩坑和精简内容 k8s containerd配置 containerd安装参考 k8s安装参考 环境 两台机器 hostnamectl set-hostname master hostnamect ...

  3. MMDetectionV2 + Colab 超详细教程及踩坑实录

    文章目录 前言 一.环境配置 二.准备自己的数据集 Aug.14更新 三:修改config文件 3.1 文件结构 3.2 (本地)修改config文件 3.2.1 (本地)构造自己模型的权重文件 3. ...

  4. 基于卷积神经网络的密集人群估计/人群计数算法【内含教程和踩坑】

    文章目录 前言 一.什么是密集人群估计 二.实验前准备 1.Github开源项目--Awesome Crowd Counting 2.数据集下载 3.环境配置 三.ShanghaiTech数据集实验 ...

  5. Windows10 + Ubuntu18.04双系统教程及踩坑(Nvidia显卡导致的ubuntu安装以及启动过程中花屏问题)

    今天尝试在Windows10上安装Ubuntu18.04的系统,这里记录一下大致的流程,也当是给自己存个档. 首先Ubuntu的下载地址可以从清华镜像站找到 Ubuntu下载地址 1.划分磁盘空间 在 ...

  6. iOS自动化测试(一)-技术方案、环境配置与疯狂踩坑

    移动端的自动化测试,最常见的就是Android自动化测试,IOS相较于Android要安全稳定的多,但是IOS也是一个需要测试的方向,作为测试,不认真测一下心里还是过意不去,只是我个人觉得Androi ...

  7. ubuntu20下Cuckoo SandBox安装教程--大踩坑版(一)

    ubuntu20下Cuckoo SandBox安装 说明 天坑1: 系统架构 天坑2: python2.7 python2.7安装 pip2.7安装 天坑3: Cuckoo依赖安装 说明 本文主要参考 ...

  8. SpringMVC自定义配置消息转换器踩坑总结

    问题描述 最近在开发时候碰到一个问题,springmvc页面向后台传数据的时候,通常我是这样处理的,在前台把数据打成一个json,在后台接口中使用@requestbody定义一个对象来接收,但是这次数 ...

  9. Alphapose - Windows下Alphapose(Pytorch 1.1+)版本2021最新环境配置步骤以及踩坑说明

    文章目录 1 Alphapose 2 环境配置 2.1 官方安装说明 2.2 Anaconda创建虚拟环境Alphapose 2.3 获取Alphapose仓库 2.4 安装相关依赖库 2.4.1 激 ...

最新文章

  1. Django介绍工程搭建
  2. Linux下克隆的修改IP
  3. 430. Flatten a Multilevel Doubly Linked List | 430. 扁平化多级双向链表(DFS)
  4. diff 比较两个文件的差异
  5. linux eclipse 菜单,Ubuntu 16.04中的Eclipse Mars菜单栏选项失效
  6. 1.4.1bat脚本命令COPY 拷贝 复制到
  7. JDBC——Java连接关系型数据库
  8. 单点登录cas常见问题(十四) - ST和TGT的过期策略是什么?
  9. 平面设计中都有哪些风格?常用的风格有哪些?
  10. 安卓第三方接入登陆-新浪登陆
  11. GWT项目创建时遇到的问题
  12. 微信Tinker 热修复介绍及接入(一)
  13. 求和计算机教案,初中信息技术《Excel求和》教案.docx
  14. 360email讲堂:中秋佳节邮件营销大放光彩
  15. 小学五年级年级计算机教学计划,小学五年级信息技术教学计划(精选3篇)
  16. 原创丨嵌入式IMX6ULL学习指引-四大要点-简单也实用
  17. HPP(Hosted Payment Page)支付模式
  18. 织梦网站数据入库接口(实现图片本地化,自动图片打水印)【原创】
  19. 微信登陆无法拉起授权界面
  20. 赠书福利丨我们人类与人工智能技术究竟是怎样的关系?

热门文章

  1. 2023-04-23 学习记录--C/C++-函数
  2. 支付宝接口集成,错误代码 ILLEGAL_PARTNER_EXTERFACE 解决
  3. linux中111rpcbind端口,linux rpcbind 什么用的
  4. mac和iphone的接力失效,导致不能接力使用赋值粘贴功能的解决方案。
  5. 沉睡者IT创业项目 - 学习如何玩直播卖零食
  6. WINDOW 注册表添加启动项
  7. 南通大学教务学生管理系统用户体验
  8. 照片变年轻特效怎么做?看看年轻的自己这样操作
  9. html label水平居中显示,CSS布局之水平居中和垂直居中
  10. PMP具备哪些优势?不知道的人赶紧来看一看