一、需求

实现分布式配置中心:
(1)集中管理外部依赖的服务配置和服务内部配置
(2)提供web管理平台进行配置和查询
(3)支持服务注册与发现
(4)支持客户端拉取配置
(5)支持订阅与发布,配置变更主动通知到client,实时变更配置


二、开源解决方案

http://disconf.readthedocs.io/zh_CN/latest/index.html   disconf官方wiki文档及其他开源解决方案

注: disonf目前客户端只支持Java版本   https://github.com/knightliao/disconf-demos-java

三、disconf-web部署

3.1  How to deploy

  • 安装依赖软件

    • 安装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)
  • 从github获取disconf项目
[root@minion data]# git clone https://github.com/knightliao/disconf.git
  • 目录结构说明

[root@minion data]# tree disconf -L
disconf
├── disconf-client # 分布式配置客户端模块, 依赖disconf-core包。 用户程序使用它作为Jar包进行分布式配置编程。
│   ├── deploy
│   ├── pom.xml
│   ├── README.md
│   ├── src
│   └── tools
├── disconf-core #分布式配置基础包模块
│   ├── pom.xml
│   ├── README.md
│   └── src
├── disconf-web   #分布式配置平台服务模块, 依赖disconf-core包。采用SpringMvc+纯HTML方式实现。 用户使用它来进行日常的分布式配置管理。
│   ├── bin
│   ├── deploy
│   ├── html
│   ├── pom.xml
│   ├── profile
│   ├── README.md
│   ├── sql   #初始化数据库sql文件
│   └── src
├── docs
│   ├── make.bat
│   ├── Makefile
│   ├── myMake.sh
│   ├── README.md
│   └── source
├── LICENSE
├── pom.xml
├── README.md
└── sql
directories, files
  • 配置准备

假定程序部署目录为:/data/disconf   配置模板文件路径为:/data/disconf/disconf-web/profile/rd

[root@minion disconf]# cd /data/disconf/    进入程序目录
[root@minion disconf]# mkdir -p /data/disconf/disconf-rd/{online-resources,war}  #创建配置文件存放目录及war包存放路径,可自行设定目录
[root@minion disconf]# cd /data/disconf/disconf-web/profile/rd/ 进入模板文件路径
[root@minion rd]# ls
application-demo.properties jdbc-mysql.properties log4j.properties logback.xml redis-config.properties zoo.properties
[root@minion rd]# cp application-demo.properties jdbc-mysql.properties redis-config.properties zoo.properties /data/disconf/disconf-rd/online-resources/ #复制模板配置文件
[root@minion rd]# ll /data/disconf/disconf-rd/online-resources/
total
-rw-r--r-- root root Apr : application-demo.properties   #应用配置,邮件及应用相关
-rw-r--r-- root root Apr : jdbc-mysql.properties       #数据库配置
-rw-r--r-- root root Apr : redis-config.properties     #Redis配置,主要用于web登录使用
-rw-r--r-- root root Apr : zoo.properties            #Zookeeper配置
[root@minion rd]# cd /data/disconf/disconf-rd/online-resources/
[root@minion online-resources]# cp application-demo.properties application.properties #切记,将模板文件application-demo.properties复制成application.properties
  • 注意,即使只有一个redis,也应该配置两个redis client,否则将造成内部错误。

[root@minion online-resources]# cat redis-config.properties
redis.group1.retry.times= redis.group1.client1.name=BeidouRedis1
redis.group1.client1.host=127.0.0.1
redis.group1.client1.port=
redis.group1.client1.timeout=
redis.group1.client1.password=foobared redis.group1.client2.name=BeidouRedis2
redis.group1.client2.host=127.0.0.1
redis.group1.client2.port=
redis.group1.client2.timeout=
redis.group1.client2.password=foobared redis.evictor.delayCheckSeconds=
redis.evictor.checkPeriodSeconds=
redis.evictor.failedTimesToBeTickOut=
  • 项目构建

注: 安装前需确保mysql/tomcat/redis/zookeeper软件环境部署完成

[root@minion disconf]# ONLINE_CONFIG_PATH=/data/disconf/disconf-rd/online-resources
[root@minion disconf]# WAR_ROOT_PATH=/data/disconf/disconf-rd/war
[root@minion disconf]# export ONLINE_CONFIG_PATH
[root@minion disconf]# export WAR_ROOT_PATH
[root@minion disconf]# cd disconf-web
[root@minion disconf-web]# sh deploy/deploy.sh 脚本运行结束后会在/data/disconf/disconf-rd/war/路径下生成web部署所用到的程序文件
-disconf-web.war
-html
-META-INF
-WEB-INF

3.2 数据库初始化

