Apollo

在这里插入图片描述

一. 部署说明

apollo配置中心由三个组件组成:

  • ConfigService

配置中心,客户端从这个服务拉配置,同时内置了Eureka、MetaService。每个环境要有一个

  • AdminService

配置管理服务,管理数据库配置,Portal调这个服务修改、发布配置,每个环境要有一个

  • PortalService

管理后台服务,就是那个用账号密码登录的后台,此服务只需部署一个

多环境指的是由DEV、LOCAL、FAT这些环境组成,每套环境必需包含两个服务:ConfigService和 AdminService。

Portal只需部署一个服务,三套环境组件接入到Portal进行配置管理。Portal通过调用AdminService来修改、发布配置。

二. 架构

img

三. 环境准备

  • mysql数据库:一台或多台,dev、fat、local、portal 一共有4个数据库
  • linux服务器:一台或多台,一台服务器通过区分不同端口部署多个服务

四. 部署

1. 创建数据库

  • 数据库

创建数据库用户数据库用户,以及配置数据库权限。

环境数据库说明
DEVApolloConfigDB_DEV开发环境配置数据库
FATApolloConfigDB_FAT测试环境配置数据库
LOCALApolloConfigDB_LOCAL本地开发环境配置数据库
AplloPortalDB管理后台数据库(用户、权限管理)
  • 初始化

下载初始化sql,创建表和基础数据,注意:如果是在旧的数据库升级,不要执行此脚本,此脚本会清空数据。

数据库初始化

https://github.com/apolloconfig/apollo/blob/v2.0.1/scripts/sql/apolloportaldb.sql

https://github.com/apolloconfig/apollo/blob/v2.0.1/scripts/sql/apolloconfigdb.sql

2. 端口/AppId规划

端口服务环境AppID
8080ConfigServiceDEV100003171
8090AdminServiceDEV100003172
8081ConfigServiceFAT100003173
8091AdminServiceFAT100003174
8082ConfigServiceLOCAL100003175
8092AdminServiceLOCAL100003176
8070Portal-100003170

3. 安装包下载

  • 到github下载apollo部署程序,这里用的是2.0.1版本。

https://github.com/apolloconfig/apollo/releases/tag/v2.0.1

img

4. 配置修改

  • ConfigService 配置

解压 AdminService,在config目录找到 application-github.properties 配置文件,修改数据库连接配置。

# dev、fat、local连的数据库不一样,每个环境都有独立一个数据库
spring.datasource.url = jdbc:mysql://fill-in-the-correct-server:3306/ApolloConfigDB_DEV?characterEncoding=utf8
spring.datasource.username = FillInCorrectUser
spring.datasource.password = FillInCorrectPassword

同样在config目录修改app.properties中的AppId,不同的服务,AppId不能一样。

appId=100003171
jdkVersion=1.8
  • 在scripts目录,找到 startup.sh脚本,在JAVA_OPTS变量中添加eureka的配置,注意区分环境。
export JAVA_OPTS="$JAVA_OPTS -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Deureka.instance.homePageUrl=http://192.168.204.44:9080/env-dev  -Dserver.servlet.context-path=/env-dev  -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom"
  • AdminService配置

数据库配置:config/application-github.properties

# dev、fat、local连的数据库不一样,每个环境都有独立一个数据库
spring.datasource.url = jdbc:mysql://fill-in-the-correct-server:3306/ApolloConfigDB_DEV?characterEncoding=utf8
spring.datasource.username = FillInCorrectUser
spring.datasource.password = FillInCorrectPassword

appId配置:config/app.properteis

appId=100003172
jdkVersion=1.8
  • Portal配置

数据库配置:application-github.properties

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

appId配置

appId=100003170
jdkVersion=1.8

元数据配置:config/apollo-env.properties

local.meta=http://apollo.threegene.cn/env-local
dev.meta=http://apollo.threegene.cn/env-dev
fat.meta=http://apollo.threegene.cn/env-fat
  • 数据库配置修改
    • eureka地址修改
    • 在ApolloConfigDB_DEV 数据库 ServiceConfig表找到 eureka.service.url所在行,将值修改为:
http://apollo.threegene.cn/env-dev/eureka

img

  • 可用环境配置

在ApolloPortalDB数据库找到 ServiceConfig表,修改可用环境变量:

img

5. 部署服务

如果是同一台服务器部署所有服务,在服务器上分别创建 dev、local、fat目录,用于存放三套环境的部署程序。不同环境的部署过程一样,以下以dev环境为例。

