Tornado和yaml构建自动生成nginx配置的api

最近和同事在搞一个nginx的配置api接口,项目用tornado redis yaml来实现,我这里就简单分享下关于nginx配置api实现。以前看过我以前的博文,应该会发现,我主张的是配置的渲染,用模板去定制舒展,而不是用正则去匹配然后做一些修正。 

后端的模板程序

通过tornado的api 去做get请求,返回的不同主机的 nginx upstream的操作块配置。

Hello,更多的tornado和运维开发的资料,请移步到   blog.xiaorui.cc

这里是服务器端的日志打印情况。可以看到yaml loads之后,他就是一个很大的json串 。


已经把很多服务器nginx的upstream集群池配置导入到了yaml配置里面。python提供了好用的模块,可以舒服的针对yaml增删改查。

咱们来看看nginx的yaml的格式,配置。 你自己可以做更多的扩展,比如在upstream里面的backup,max_fails,fail_timeout等参数。




这样的方式下发配置,在我多方面的实战下,还是靠谱的。 最少我已经把lvs、nginx的配置应用进去了,只要做好数据的校验,别关顾着reload,结果傻x了。 

其他的想法,这个方法可以用在saltstack上面的,看到我写的关于salt lvs的文章,大家会有思路的。不想用yaml的话,可以换成mongodb做落地。


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

2 Responses

  1. no13bus 2015年4月30日 / 上午8:08

    import tornado.httpserverimport yamlimport tornado.gredisimport tornado.ioloopimport tornado.webimport redisimport geventfrom gevent.queue import Queue, Emptyfrom gevent.pool import Groupfrom gevent import getcurrentfrom gevent.coros import BoundedSemaphore这些gevent的引入没用吧?

发表评论

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

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">