看到群里有人提了下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做的调度,具体模板渲染啥的,貌似是没有用的样子,感觉一头雾水。
360的, 服务端的, 谁敢用
搞得太复杂了,
不会吧,我们的产品其实和你描述不一样
恩? 有啥区别?