首页 > 其他分享 >分布式部署指南

分布式部署指南

时间:2023-09-03 15:38:00浏览次数:35  
标签:指南 Apollo 部署 IP configservice 环境 apollo 分布式

本文档介绍了如何按照分布式部署的方式编译、打包、部署Apollo配置中心,从而可以在开发、测试、生产等环境分别部署运行。

如果只是需要在本地快速部署试用Apollo的话,可以参考Quick Start

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。

1.3、环境

分布式部署需要事先确定部署的环境以及部署方式。

Apollo目前支持以下环境:

  • DEV
  • 开发环境
  • FAT
  • 测试环境,相当于alpha环境(功能测试)
  • UAT
  • 集成环境,相当于beta环境(回归测试)
  • PRO
  • 生产环境

如果希望添加自定义的环境名称,具体步骤可以参考部署&开发遇到的常见问题#42-添加自定义的环境

以ctrip为例,我们的部署策略如下: 

  • Portal部署在生产环境的机房,通过它来直接管理FAT、UAT、PRO等环境的配置
  • Meta Server、Config Service和Admin Service在每个环境都单独部署,使用独立的数据库
  • Meta Server、Config Service和Admin Service在生产环境部署在两个机房,实现双活
  • Meta Server和Config Service部署在同一个JVM进程内,Admin Service部署在同一台服务器的另一个JVM进程内

另外也可以参考下@lyliyongblue 贡献的样例部署图(建议右键新窗口打开看大图): 

分布式部署指南_客户端

1.4、网络策略

分布式部署的时候,apollo-configservice和apollo-adminservice需要把自己的IP和端口注册到Meta Server(apollo-configservice本身)。

Apollo客户端和Portal会从Meta Server获取服务的地址(IP+端口),然后通过服务地址直接访问。

需要注意的是,apollo-configservice和apollo-adminservice是基于内网可信网络设计的,所以出于安全考虑,请不要将apollo-configservice和apollo-adminservice直接暴露在公网。

所以如果实际部署的机器有多块网卡(如docker),或者存在某些网卡的IP是Apollo客户端和Portal无法访问的(如网络安全限制),那么我们就需要在apollo-configservice和apollo-adminservice中做相关限制以避免Eureka将这些网卡的IP注册到Meta Server。

具体文档可以参考Ignore Network Interfaces章节。具体而言,就是分别编辑apollo-configservice/src/main/resources/application.ymlapollo-adminservice/src/main/resources/application.yml,然后把需要忽略的网卡加进去。

如下面这个例子就是对于apollo-configservice,把docker0和veth.*的网卡在注册到Eureka时忽略掉。

spring: application: name: apollo-configservice profiles: active: ${apollo_profile} cloud: inetutils: ignoredInterfaces: - docker0 - veth.*

注意,对于application.yml修改时要小心,千万不要把其它信息改错了,如spring.application.name等。

另外一种方式是直接指定要注册的IP,可以修改startup.sh,通过JVM System Property在运行时传入,如-Deureka.instance.ip-address=${指定的IP},或者也可以修改apollo-adminservice或apollo-configservice 的bootstrap.yml文件,加入以下配置

eureka: instance: ip-address: ${指定的IP}

最后一种方式是直接指定要注册的IP+PORT,可以修改startup.sh,通过JVM System Property在运行时传入,如-Deureka.instance.homePageUrl=http://${指定的IP}:${指定的Port},或者也可以修改apollo-adminservice或apollo-configservice 的bootstrap.yml文件,加入以下配置

eureka: instance: homePageUrl: http://${指定的IP}:${指定的Port} preferIpAddress: false

