Disconf

Disconf部署安装

瘦欲@ 提交于 2019-12-10 01:52:36
Distributed Configuration Management Platform(分布式配置管理平台) 专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务。 主要目标: 部署极其简单:同一个上线包,无须改动配置,即可在 多个环境中(RD/QA/PRODUCTION) 上线 部署动态化:更改配置,无需重新打包或重启,即可 实时生效 统一管理:提供web平台,统一管理 多个环境(RD/QA/PRODUCTION)、多个产品 的所有配置 支持微服务架构 安装依赖软件 安装Mysql(Ver 14.12 Distrib 5.0.45, for unknown-linux-gnu (x86_64) using EditLine wrapper) 安装Tomcat(apache-tomcat-7.0.50) 安装Nginx(nginx/1.5.3) 安装 zookeeeper (zookeeper-3.3.0) 安装 Redis (2.4.5) 服务端部署 下载源码, 点此跳转 导入IDE,以Intellij为例 一共分为三个模块: disconf-client是客户端代码 disconf-core是核心模块 disconf-web是disconf的页面管理控制台 先部署disconf-web页面 执行数据库脚本:/disconf-web/sql下的脚本

分布式配置管理平台Disconf

倾然丶 夕夏残阳落幕 提交于 2019-12-07 20:15:45
摘要 为了更好的解决分布式环境下多台服务实例的配置统一管理问题,本文提出了一套完整的分布式配置管理解决方案(简称为disconf[4],下同)。首先,实现了同构系统的配置发布统一化,提供了配置服务server,该服务可以对配置进行持久化管理并对外提供restful接口,在此基础上,基于zookeeper实现对配置更改的实时推送,并且,提供了稳定有效的容灾方案,以及用户体验良好的编程模型和WEB用户管理界面。其次,实现了异构系统的配置包管理,提出基于zookeeper的全局分布式一致性锁来实现主备统一部署、系统异常时的主备自主切换。通过在百度内部以及外部等多个产品线的实践结果表明,本解决方案是有效且稳定的。 技术背景 在一个分布式环境中,同类型的服务往往会部署很多实例。这些实例使用了一些配置,为了更好地维护这些配置就产生了配置管理服务。通过这个服务可以轻松地管理成千上百个服务实例的配置问题。 王阿晶提出了基于zooKeeper的配置信息存储方案的设计与实现[1], 它将所有配置存储在zookeeper上,这会导致配置的管理不那么方便,而且他们没有相关的源码实现。淘宝的diamond[2]是淘宝内部使用的一个管理持久配置的系统,它具有完整的开源源码实现,它的特点是简单、可靠、易用,淘宝内部绝大多数系统的配置都采用diamond来进行统一管理。他将所有配置文件里的配置打散化进行存储

disconf-web配置中心搭建

谁都会走 提交于 2019-12-07 10:28:15
安装依赖软件 安装Mysql(Ver 14.12 Distrib 5.0.45, for unknown-linux-gnu (x86_64) using EditLine wrapper) 安装Tomcat(apache-tomcat-7.0.50) 安装Nginx(nginx/1.5.3) 安装 zookeeeper (zookeeper-3.3.0) 安装 Redis (2.4.5) 具体安装方法请网上参考 准备配置 将你的配置文件放到此地址目录下(以下地址可自行设定): home/work/dsp/disconf-rd/online-resources 配置文件包括: - jdbc-mysql.properties (数据库配置) - redis-config.properties (Redis配置) - zoo.properties (Zookeeper配置) - application.properties (应用配置) 注意,记得执行将application-demo.properties复制成application.properties: cp application-demo.properties application.properties 设置War包将要被部署的地址(以下地址可自行设定): /home/work/dsp/disconf-rd/war 构建

开源的自动化部署工具探索

