Disconf是百度开源出来的一款基于Zookeeper的分布式配置管理软件。目前很多公司都在使用,包括滴滴、百度、网易、顺丰等公司。通过简单的界面操作就可以动态修改配置属性,还是很方便的。使用Disconf后发现的一大好处是省却应用很多配置,而且配置可以自动load,实时生效。

Disconf优点总结如下:

部署简单:同一个上线包,无须改动配置,即可在多个环境中上线 
部署动态化:更改配置,无需重新打包或重启,即可实时生效 
统一管理:提供web平台,统一管理多个环境多个产品的所有配置

如果想直接了解如何使用Disconf,可直接阅读Disconf实践指南:使用篇,不过了解如何安装可以更深入了解Disconf的工作原理,同时方便以后代码的调试。

需要安装Nginx、Tomcat、Zookeeper、Redis和MySQL。 
Nginx:处理静态资源请求、动态请求转发到Tomcat 
Tomcat:处理Nginx的请求 
Zookeeper:管理Disconf配置信息,配置变更通过zk通知 
Redis:用户session管理 
MySQL:应用管理、用户管理、角色管理、环境管理、配置持久化

一、安装Nginx 
1、Nginx官网下载源码包 
下载稳定版本:nginx-1.12.0.tar.gz

2、安装到/usr/local/nginx

tar -zxvf nginx-1.12.0.tar.gz 
cd nginx-1.12.0 
./configure –prefix=/usr/local/nginx –with-zlib=../zlib-1.2.11 –with-pcre=../pcre-8.39 
make 
sudo make install

3、修改监听端口

server {
listen 8091;
server_name localhost; index index.html;
#charset koi8-r; #access_log logs/disconf_access.log; location / {
#root /Users/chubin/Applications/disconf-stable/disconf-web/html;
root /usr/local/disconf/war/html;
index index.html;
}
}

4、启动Nginx

cd /usr/local/nginx 
启动 
sudo sbin/nginx #ps aux | grep nginx或者访问localhost:8091 
重启 
sudo sbin/nginx -s reload 
停止 
sudo sbin/nginx -s stop

5、将disconf-stable/disconf-web/html复制到/usr/local/disconf/war/

6、修改Nginx代理配置和静态资源目录

upstream disconf {
server 127.0.0.1:8080; #tomcat服务器的地址
} server {
listen 8091; #监听端口
server_name localhost; index index.html;
location / {
root /usr/local/disconf/war/html; #静态资源目录
index index.html;
} 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;
}
}

二、安装Tomcat 
1、Tomcat官网下载安装包 
下载Tomcat 7.x以上的版本:apache-tomcat-8.5.15.tar.gz 
2、安装到任意目录 
/xxx/apache-tomcat-8.5.15 
3、启动Tomcat

./catalina.sh start #访问浏览器localhost:8080

三、安装Zookeeper 
1、Zookeeper官网下载安装包 
zookeeper-3.4.10.tar.gz 
2、启动Zookeeper

cd zookeeper-3.4.10/bin 
./zkServer start #ps aux | grep zoo验证进程是否起来 
./zkCli.sh #zk客户端

四、安装Redis 
1、下载Redis源码包,Redis官网 
2、解压安装

tar zxvf ../Downloads/redis-3.2.9.tar.gz 
cd redis-3.2.9 
make 
make install #安装后在/usr/local/bin会有redis的脚本 
cp redis.conf /etc 
vi /etc/redis.conf ##将daemonize no改为daemonize yes 
/usr/local/bin/redis-server /etc/redis.conf 
ps aux | grep redis #如果启动成功会有redis的进程

3、配置主从 
由于Disconf至少需要配置两台redis-client,所以我们可以在一台机器(本机)上安装master/slave模式的redis集群

cp /etc/redis.conf /etc/redis2.conf #redis2启动在6380端口 
vi redis2.conf #配置slaveof 127.0.0.1 6379 
sudo ./redis-server /etc/redis2.conf 
ps aux | grep redis

4、设置主从的shardname

./redis-cli #redis.conf 
auth foobared 
set name ‘BeidouRedis1’ 
./redis.cli #redis2.conf 
auth foobared 
set name ‘BeidouRedis2’

五、安装MySQL 
1、下载MySQL源码包,MySQL官网 
2、安装MySQL

tar zxvf ../Downloads/mysql-5.7.18-macos10.12-x86_64.tar.gz 
sudo mv mysql-5.7.18 /usr/local/mysql #移动MySQL到安装目录 
sudo support-files/mysql.server start #启动MySQL 
./mysqladmin -u root -p password 1234 #修改root用户初始密码 
./mysql -u root -p 1234 #自带客户端连接MySQL

3、如果觉得麻烦,可以直接下载dmg安装文件,简单省事 
4、导入disconf的sql脚本

  • 0-init_table.sql #建库建表
  • 1-init_data.sql #插入数据
  • 201512/20151225.sql #历史配置表

