Apollo

news2024/11/15 12:20:09

在这里插入图片描述

一. 部署说明

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"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决端口被占用问题

写文章原因: 本人在安装alist的时候,在使用5244端口的时候,显示端口被占用,于是想查看一下端口是被什么程序占用了,是否可以杀死占用的程序,还是更换端口. failed to start http: listen tcp 0.0.0.0:5244: bind: Only one usage of each socket address (protocol/network a…

专业140+总分420+华中科技大学824信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。

今年考研分数自己感觉还是比较满意,专业824信号与系统考的最好140,总分420,如愿上岸华科,回顾自己的这一年的复习,总结一些自己的经验,希望对报考华科的同学有帮助。 专业课: 824信号与系统在…

如何构建一个高效的微服务治理闭环管理体系

随着企业业务的快速发展和数字化转型的推进,微服务架构因其高度的灵活性、可扩展性和可维护性而逐渐成为主流。然而,微服务架构的复杂性也带来了诸多治理挑战。为了有效应对这些挑战,构建一个微服务治理闭环至关重要。 1、微服务治理概述 微…

SpringCloud-Ribbon:负载均衡(基于客户端)

6. Ribbon:负载均衡(基于客户端) 6.1 负载均衡以及Ribbon Ribbon是什么? Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负…

C++面试宝典第27题:完全平方数之和

题目 给定正整数 n,找到若干个完全平方数(比如:1、4、9、16、...),使得它们的和等于n。你需要让组成和的完全平方数的个数最少。 示例1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4。 示例2: 输入:n = 13 输出:2 解释:13 = 4 + 9。 解析 这道题主要考察应聘者对于…

Android中的MVVM

演变 开发常用的框架包括MVC、MVP和本文的MVVM,三种框架都是为了分离ui界面和处理逻辑而出现的框架模式。mvp、mvvm都由mvc演化而来,他们不属于某种语言的框架,当存在ui页面和逻辑代码时,我们就可以使用这三种模式。 model和vie…

Mybatis- plus 基本使用

目录 一. 引入依赖 二.定义Mapper 三.常见注解 3.1TableName 3.2.TableId 3.3TableField 3.4常见配置 一. 引入依赖 由于这个starter包含对mybatis的自动装配&#xff0c;因此完全可以替换掉Mybatis的starter。 <dependency><groupId>com.baomidou</gr…

阿里云企业用户2核4G5M固定带宽199元一年,续费不涨价

2024年2月阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核…

[职场] 服务行业个人简历 #笔记#笔记

服务行业个人简历 服务员个人简历范文1 姓名: XXX国籍:中国 目前所在地:天河区民族:汉族 户口所在地:阳江身材: 160cm43kg 婚姻状况:未婚年龄: 21岁 培训认证:诚信徽章: 求职意向及工作经历 人才类型:普通求职 应聘职位: 工作年限:职称:初级 求职类型:全职可到职日期:随时 月薪…

进程间通信(5):信号灯集

信号灯也叫信号量&#xff0c;是不同进程间或一个给定进程内部不同线程间同步的机制。 信号灯集为信号量的集合&#xff0c;实现同步、互斥机制&#xff0c;配合共享内存使用&#xff0c;解决资源竞争问题。 函数&#xff1a;semget、semctl、semop 实现流程&#xff1a; 1…

滑动窗口(二)

文章目录 Leetcode1658. 将 x 减到 0 的最小操作数题目解法&#xff08;滑动窗口&#xff09; Leetcode904. 水果成篮题目解法&#xff08;滑动窗口&#xff09; Leetcode438. 找到字符串中所有字母异位词题目解法&#xff08;滑动窗口&#xff09; Leetcode1658. 将 x 减到 0 …

如何从iPhone15上恢复意外删除的数据文件(备忘录、通讯录、照片等)

您是否正在寻找恢复 Apple 设备上丢失数据的方法&#xff1f;这是最好用的 iPhone 15数据恢复软件的汇总。 iPhone 数据恢复软件允许从Apple 设备中检索丢失或删除的数据。随着越来越依赖智能手机来存储个人和专业信息&#xff0c;数据丢失可能是一种令人沮丧和压力很大的体验…

licheepi nano 从零开始使用sd卡启动

本文目的&#xff1a;licheepi nano从零开始&#xff0c;使用sd卡启动&#xff1b; 某些原因导致需要重新捣鼓uboot&#xff0c;但过程中频繁出错&#xff0c;后悔最初没有记录详细的操作方法&#xff0c;此帖主要为自己出口气&#xff0c;重新记录&#xff1b; 持续完善&#…

CentOS 安装 redis 7.2

nginx官网 https://redis.io/download/ 把鼠标放到这里&#xff0c;复制下载地址 在服务器找个文件夹执行命令 wget https://github.com/redis/redis/archive/7.2.4.tar.gz tar -zxvf 7.2.4.tar.gz make make install 看到这几行就说明安装成功了 不放心的话再查看下b…

Java基础常见面试题总结-并发(一)

线程池 线程池&#xff1a;一个管理线程的池子。 为什么平时都是使用线程池创建线程&#xff0c;直接new一个线程不好吗&#xff1f; 嗯&#xff0c;手动创建线程有两个缺点 不受控风险频繁创建开销大 为什么不受控&#xff1f; 系统资源有限&#xff0c;每个人针对不同业…

【C++】引用与内联

个人主页 &#xff1a; zxctsclrjjjcph 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 引用2.1 引用概念2.2 引用使用场景2.3 引用特性2.4 引用和指针的区别2.5 传值、传引用效率比较2.5.1 值和引用的作为返回值类型的性能比较 3. 内联函数3.1 …

React + SpringBoot + Minio实现文件的预览

思路&#xff1a;后端提供接口&#xff0c;从minio获取文件的预览链接&#xff0c;返回给前端&#xff0c;前端使用组件进行渲染展示 这里我从minio获取文件预览地址用到了一个最近刚开源的项目&#xff0c;挺好用的&#xff0c;大伙可以试试&#xff0c;用法也很简单 官网&am…

【Unity】QFramework通用背包系统优化:TipPanel优化

前言 在学习凉鞋老师的课程《QFramework系统设计&#xff1a;通用背包系统》第五章时&#xff0c;笔者对物品提示TipPanel界面进行了一些优化。 优化内容包括&#xff1a; 解决闪烁问题跟随鼠标移动自适应界面大小生成位置优化 效果还是蛮丝滑的&#xff1a; 解决闪烁问题 …

Unknown system variable ‘tx_read_only

使用datagrip可以创建成功 但是使用pycharm就会报一个错误“Unknown system variable tx_read_only”

springboot164党员教育和管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…