启动

将修改好配置的ConfigService、AdminService放到dev目录,分别启动ConfigService和AdminService

# 启动
sh script/startup.sh
# 关闭
sh script/shutdown.sh

验证

打开eureka界面,查看启动的configService和adminService有没有注册上来,能查到,说明启动正常

地址:http://apollo.threegene.cn/env-dev/

img

fat和local环境参照dev的部署过程

Portal部署

apollo portal是管理后台,不用多环境部署,只需要部署一个服务即可。

将修改好的配置的程序传到服务器,启动服务

# 启动
sh script/startup.sh
# 关闭
sh script/shutdown.sh

服务默认端口是8070,启动后,通过ip+8070可以访问到portal后台,apollo默认账号密码是 apollo/admin

登入后台后,检查服务状态是否正常,以下所示:

img

五. 生产环境部署

1. 部署架构

  • 服务器

为了保证配置中心的高可用,生产环境至少要有两台 linux 服务器,架构规划如下:

apollo服务服务器端口
ConfigServicelinux-18080
AdminServicelinux-18090
Apollo-Portallinux-18070
ConfigServicelinux-28080
AdminServicelinux-28090
  • 数据库

数据库使用mysql云服务,最好是高可用数据库。

数据库说明
ApolloConfigDB配置数据库
ApolloPortalDB管理中心数据库

2. 部署步骤

生产部署可参照开发测试的部署,过程差不多

  • 创建和初始化数据库

ApolloPortalDB初始化 https://github.com/apolloconfig/apollo/blob/v2.0.1/scripts/sql/apolloportaldb.sql

ApolloConfigDB初始化 https://github.com/apolloconfig/apollo/blob/v2.0.1/scripts/sql/apolloconfigdb.sql

注意:初始化sql会重新建表,将会清空整个数据库。

初始化数据库后,要修改 ApolloConfigDB.ServerConfig 表里的eureka配置

以及 ApolloPortalDB.Service里面的环境配置信息

  • 在Linux-1部署 ConfigService、AdminService、Apollo-Portal

  • 在Linux-2部署 ConfigService、AdminService

  • 配置域名

  • 配置apollo域名,解析到配置中心,参照C端的域名配置。

六. 常见问题

  • eureka后台服务没有注册上来

这种情况一般是由于ServiceConfig表和ConfigService服务启动参数中配置的eureka参数不一样导致的,检查数据库和程序的启动参数是否配置正确。

  • 服务日志在哪里看

默认情况下,apollo的日志放在 /opt/logs目录,每个appId对应有一个日志文件

  • 服务拉不到配置

检查 dev/fat/local三套环境的configService启动参数配置的启动参数路径与网关的路径是否一致。

JAVA_OPTS="$JAVA_OPTS -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Deureka.instance.homePageUrl=http://192.168.204.44:9080/env-dev  -Dserver.servlet.context-path=/env-dev  -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/369990.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

缓存的概念

文章目录 一、系统缓存buffer与cachecache 的保存位置cache 的特性 二、用户层缓存DNS缓存 三、浏览器缓存过期机制最后修改时间Etag标记过期时间 expires混合使用和缓存刷新缓存刷新 cookie和session 四、CDN缓存什么是CDN用户请求CDN流程利用 302 实现转发请求重定向至最优服…

引流技术-通过文件中增加联系方式并传播

文章目录 前言文档增加联系方式扩散网盘扩散自建网站借力 注意 前言 很多人在找资料的时候可能都遇到过下图情况: 1、文档最后面留一个自己的联系方式; 2、找的一堆文件中都有相同的情况; 3、一段时间全网搜到的很多相同文件也有这个联系方式…

Zookeeper分布式队列实战

目录 Zookeeper分布式队列 普通方式实现 设计思路 具体实现 使用Curator实现 具体实现 注意事项 Zookeeper分布式队列 常见的消息队列有:RabbitMQ,RocketMQ,Kafka等。Zookeeper作为一个分布式的小文件管理系统,同样能实现简单的队列功…

【LeetCode: 2670. 找出不同元素数目差数组 + 哈希表 + 前后缀处理】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

使用PHPStudy搭建Cloudreve网盘服务

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…

问题:下列哪些属于历史文化资源的特征( ). #学习方法#学习方法

问题:下列哪些属于历史文化资源的特征( ). A、稀缺性 B、脆弱性 C、可再生性 D、多样性 参考答案如图所示