5、最终数据库如下: 

六、安装Disconf 
1、下载Disconf源码包,Disconf-stable 
disconf-stable 
2、导入IDEA,运行Disconf 
到disconf-web目录,将online-resources下的配置文件拷贝一份到src/main/resources下,包含的文件有:

application.properties #应用自身的配置文件 
jdbc-mysql.properties #数据库配置 
redis-config.properties #redis配置 
zoo.properties #Zookeeper配置

如果以上配置都OK的话,在IDEA启动本地Tomcat,访问http://localhost:8091,默认账户admin/admin。

至此,全部安装结束,本地搭建Disconf成功,下一步就是让应用接入Disconf了。安装配置有任何问题欢迎评论O(∩_∩)O哈!

Disconf实践指南:安装篇的更多相关文章

  1. Disconf实践指南:使用篇

    在上一篇文章Disconf实践指南:安装篇介绍了如何在本地搭建Disconf环境,下面我们介绍如何在项目中使用Disconf.由于某些功能特性对源码做了修改,所以在官方文档并没有提及. 环境基于mac ...

  2. Disconf实践指南:改造篇

    上一篇文章Disconf实践指南:使用篇介绍了如何在项目中应用disconf,虽然实现了分布式配置的实时刷新,但是我们希望能够去除所有的配置文件,把配置都交给disconf管理,本地只需要实现配置监听 ...

  3. Nagios学习实践系列——基本安装篇

    开篇介绍 最近由于工作需要,学习研究了一下Nagios的安装.配置.使用,关于Nagios的介绍,可以参考我上篇随笔Nagios学习实践系列——产品介绍篇 实验环境 操作系统:Red Hat Ente ...

  4. 如何让HTTPS站点评级达到A+? 还得看这篇HTTPS安全优化配置最佳实践指南

    0x00 前言简述 SSL/TLS 简单说明 描述: 当下越来越多的网站管理员为企业站点或自己的站点进行了SSL/TLS配置, SSL/TLS 是一种简单易懂的技术,它很容易部署及运行,但要对其进行安 ...

  5. [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务

    转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...

  6. Java工程师学习指南 完结篇

    Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...

  7. Java工程师学习指南 初级篇

    Java工程师学习指南 初级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  8. Java工程师学习指南 入门篇

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  9. [CoreOS 转载]CoreOS实践指南(二):架设CoreOS集群

    转载:http://www.csdn.net/article/2015-01-04/2823399 摘要:CoreOS是一个采用了高度精简的系统内核及外围定制的操作系统.ThoughtWorks的软件 ...

随机推荐

  1. phpcms后台主菜单不显示

    phpcms\modules\admin\templates\main.tpl.php 注释掉既可

  2. spi总结

    SPI的四种模式 SPI的相位(CPHA)和极性(CPOL)分别可以为0或1,对应的4种组合构成了SPI的4种模式(mode) Mode 0:CPOL = 0,CPHA = 0 Mode 1:CPOL ...

  3. silverlight——获取控件相对位置

    事出有因:页面中存在滚动条,然后点击页面按钮时会进行正确性检查,如果出错在控件的位置会出现提示信息,但由于滚动条的出现,有可能在非可视区域内的控件出了问题,但目前是看不见的,因此,考虑获得出问题控件的 ...

  4. 向requestAnimationFrame的回调函数中传递参数

    其实跟setTimeout类似,我们知道传参传的是一个函数,那么我们是不是可以用一个匿名函数来包裹这个函数的执行呢function fn(fc){ console.log('fc:',fc) fc++ ...

  5. [BZOJ5338][TJOI2018]xor

    bzoj luogu descirption 现在有一棵以 \(1\) 为根节点的由 \(n\) 个节点组成的树,树上每个节点上都有一个权值 \(v_i\) .现在有 \(Q\) 次操作,操作如下: ...

  6. Nchan 实时消息内置变量

      以下参考官方文档:   $nchan_channel_idThe channel id extracted from a publisher or subscriber location requ ...

  7. 将 PCB 文件转换为可读的文本

    将 PCB 文件转换为可读的文本 将元件转成列表. 坐标也放到列表中. 以元件号为排序. 使用 json 格式,并格式,方便对比. 元件网络转成单独文件. 特殊说明生成单独文件.

  8. torcs代码

    /** Info returned by driver during the race */ typedef struct { tdble steer; /**< Steer command [ ...

  9. bzoj 5120 [2017国家集训队测试]无限之环——网络流

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5120 旋转的话相当于去掉一个插头.新增一个插头,所以在这两个插头之间连边并带上费用即可. 网 ...

  10. 从内存的角度观察 堆、栈、全局区(静态区)(static)、文字常量区、程序代码区

    之前写了一篇堆栈的,这里再补充下内存其他的区域 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) — 一般由程 ...