畅想360集中式配置管理系统QConf和另一个Etcd的开发实现

看到群里有人提了下360的一个分享,是有关集群式配置管理的, 项目的名字叫做Qconf 。

HI , 最近爬虫很凶猛,标注下原文地址,blog.xiaorui.cc

作为屌丝的我,真是没有机会去上海的中华架构师大会,但是感觉这次会上的内容还是比较的有趣的。 

演讲主题:集中式配置管理系统QConf简介

演讲简介:QConf是一个集中式配置管理工具,能实现配置信息对业务的完全透明化。通常情况下,每个业务服务器有自己的配置,当有配置需要变动的时候,所有的业务服务器都需要更新一遍(无论是使用人工还是脚本的方式)。而使用QConf把所有的配置进行集中管理,取代了传统意义上的配置文件,实现了程序代码与配置信息的完全分离,并能提供方便友好的Web使用界面。

朱超以前搞的atlas mysql代理很是牛逼, 这次我也很是期待。 他们部门开源精神值得点赞,然而我自己以前也实现了集中式的配置管理,当时现在是限于LVS,nginx。聚美优品那边貌似貌似实现了把一些常用的配置也都push到mongodb里面。 

360 Qconf的实现方式,我不得而知。 但是感觉配置的集中,不外乎就是完全的存入,还有就是动态的模板。 

完全的存入,这个比较的简单,就是把nginx.conf squid.conf直接存入库里面,不管你是mysql或者mongodb。动态的意思是,把各个集群中,容易变动的值,提取出来,然后被扣出来的配置点,达成 {}  {}  {} 配置对。 


开源的集中式配置管理有个叫做etcd的东西,这个是kv结构的,不知道和qconf有啥区别,估计是更切近他们的业务。 


360的atlas群里,说是考虑把Qconf在明年的时候开源,感觉好时尚呀。 

那么我在这里额外的提下关于集中式配置系统Etcd的相关介绍。


架构特点
● 最上(前)面的服务调用下层的服务
● 一层一层的调用关系
● 上层服务通过配置文件指定如何连接后面服

手动档
● 服务调用方有配置文件来决定连接后端
● 后端服务器增加或者减少要手动修改前端的
配置文件

自动档
● 后端服务器增加或者减少可以让前端自动的
感知到
● 快速大批量部署方便,一次部署几十台到几百
台后端服务器,前端迅速感知

实现原理
● 存在一个中心配置节点
● 服务提供方会持续的向配置节点注册服务
● 服务调用方会持续的读取中心配置节点的配
置并修改本机配置,然后reload服务

技术组件选用
● docker,快速部署的不二之选
● nginx,前端服务,服务调用方
● py server,后端服务,服务提供方
● etcd,中心配置管理节点
● django template,从etcd读取的配置参数结合
模板,生成最终配置文件
● 服务发现脚本,服务注册脚本

模板生成配置etcd2nginx.py

#!/bin/env python
import sys
from django.template import Template
from django.template import Context
from django.conf import settings
settings.configure()
ss=sys.argv[1]
ts='''upstream default {
{% for x in servers %} server {{x}};
{% endfor %}}'''
t=Template(ts)
a=ss.split(";")
r=t.render(Context({'servers':a}))
print r

那么通过模板渲染后的结果,

upstream default {
 server 192.168.1.4:9001;
 server 192.168.1.4:9003;
 server 192.168.1.4:9004;
 server 192.168.1.4:9005;
 server 192.168.1.4:9007;
 server 192.168.1.4:9008;
 server 192.168.1.4:9002;
 server 192.168.1.4:9006;
 server 192.168.1.4:9009;
}

只想说声,干尼玛呀,这Etcd 的一些个观念和思想,居然和我以前在乐视开发的LVS集群配置平台和最后离职前开发的统一配置平台 一样一样的。  说明哥以前的想法绝对是对的 !!

号外号外,今天问了360的朋友,他说 qconf是用zookeeper做的调度,具体模板渲染啥的,貌似是没有用的样子,感觉一头雾水。 


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

4 Responses

  1. cubegun 2015年3月25日 / 上午11:07

    搞得太复杂了,

  2. 360ops 2014年11月29日 / 上午12:14

    不会吧,我们的产品其实和你描述不一样

360ops进行回复 取消回复

邮箱地址不会被公开。 必填项已用*标注