Apple Vision Pro:新的隐私噩梦?

长期以来,苹果被誉为最注重隐私的科技公司之一,但如今,凭借售价 3499 美元的 Vision Pro,苹果可能已经打造出了一款终极监控机器。 作为苹果首款头戴式“空间计算”显示设备,号称将打造数字世界与物理世界交汇的新空间…

STL篇三:list

文章目录 前言1.list的介绍和使用1.1 list的介绍1.2 list的使用1.3 list的迭代器的失效 2.list的模拟实现2.1 结点的封装2.2 迭代器的封装2.2.1 正向迭代器2.2.2 反向迭代器 2.3 list功能的实现2.3.1 迭代器的实例化及begin()、end() 2.3.2 构造函数2.3.3 赋值运算符重载2.3.4 …

Axure RP9原型设计工具使用记录:基础操作

Axure RP9使用记录一 📚第一章 前言📗背景📗目的 📚第二章 基础介绍及操作📗页面功能总览📗基础操作📕设置样式📕设置交互📕设置组合📕设置动态面板&#x1f…

PyTorch使用

前言 系统环境:win10 使用Anaconda,Anaconda的安装自行百度。 目录 前言 创建虚拟环境 1、查看当前有哪些虚拟环境 2、创建虚拟环境pytorch 3、激活及关闭pytorch虚拟环境 4、删除pytorch虚拟环境 使用yolov5测试 1、切换至yolov5目录下&…

淘宝镜像到期如何切换镜像及如何安装淘宝镜像

淘宝镜像到期如何切换镜像及如何安装淘宝镜像 一、淘宝镜像到期如何切换新镜像二、第一次使用淘宝镜像如何配置镜像 一、淘宝镜像到期如何切换新镜像 清空缓存:npm cache clean --force切换镜像源:npm config set registry https://registry.npmmirror.…

nodejs+vue+ElementU教师科研管理系统l33wm

本次开发一套高校教师科研管理系统有管理员,教师,学院三个角色。管理员功能有个人中心,教师管理,学院管理,科研课题管理,软件著作权管理,论文信息管理,专利信息管理,科研…

AI大模型专题:OWASP大语言模型应用程序十大风险V1.0

今天分享的是AI大模型系列深度研究报告:《AI大模型专题:OWASP大语言模型应用程序十大风险V1.0》。 (报告出品方:OWASP) 报告共计:14页 LM01:2023_ 提示词注入 描述:提示词注入包括绕过过滤器…

稀疏场景高性能训练方案演变|京东广告算法架构体系最佳实践

近年来,推荐场域为提升模型的表达能力和计算能力,模型规模和计算复杂度大幅增加,同时,高规格硬件资源为模型迭代、算法优化带来了更大的机遇和挑战。为了应对模型规模和算力升级带来的存储、IO和计算挑战,京东零售广告…

docker 安装minio

MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。 MinIO与传统的存储和其他的对象存储不同的是:它一开始就针对性能要求更高的私有云标准进行软件架构设计。因为MinIO一开始就只…

Arthas-Java应用生产可用诊断神器

一、背景与简介 1、介绍 如果你的程序是Java开发,有时候生产环境出现性能瓶颈或者接口访问缓慢、又或者本地环境无法进行复现,只会在线上产生bug或者问题,这时候我们需要进行在线debug排查问题。但是生产环境又不能轻易重启、或者使用传统方…

django区县网络安全执法模式研究flask python

作为一款区县网络安全执法模式研究,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多功能…

软件成本度量

1. 软件成本度量的意义 软评的意义主要在于其在软件项目的预算、招投标、实施及决算后评估阶段的重要作用。 在预算及招投标阶段,软评通过软件成本度量有助于制定合理的项目预算,规范招投标行为。这一阶段,甲方需要准确估算项目成本和合理的投…

加速数字化之旅:MessageBox赋能HubSpot与微信公众号的无缝整合

在数字化时代,企业需要整合关键平台以适应快速变化的市场。HubSpot和微信公众号的整合成为数字化营销的核心策略之一。MessageBox作为整合的关键力量,通过其卓越的能力,极大地加速了HubSpot与微信公众号的融合过程。今天运营坛将深入探讨Mess…

【OpenCV人脸检测】写了个智能锁屏小工具!人离开电脑自动锁屏

文章目录 1. 写在前面2. 设计思路3. 人脸检测4. 程序实现 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋…