基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

前言


前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候,每一步都踩着坑过来的。因此写文档与需要的朋友分享。


此篇文章不代表官方部署流程,只是自己的部署的实践方式,屏蔽了一些官方的多余的部署讲解。如果有问题还请到Apollo的wiki文档进行查看:


https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97


另外,真想吐槽下Apollo配置中心部署恶心度真的是……,吐槽归吐槽,但是Apollo配置中心的功能强大而且具有非常高的可用性,在同类型产品里也算是数一数二。


在进行分布式部署前我还是建议用Apollo的quick start版本进行试用。可以参考我这篇文章《基于winserver部署Apollo初次体验(附.net客户端demo)》


环境准备



服务简介


  1. apollo-configservice
  • 作为客户端的获取配置的接口服务,与客户端进行Http long polling实现配置更新的退送与拉取


  1. apollo-adminservice
  • 作为管理后台的接口服务,提供配置管理、修改、发布


  1. apollo-portal
  • Web管理配置后台


以下正式开始部署


SQL脚本导入


源码\scripts\sql下两脚本,到mysql执行


apolloconfigdb.sql


apolloportaldb.sql


编译


切换到上面已下载阿波罗源码\scripts目录下,运行build.bat。需要等待几分钟,编译完成后,准备三个服务部署,部署顺序也如下


  1. apollo-configservice
  2. apollo-adminservice
  3. apollo-porta


apollo-configservice部署


  1. 源码

\apollo-configservice\target\apollo-configservice-0.11.0-SNAPSHOT-github.zip


  1. 解压到需要部署的服务器文件夹


  1. 添加文件application-github.properties,内容如下:


1

2

3

4

5

spring.datasource.url=jdbc:mysql://10.1.20.143:3306/ApolloConfigDB?characterEncoding=utf8

 

spring.datasource.username=root

 

spring.datasource.password=12345678

   

4.编辑\scripts\startup.sh,修改日志目录


LOG_DIR=D:/apollo/apollo-configservice-0.11.0-SNAPSHOT-github/log


5.双击startup.sh启动服务。


6.启动完后查看日志,如果出现下面信息,请耐心等待几分钟,输入localhost:8080尝试

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused


apollo-adminservice部署


  1. 源码\apollo-adminservice\target\apollo-adminservice-0.11.0-SNAPSHOT-github.zip


  1. 同上步骤2、3、4、5(注意数据库信息、日志目录对应修改)


  1. localhost:8090尝试

 

apollo-portal部署


  1. 源码\apollo-portal\target\apollo-portal-0.11.0-SNAPSHOT-github.zip


  1. 解压到需要部署的服务器文件夹


  1. 添加文件application-github.properties,内容如下(注意数据库连接与前两者不一样)


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


4.编辑\scripts\startup.sh,修改日志目录与端口号


LOG_DIR=D:/apollo/apollo-portal-0.11.0-SNAPSHOT-github/log


SERVER_PORT=8070


5.双击startup.sh启动服务


6.输入localhost:8070尝试,如日志没其他异常,等待几分钟再次尝试访问

 

添加客户端环境配置


在C:\opt\settings 添加文件server.properties内容:

env=DEV

 

集群部署


以上为单机部署的流程,下面讲解集群部署的流程:


架构简述


image.png


Eureka与apollo-configservice为同一个JVM进程,为了好描述拆开了。


在apollo-configservice与apollo-adminservice启动时会向Eureka进行服务注册,Apollo客户端和apollo-Portal会从Eureka进行服务查找,然后通过服务地址直接访问


每个服务都是无状态的,因此横向扩展相对比较简单


修改eureka.service.url


update apolloconfigdb.serverconfig set value = 'http://10.1.20.137:8080/eureka/' where id = 1


部署apollo-configservice和apollo-adminservice


到B服务器重复上述两个服务的部署步骤(注意基本环境的安装)


完成并查看


输入http://10.1.20.137:8080进行查看,eureka管理界面status出现多台主机名称为部署成功。

image.png


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
存储
cephFS高可用分布式文件系统部署指南
关于如何部署高可用的cephFS分布式文件系统,包括集群的搭建、验证高可用性以及实现两主一从架构的详细指南。
31 9
|
19天前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
37 1
|
26天前
|
机器学习/深度学习 人工智能 负载均衡
【AI大模型】分布式训练:深入探索与实践优化
在人工智能的浩瀚宇宙中,AI大模型以其惊人的性能和广泛的应用前景,正引领着技术创新的浪潮。然而,随着模型参数的指数级增长,传统的单机训练方式已难以满足需求。分布式训练作为应对这一挑战的关键技术,正逐渐成为AI研发中的标配。
118 5
|
28天前
|
存储 Kubernetes 监控
深入浅出分布式事务:理论与实践
在数字化时代的浪潮中,分布式系统如同星辰大海般浩瀚而深邃。本文将带你航行于这片星辰大海,探索分布式事务的奥秘。我们将从事务的基本概念出发,逐步深入到分布式事务的核心机制,最后通过一个实战案例,让你亲自体验分布式事务的魅力。让我们一起揭开分布式事务的神秘面纱,领略其背后的科学与艺术。
60 1
|
9天前
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
23 0
|
11天前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
19 0
|
1月前
|
Go API 数据库
[go 面试] 分布式事务框架选择与实践
[go 面试] 分布式事务框架选择与实践
|
16天前
|
消息中间件 存储 Kafka
微服务实践之分布式定时任务
微服务实践之分布式定时任务
|
1月前
|
存储 负载均衡 中间件
构建可扩展的分布式数据库:技术策略与实践
【8月更文挑战第3天】构建可扩展的分布式数据库是一个复杂而具有挑战性的任务。通过采用数据分片、复制与一致性模型、分布式事务管理和负载均衡与自动扩展等关键技术策略,并合理设计节点、架构模式和网络拓扑等关键组件,可以构建出高可用性、高性能和可扩展的分布式数据库系统。然而,在实际应用中还需要注意解决数据一致性、故障恢复与容错性以及分布式事务的复杂性等挑战。随着技术的不断发展和创新,相信分布式数据库系统将在未来发挥更加重要的作用。
|
1月前
|
Java 测试技术 Spring
分布式之配置中心
分布式之配置中心
34 1