可以参考 sql/readme.md 来进行数据库的初始化。注意sql文件导入顺序
0-init_table.sql---->1-init_data.sql---->201512/20151225.sql---->20160701/20160701.sql
数据库初始化完成后,里面默认有6个用户,可以使用默认的账号登陆disconf-web服务器页面(请注意线上环境删除这些用户以避免潜在的安全问题
 
mysql> select * from disconf.user;
+---------+------------+------------------------------------------+------------------------------------------+---------+---------+ 用户名对应的密码
| user_id | name | password | token | ownapps | role_id |
+---------+------------+------------------------------------------+------------------------------------------+---------+---------+
| | testUser1 | 5eec8499597a115c88e0a9580ae1562ab85d0b1a | b9070d385a13357efa09e50e080607c2b299241b | | | -->MhxzKhl9209
| | testUser2 | 71e9dc667eefa5a3a4840cb4f1ce22bc246f22f0 | b169dec42f61ec6cbad88d70e7c4c6b89630ccfb | | | -->MhxzKhl167
| | testUser3 | e2cdc4a9195030543e38e19a923f075d54471cc4 | a1a20b0e03a5191c530cbfc064eda3c16254df64 | | | -->MhxzKhl783
| | testUser4 | 5cef2d7e4ada5a615f03e12b569d80aedfb056fc | 007b07fccbc1c82c987f7b8e4651e85cca01cf2b | | | -->MhxzKhl8758
| | testUser5 | f996eeaa224abe0037d99adbce73c315e13238f9 | c9dfdcb50a3d84f2b6a4771dcb7c2ceb19e7d281 | | | -->MhxzKhl112
| | admin | d033e22ae348aeb5660fc2140aec35850c4da997 | f28d164d23291c732f64134e6b7d92be3ff8b1b3 | | | -->admin
| | admin_read | b76f3e20d1c8d0bc17d40158e44097d5eeee8640 | 2022ab9c2754d62f9ddba5fded91e4238247ebaf | | |
| | mobiledsp | 0855b44a368e44dc6e6825532073b29a368584af | 132069654193f802203d1c6c86e753ecede698f6 | | |
+---------+------------+------------------------------------------+------------------------------------------+---------+---------+
rows in set (0.00 sec)
如果想自己设置初始化的用户名信息,可以参考代码来自己生成用户:
[root@minion disconf-web]# cat /data/disconf/disconf-web/src/main/java/com/baidu/disconf/web/tools/UserCreateTools.java 源代码文件

3.3 部署war包

修改tomcat中server.xml文件,在Host结点下设定Context:
[root@shuke conf]# vim /opt/apache-tomcat-9.0..M18/conf/server.xml
......
69  <Connector port="8014" protocol="HTTP/1.1"      #设定端口为8014,可自行设定端口
70        connectionTimeout="20000"
71        redirectPort="8443" />
.......
148 <Host name="localhost" appBase="webapps"
149 unpackWARs="true" autoDeploy="true">
150 <Context path="" docBase="/data/disconf/disconf-rd/war"></Context> #增加内容

[root@shuke bin]# sh /opt/apache-tomcat-9.0.0.M18/bin/startup.sh  启动tomcat程序

3.4  部署前端nginx代理

[root@shuke conf.d]# cat /etc/nginx/conf.d/disconf.conf
upstream disconf {
server 127.0.0.1:; #代理tomcat,动态请求转发至后端tomcat程序
} server { listen ;
server_name 192.168.1.100; #如果使用域名,可以设置为disconf.com(可以自定义),但它必须与 application.properties配置文件中的domain保持一致。
access_log /var/logs/disconf/access.log;
error_log /var/logs/disconf/error.log; location / {
root /data/disconf/disconf-rd/war/html;
if ($query_string) {
expires max;
}
} location ~ ^/(api|export) {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://disconf;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
}

浏览器访问:http://192.168.1.100:8081, 访问异常可查看nginx或tomcat日志

3.5 disconf-web使用说明

首页,点击登陆后,输入用户名:admin,密码:admin登陆即可

主界面

左上角可以选择APP和环境,选择之后,就会在中间出现若干个版本,

选择版本后,就会显示 APP、环境、版本 三个条件下的配置列表:

表格中 各个列的意义是:

  • APP:使用哪个APP,及它的ID
  • KEY:配置文件或配置项
  • 配置内容:配置文件或配置项在配置中心中的值
  • 实例列表:使用此配置文件或配置项的所有实例列表,及每个实例的配置值。如果实例的配置值与配置中心的值不一致,这里会标识出来。
  • 修改时间:修改此配置的最后一次时间
  • 操作:个性、删除、下载

右上角可以

新建配置项、新建配置文件、新建APP

表格右上方

可以批量下载所有配置文件至本地,还可以查看ZK上的部署情况。

至此,disconf-web端已经部署完成!


 

disconf-web 分布式配置管理平台的更多相关文章

  1. 分布式配置管理平台 Disconf

    Distributed Configuration Management Platform(分布式配置管理平台) 专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务. 包括 ...

  2. Disconf 分布式配置管理平台(安装配置)

    Disconf 分布式配置管理平台(安装配置) 依赖环境 Nginx:处理静态资源请求.动态请求转发到Tomcat Tomcat:处理Nginx的请求 Redis:用户session管理 MySQL: ...

  3. Java Web学习总结(23)——Distributed Configuration Management Platform(分布式配置管理平台)

    专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务. 主要目标: 部署极其简单:同一个上线包,无须改动配置,即可在 多个环境中(RD/QA/PRODUCTION) 上线 部 ...

  4. 百度分布式配置管理平台-Disconf

    Disconf介绍 全称:Distributed Configuration Management Platform,即分布式配置管理平台. Disconf专注于各种分布式系统配置管理的通用组件和通用 ...

  5. 分布式配置管理平台XXL-CONF

    <分布式配置管理平台XXL-CONF>      一.简介 1.1 概述 XXL-CONF 是一个分布式配置管理平台,提供统一的配置管理服务.现已开放源代码,开箱即用. 1.2 特性 1. ...

  6. Disconf —— 来自百度的分布式配置管理平台

    摘要 为了更好的解决分布式环境下多台服务实例的配置统一管理问题,本文提出了一套完整的分布式配置管理解决方案(简称为disconf[4],下同).首先,实现了同构系统的配置发布统一化,提供了配置服务se ...

  7. 分布式配置管理平台 - Disconf介绍

    原博客地址:http://blog.csdn.net/zhu_tianwei/article/details/47984545 Disconf专注于各种分布式系统配置管理的通用组件/通用平台,提供统一 ...

  8. windows系统下Disconf web安装-分布式配置管理平台

    文章参考自 http://blog.csdn.net/syc001/article/details/78128117 https://www.cnblogs.com/mrluo735/p/632271 ...

  9. Disconf web管理端安装

    1.环境配置配置java.maven环境,并安装mysql,reids,zookeeeper,Nginx2.下载disconf下载https://codeload.github.com/knightl ...

随机推荐

  1. 【转】手摸手,带你用vue撸后台 系列二(登录权限篇)

    前言 拖更有点严重,过了半个月才写了第二篇教程.无奈自己是一个业务猿,每天被我司的产品虐的死去活来,之前又病了一下休息了几天,大家见谅. 进入正题,做后台项目区别于做其它的项目,权限验证与安全性是非常 ...

  2. CSS中em,rem的区别

    首先这两个单位一般用在移动端 不太清楚得求证  再记录 1.em w3cschool中给出css中尺寸单位如下: 单位 描述 % 百分比 in 英寸 cm 厘米 mm 毫米 em 1em 等于当前的字 ...

  3. 1.Spring揭秘--Ioc容器

    1.Ioc即控制反转,假设一个类需要依赖另外一个类,在最初始的做法就是创建那个依赖类的对象,然后使用这个类提供的功能,如果创建这个依赖类的职责交给Ioc Service Provider去做,那么这就 ...

  4. 【BZOJ4870】组合数问题(计数DP,快速幂)

    题意: 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 思路:From http://blog.csdn.net/qq_33229466/artic ...

  5. iOS静态库 ---iOS-Apple苹果官方文档翻译

    iOS静态库 ---iOS-Apple苹果官方文档翻译 •什么是库? 库是共享程序代码的方式,一般分为静态库和动态库.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使⽤用就为什 ...

  6. [HNOI2009]有趣的数列 题解(卡特兰数)

    [HNOI2009]有趣的数列 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满 ...

  7. c++刷题(3/100)数独,栈和队列

    stack的基本操作 • s.size():返回栈中的元素数量 • s.empty():判断栈是否为空,返回true或false • s.push(元素):返回对栈顶部“元素”的可变(可修改)引用 • ...

  8. JS的全局函数eval解析JSON字符串

    JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需. ...

  9. 多线程中的超时, 如Socket超时

    ; ,,, ->$port { print "-->$port\r"; #say "\r"; await Promise.anyof( Promis ...

  10. Codeforces Round #456 (Div. 2)

    Codeforces Round #456 (Div. 2) A. Tricky Alchemy 题目描述:要制作三种球:黄.绿.蓝,一个黄球需要两个黄色水晶,一个绿球需要一个黄色水晶和一个蓝色水晶, ...