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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 基于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


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
8月前
|
人工智能 安全 Java
分布式 Multi Agent 安全高可用探索与实践
在人工智能加速发展的今天,AI Agent 正在成为推动“人工智能+”战略落地的核心引擎。无论是技术趋势还是政策导向,都预示着一场深刻的变革正在发生。如果你也在探索 Agent 的应用场景,欢迎关注 AgentScope 项目,或尝试使用阿里云 MSE + Higress + Nacos 构建属于你的 AI 原生应用。一起,走进智能体的新世界。
1637 94
|
8月前
|
关系型数据库 Apache 微服务
《聊聊分布式》分布式系统基石:深入理解CAP理论及其工程实践
CAP理论指出分布式系统中一致性、可用性、分区容错性三者不可兼得,必须根据业务需求进行权衡。实际应用中,不同场景选择不同策略:金融系统重一致(CP),社交应用重可用(AP),内网系统可选CA。现代架构更趋向动态调整与混合策略,灵活应对复杂需求。
|
10月前
|
数据采集 消息中间件 监控
单机与分布式:社交媒体热点采集的实践经验
在舆情监控与数据分析中,单机脚本适合小规模采集如微博热榜,而小红书等大规模、高时效性需求则需分布式架构。通过Redis队列、代理IP与多节点协作,可提升采集效率与稳定性,适应数据规模与变化速度。架构选择应根据实际需求,兼顾扩展性与维护成本。
380 2
|
9月前
|
机器学习/深度学习 监控 算法
分布式光伏储能系统的优化配置方法(Matlab代码实现)
分布式光伏储能系统的优化配置方法(Matlab代码实现)
499 1
|
人工智能 安全 应用服务中间件
阿里巴巴 MCP 分布式落地实践:快速转换 HSF 到 MCP server
本文分享了阿里巴巴内部将大规模HSF服务快速转换为MCP Server的实践经验,通过Higress网关实现MCP协议卸载,无需修改代码即可接入MCP生态。文章分析了MCP生态面临的挑战,如协议快速迭代和SDK不稳定性,并详细介绍了操作步骤及组件功能。强调MCP虽非终极解决方案,但作为AI业务工程化的起点具有重要意义。最后总结指出,MCP只是AI原生应用发展的第一步,未来还有更多可能性值得探索。
1677 49
|
8月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
718 12
|
9月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
3997 57
|
安全 JavaScript 前端开发
HarmonyOS NEXT~HarmonyOS 语言仓颉:下一代分布式开发语言的技术解析与应用实践
HarmonyOS语言仓颉是华为专为HarmonyOS生态系统设计的新型编程语言,旨在解决分布式环境下的开发挑战。它以“编码创造”为理念,具备分布式原生、高性能与高效率、安全可靠三大核心特性。仓颉语言通过内置分布式能力简化跨设备开发,提供统一的编程模型和开发体验。文章从语言基础、关键特性、开发实践及未来展望四个方面剖析其技术优势,助力开发者掌握这一新兴工具,构建全场景分布式应用。
1121 35
|
10月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
717 2

热门文章

最新文章