基于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,实现配置更新的退送与拉取
  2. apollo-adminservice
    • 作为管理后台的接口服务,提供配置管理、修改、发布
  3. 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
  2. 解压到需要部署的服务器文件夹
  3. 添加文件application-github.properties,内容如下:
    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
  2. 同上步骤2、3、4、5(注意数据库信息、日志目录对应修改)
  3. localhost:8090尝试

apollo-portal部署

  1. 源码\apollo-portal\target\apollo-portal-0.11.0-SNAPSHOT-github.zip
  2. 解压到需要部署的服务器文件夹
  3. 添加文件application-github.properties,内容如下(注意数据库连接与前两者不一样)
    spring.datasource.url=jdbc:mysql://10.1.20.143:3306/ApolloPortalDB?characterEncoding=utf8
    
    spring.datasource.username=root
    
    spring.datasource.password=12345678
  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

集群部署

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

架构简述

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出现多台主机名称为部署成功。

结束

以上为我与大家分享的部署流程,如有问题可以及时在下方评论与我,我会尽快回复

作  者: 陈珙
出  处:http://www.cnblogs.com/skychen1218/ 
关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教! 
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。 
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

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

  1. docker apollo配置中心分布式部署

    Apollo 简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服 ...

  2. 携程 Apollo 配置中心传统 .NET 项目集成实践

    官方文档存在的问题 可能由于 Apollo 配置中心的客户端源码一直处于更新中,导致其相关文档有些跟不上节奏,部分文档写的不规范,很容易给做对接的新手朋友造成误导. 比如,我在参考如下两个文档使用传统 ...

  3. 基于docker 搭建Elasticsearch5.6.4 分布式集群

    说明: 准备2台机器,我这里有192. 和 192.168.0.164 192.168.0.164 作为master 192.168.0.107 作为普通node 一.环境 .docker 环境 .E ...

  4. 基于MongoDB2.6版本配置MongoDB主从复制集群架构

    1:集群环境说明:mongodb1:192.168.43.10.mongodb2:192.168.43.11.mongodb3:192.168.43.12.且基于主机名相互通信/etc/hosts文件 ...

  5. redis配置cluster分布式集群

    #下载最新的redis5. wget http://download.redis.io/releases/redis-5.0.3.tar.gz .tar.gz cd redis- make make ...

  6. Prometheus 通过 consul 分布式集群实现自动服务发现

    转载自:https://cloud.tencent.com/developer/article/1611091 1.Consul 介绍 Consul 是基于 GO 语言开发的开源工具,主要面向分布式, ...

  7. 170825、SolrCloud 分布式集群部署步骤

    安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux 环境的 64位 软件,以上软件请到各自的 ...

  8. solr 集群(SolrCloud 分布式集群部署步骤)

    SolrCloud 分布式集群部署步骤 安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux ...

  9. SolrCloud 分布式集群部署步骤

    https://segmentfault.com/a/1190000000595712 SolrCloud 分布式集群部署步骤 solr solrcloud zookeeper apache-tomc ...

随机推荐

  1. 版本管理工具Git(三)Gitlab高可用

    高可用模式 企业版 社区版 我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALL IN ONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的 ...

  2. Spring Boot分布式系统实践【2】-框架搭建

    前言 技术选型已经做完,那就来搭建框架了. 首先基于mvc思想,设计这套框架也是基于此,也会设计Dao层.Service层.Controller层.视图层等,同时也要考虑到dubbo的调用原理.   ...

  3. JDBC驱动程序注册 JDBC简介(二)

    使用JDBC进行数据库操作的第一步就是驱动注册(当然你得先导入JAR). 驱动注册有多种方式,第一步必然是获得正确的驱动名称与URL格式 驱动名称与URL格式 RDBMS 驱动程序名称        ...

  4. 【Vue.js】加载更多—vue-infinite-scroll

    引言 今天用到了一个加载更多的插件,用起来很方便,插件的名字叫做vue-infinite-scroll 我们可以去npmjs.com官网看一下这个vue-infinite-scroll的用法,官网上面 ...

  5. RESTful杂记

    在网上找了许久的关于REST的资料,发现网上大部分都是说的比较片面,虽然有部分说出了本质,但也没有详细提出,所以在这里记录一下. RESTful是什么 首先,维基百科是这样说的: 表现层状态转换(RE ...

  6. [心得] SQL Server Partition(表分區) 資料分佈探討

    最近在群裡有個朋友問了個問題是這樣的 用户表有一千多万行,主键是用户ID,我做了分区.但经常查询时,其它的表根据用户ID来关联,这样跨区查询,reads非常高.有什么好的处理办法?不分区的话,索引维护 ...

  7. 轻松搞定RocketMQ入门

    RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RocketMQ网络 ...

  8. Linux文件基本操作管理

    这一篇总结Linux系统中文件和目录的创建,复制,移动和重命名,包括删除这些最常用的操作. 创建 1,创建目录 使用命令:mkdir 实践:在根目录下创建一个目录命名为mcgrady 2,创建文件 使 ...

  9. Ext.define(override)

    Ext.define(override)作用是:定义类的补丁(扩展或重写) 有3中使用方法,见附件 Ext.define(override).zip

  10. Dynamics 365-如何下载新版本的Tools

    最近新写了个Plugin,想注册到CRM中,但是使用旧版的PluginRegistration Tool的时候,总是加载不出来Plugin数据,所以寻思下载个最新版的Tool试试.现在下载Tools的 ...