落花浮王杯 提交于 2019-12-05 04:11:56
1 前言 即使是在传统的企业当中,日常的备份、服务器状态监控和日志,通过手动的方式来进行的效率也很低,是一种人力的浪费。因此,自动化早已是每个运维都必须掌握的看家本领。 在不同的企业中,自动化的规模、需求与实现方式都各不相同,因此在技术细节层面,运维之间很难将别的企业的方法整个套用过来。然而在很多情况下,自动化的思路是有共通之处的。 运维自动化前三阶段 ◆纯手工阶段:手工操作重复地进行软件部署和运维。 ◆脚本阶段:通过编写脚本、方便地进行软件部署和运维。 ◆工具阶段:借助第三方工具高效、方便地进行软件部署和运维。 这几个阶段是随着运维知识、经验、教训不断积累而不断演进的。而且,第2个阶段和第3个阶段可以说是齐头并进,Linux下的第三方工具虽说已经不少了,但是Linux下的脚本编写对运维工作的促进作用是绝对不可以忽视的。 在DevOps出现之前,运维工作者在工作中还是以这两种方式为主。 下面的研究,都是一些linux下开源的第三方工具,借助第三方工具高效、方便地进行软件部署和运维。 2 业界开源的自动化部署工具 2.1 chef Chef 是一款自动化服务器配置管理工具,可以对所管理的对象实行自动化配置,如系统管理,安装软件,基于ruby语言编写的。 2.1.1 Chef的架构 2.1.2 Chef的工作原理: Chef 由三大组件组成:Chef Server、Chef

关于配置中心调研

≡放荡痞女 提交于 2019-12-04 06:44:28
概述 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,分环境、分集群管理配置,代码安全、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。 所以,配置中心应运而生。 环境简介 目前公司使用阿里云管理所有服务,原因是为了降低运维成本——傻瓜式运维。 服务部署使用edas,配置管理使用acm。 调研目的 将所有代码中的基础依赖(如数据库、分布式存储等)相关配置回收到配置中心(acm或其他开源工具)管理,提升安全性,使资源可复用,减少因版本差异带来的开发工作量。 方案比较 方案 优点 缺点 备注 edas-acm 运维介入少,便于维护 扩容不方便,每次扩容都要重新为ecs实例单独授权,授权期间扩容实例服务不可用(4xx、5xx) edas团队有优化计划,但目前无排期 第三方 扩容方便 运维成本较高(服务器、人力),负载能力、稳定性待验证 第三方配置中心产品 Disconf:百度开源的配置管理中心, 目前已经不维护了 Spring Cloud Config: Spring Cloud 生态组件,可以和Spring Cloud体系无缝整合。 Apollo: 携程开源的配置管理中心,具备规范的权限、流程治理等特性。 Nacos:

Docker下使用disconf:极速体验

匿名 (未验证) 提交于 2019-12-03 00:03:02
《Docker搭建disconf环境,三部曲之一:极速搭建disconf》 ; 《Docker搭建disconf环境,三部曲之二:本地快速构建disconf镜像》 ; 《Docker搭建disconf环境,三部曲之三:细说搭建过程》 ; 《Docker下使用disconf:极速体验》 ; 《Docker下使用disconf:细说demo开发》 ; 前面的文章中我们实战了 docker下搭建disconf环境 ,现在我们学习如何使用disconf提供的动态配置服务,本章我们不深入研究,而是以最快的速度体验一个java做的demo,此demo的功能是每隔5秒输出一组来自disconf的配置信息,内容是一个ip地址和一个端口,如果在disconf上改变了这个配置信息的内容,这个demo会立即收到配置改变的通知,并且再次输出的时候已经是最新的配置了; 下面开始极速体验吧: 新建一个docker-compose.yml文件,内容如下: version: '2' services: disconf_redis_1: image: daocloud.io/library/redis restart: always disconf_redis_2: image: daocloud.io/library/redis restart: always disconf_zookeeper: image:

Docker下使用disconf:细说demo开发