做完上述修改并重启后,可以查看Eureka页面(http://${config-service-url:port})检查注册上来的IP信息是否正确。

如果Apollo部署在公有云上,本地开发环境无法连接,但又需要做开发测试的话,客户端可以升级到0.11.0版本及以上,然后通过-Dapollo.configService=http://config-service的公网IP:端口来跳过meta service的服务发现

标签:指南,Apollo,部署,IP,configservice,环境,apollo,分布式
From: https://blog.51cto.com/u_16111399/7340323

相关文章

  • Apollo开发指南
    一、准备工作二、本地启动2.1ApolloConfigService和ApolloAdminService2.2Apollo-Portal2.3Java样例客户端启动2.4.Net样例客户端启动三、开发3.1Portal实现用户登录功能3.2Portal接入邮件服务本文档介绍了如何在本地使用IDE编译、运行Apollo,从而可以帮助大家了解Apollo......
  • Java客户端使用指南
    一、准备工作二、MavenDependency三、客户端用法3.1API使用方式3.1.1获取默认namespace的配置3.1.2监听配置变化事件3.1.3获取公共Namespace的配置3.1.4获取非properties格式namespace的配置3.2Spring整合方式3.2.1配置3.2.1.1基于XML的配置3.2.1.2基于Java的配置(推荐)3.2......
  • 在Kubernetes(K8S)上安装和部署MySQL
    摘要:本文将介绍如何在Kubernetes(K8S)上安装和部署MySQL。我们将通过以下步骤实现这一目标:准备工作、安装MySQL、配置MySQL以及在K8S上部署MySQL。通过本文,您将了解如何使用K8S来管理MySQL的容器化部署,提高应用程序的性能、可靠性和安全性。一、引言MySQL是一种流行的关系型数据库,广......
  • 力扣刷题指南
    众所周知,力扣涵盖了大部分算法面试题,国内外知名科技公司都会在上面挑选题目用于面试环节,所以要想找到一份好工作,刷力扣题一定是程序员小伙伴的不二之选。但对于刚启蒙的程序员小白来说,上力扣网站刷题的方法眼花缭乱,哪一种才是最有效的?这里力扣君还得再强调一下,网站刷题方法虽多,......
  • Apollo分布式配置中心
    ......
  • Linux--安装部署Docker
    Docker介绍Docker理解Docker是基于Go语言实现的开源容器项目,专业的叫法是应用容器一次封装、到处运行对应用封装、分发、部署、运行的生命周期进行管理应用组件:Web应用、数据库平台、操作系统、集群为应用的开发、运行和部署提供一站式的使用解决方案Docker优势Docker容器好比一......
  • LAMP部署指南
    LAMP部署指南介绍LAMP是一种常用的Web应用程序堆栈,由Linux操作系统、ApacheWeb服务器、MySQL数据库和PHP编程语言组成。本文档将指导您完成LAMP环境的部署和配置。系统要求一台运行Linux操作系统的服务器(推荐使用Ubuntu或CentOS)最新版本的ApacheWeb服务器最新版本的MySQL数据库P......
  • flowable对已经部署的流程定义进行更新(实操)
    首先通过createProcessDefinitionQuery()方法获取特定流程定义(根据流程定义键和最新版本)。然后,使用deleteDeployment()方法删除旧的部署及其相关数据。接下来,我们创建新的部署对象,并使用addClasspathResource()方法添加新的流程资源文件。最后,通过deploy()方法执行部署操作。在重......
  • 分布式服务的接口幂等性如何设计 笔记
    幂等:多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。需要幂等场景:用户重复点击(网络波动)MQ消息重复应用使用失败或超时重试机制1.数据库唯一索引(新增)不建议使用2.token+redis(新增、修改)3.分布式锁(新增、修改)快速失败(抢不到锁的线程)控制......
  • SequoiaDB分布式数据库2023.8月刊
    本月看点速览再获认可!巨杉数据库荣登多份Gartner研究报告未来可期!广州市南沙区发改局局长杨帆一行莅临巨杉数据库聚焦金融,巨杉数据库入选“2023IDC中国FinTech50”专注创新,荣获2023胡润中国元宇宙潜力企业未来之星再获认可!巨杉数据库荣登多份Gartner研究报告近......