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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 基于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
目录
相关文章
|
13天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
20天前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
51 4
|
23天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
49 8
|
27天前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
28 6
|
3月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
54 1
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
54 0
|
3月前
|
存储
cephFS高可用分布式文件系统部署指南
关于如何部署高可用的cephFS分布式文件系统,包括集群的搭建、验证高可用性以及实现两主一从架构的详细指南。
120 9
|
4月前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
122 1
|
3月前
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
75 0