瘦欲@ 提交于 2019-11-29 21:13:37
Docker下的disconf实战全文链接 《Docker搭建disconf环境,三部曲之一:极速搭建disconf》 ; 《Docker搭建disconf环境,三部曲之二:本地快速构建disconf镜像》 ; 《Docker搭建disconf环境,三部曲之三:细说搭建过程》 ; 《Docker下使用disconf:极速体验》 ; 《Docker下使用disconf:细说demo开发》 ; 细说demo开发 在上一章 《docker下使用disconf:极速体验》 中我们体验了disconf服务的使用方获取配置以及实时感知到这个配置变化的效果,今天我们一起来实践这个demo的开发过程,学会在项目中使用disconf服务。 此demo源于disconf官网的demo(git地址: git@github.com :knightliao/disconf-demos-java.git,下有三个工程,此文的demo源自其中的disconf-standalone-demo),官方demo展示了大而全的功能,做为初学者的我花了不少时间去看,因此我就基于官方代码做了精简,精简后的代码旨在快速为初学者展示最基本的远程配置和实时感知配置变化的能力,若要系统的学习disconf的各类服务,还请自行研究官方文档和demo。 本文demo的源码在git@github.com :zq2599/blog

Docker搭建disconf环境,三部曲之三:细说搭建过程

不打扰是莪最后的温柔 提交于 2019-11-29 18:22:36
Docker下的disconf实战全文链接 《Docker搭建disconf环境,三部曲之一:极速搭建disconf》 ; 《Docker搭建disconf环境,三部曲之二:本地快速构建disconf镜像》 ; 《Docker搭建disconf环境,三部曲之三:细说搭建过程》 ; 《Docker下使用disconf:极速体验》 ; 《Docker下使用disconf:细说demo开发》 ; 细说搭建过程 在前两章中,我们利用远程或本地的镜像,快速体验了本地启动disconf的过程,本章我们一起来分析和梳理整个定制和搭建过程,了解这些后,我们就能根据自己的需要来定制本地的disconf环境了。 以下两点请注意 本机环境已经安装了maven,并且把maven的bin目录配置到环境变量PATH下; 编译编译disconf源码时,要用到官方shell脚本,所以本次实践的操作系统建议用linux或mac,如果用windows,有三种方法:一个是把shell改成bat脚本,一个是用虚拟机的linux,还有一种是用在docker上搭建一个maven容器,把disconf源码放在这个容器下编译; 先分析再实战 首先把disconf环境依赖的所有server都列出来: redis<无需定制,用官方镜像> zookeeper<无需定制,用官方镜像> mysql<<font color="red">定制

Disconf配置中心配置

心已入冬 提交于 2019-11-27 07:39:00
1、Disconf配置中心需要的环境配置 (1) 配置 java、maven环境,并安装mysql,reids,zookeeeper,Nginx 2、 配置 java,maven环境变量 3、 创建目录 mkdir /usr/local/disconf/war /usr/local/disconf/html /usr/local/disconf/src 4、 下载源码(如果没有 git直接下载到本地拷贝到服务器) cd /usr/local/disconf/src git clone https://github.com/knightliao/disconf.git 5、拷贝配置文件并修改 (1) 将 /usr/local/disconf/src/disconf/disconf-web/profile/rd路径下的配置文件拷贝到/usr/local/disconf/resource(要将application-demo.properties文件改名为application.properties),并修改相应的配置文件。 (2) Redis配置,如果redis是单机版,也必须配置两个redis-client(否则会报错),两个redis-client配置相同的host和port即可。 6、Disconf 环境变量配置 vim /etc/profile ONLINE_CONFIG

Disconf使用简单Demo

左心房为你撑大大i 提交于 2019-11-27 07:38:47
创建配置文件 在敲Demo之前,需要在Disconf上创建自己的APP,然后在APP的某个环境下创建配置文件,如下面截图中的流程,这里就简单创建了一个redis.properties,内容是redis的IP和端口号,Key值分别是redis.host和redis.port。 创建Demo 1、使用工具 Eclipse Kepler Release Maven 2、创建项目 创建一个Maven Project,修改pom.xml文件,加载所需要的jar包。 [html] view plain copy < properties > < project.build.sourceEncoding >UTF-8 </ project.build.sourceEncoding > < guava.version >16.0.1 </ guava.version > < java.version >1.7 </ java.version > </ properties > < parent > < groupId >org.springframework.boot </ groupId > < artifactId >spring-boot-starter-parent </ artifactId > < version >1.3.2.RELEASE </ version > </