基于saltstack实现的配置集中化管理[原创] 不指定

刘天斯 , 2013/08/26 22:39 , saltstack , 评论(17) , 阅读(74169) , Via 本站原创 | |
    Saltstack是一个具备puppet与func功能为一身的集中化管理平台,saltstack基于python实现,功能十分强大,各模块融合度及复用性极高,官方极力推荐作为云计算平台的基础架构。轻松维护成千上万台服务器不是问题,现分享作者基于saltstack实现一个集中化的配置管理平台,以Nginx配置例子展开,涉及salt的grains、grains_module、pillar、States、jinja(template)等,本文适合有salt基础的同学阅读。
一、设备环境说明
    有两组web业务服务器,组名分别为web1group与web2group,设备硬件配置、web根目录存在异常,见下图:
    点击在新窗口中浏览此图片

二、master配置说明
    1、关键配置定义:

    2、定义的文件树结构(具体文件后续说明)
点击在新窗口中浏览此图片

三、自定义grains_module
1)#vi /srv/salt/_grains/nginx_config.py

2)同步grains模块
salt '*' saltutil.sync_all

3)刷新模块(让minion编译模块)
salt '*' sys.reload_modules

4)验证max_open_file key的value
[root@SN2013-08-020 _grains]# salt '*' grains.item max_open_file              
SN2013-08-022:
  max_open_file: 1024
SN2013-08-021:
  max_open_file: 1024
SN2012-07-011:
  max_open_file: 1024
SN2012-07-012:
  max_open_file: 1024
SN2012-07-010:
  max_open_file: 1024

四、配置pillar
    本例使用分组规则定义pillar,即不同分组引用各自的sls属性
1)定义入口top.sls
#vi /srv/pillar/top.sls

2)定义私有配置,本例只配置web_root的数据,当然可以根据不同需求进行定制,格式为python的字典形式,即"key:value"。
#vi /srv/pillar/web1server.sls

#vi /srv/pillar/web2server.sls

3)验证配置结果:
#salt 'SN2013-08-021' pillar.data nginx
SN2013-08-021:
    ----------
    root:
        /data

#salt 'SN2012-07-010' pillar.data nginx
SN2012-07-010:
    ----------
    root:
        /www

五、配置States
1)定义入口top.sls
#vi /srv/salt/top.sls

2)定义nginx配置及重启服务SLS,其中salt://nginx/nginx.conf为配置模板文件位置。
#vi /srv/salt/nginx.sls

3)Nginx配置文件(引用jinja模板)
功能点:
1、worker_processes参数采用grains['num_cpus'] 上报值(与设备CPU核数一致);
2、worker_cpu_affinity分配多核CPU根据当前设备核数进行匹配,分别为2\4\8\其它核;
3、worker_rlimit_nofile参数与grains['max_open_file'] 获取的系统ulimit -n一致;
4、worker_connections 参数理论上为grains['max_open_file'];
5、 root参数为定制的pillar['nginx']['root']值。
#vi /srv/salt/nginx/nginx.conf

4)同步配置
#salt '*' state.highstate
点击在新窗口中浏览此图片
(由于非第一次运行,看不到配置文件比对的信息)

5)验证结果:
1、登录root@SN2013-08-021
#vi /etc/nginx/nginx.conf
点击在新窗口中浏览此图片


点击在新窗口中浏览此图片

2、登录root@SN2012-07-010
#vi /etc/nginx/nginx.conf
点击在新窗口中浏览此图片


点击在新窗口中浏览此图片
bj-F
2016/05/01 10:00
saltstack2015.5.9下,如果pillar定义有中文,执行时总是提示SaltRenderError和UnicodeDecodeError请问楼主有解决方法吗谢谢
718097281 Email
2015/07/22 16:44
LZ的书我买了,我觉得salt的反射是不是得讲讲,我感觉这才是salt的重点
hanxiao Email Homepage
2015/03/17 17:31
我知道是什么问题了,是因为minion主机没有设置id号,
hanxiao Email Homepage
2015/03/17 16:16
其实我知道上午的主要问题是什么了,主要是 nodegroup match不成功,但我不知道为什么不成功,master配置文件里已经添加了node group信息
hanxiao Email Homepage
2015/03/17 11:07
感觉 YAML格式要求很严格,行首空格、制表符多一个少一个都不行。我在在配置 pillar 时遇到了问题1、设置了nodegroups :web1group、web2groupsalt -N web1group test.pingvm0:    Truevm1:    True2、然后按书上的写了 top.sls、web1server.sls、web2server.sls刷新 salt '*' saltutil.refresh_pillar
hanxiao Email Homepage
2015/03/17 10:57
感觉YAML的格式要求很严格,行首多一个空格或制表符都不行我在配置pillar时,就有困惑,我使用salt -N web1group test.ping   #正常salt -N web1group test.ping vm1:    Truevm0:    True写了  /srv/pillar/top.sls、web1server.sls、web2server.sls,然后刷新 salt '*' saltutil.refresh_pillar但在master上执行 salt 'vm0' pillar.data nginxvm0:    ----------后来我直接复制了你的sls文件,也不行,这是怎么回事呢,前面的 max_open_file倒测试正常。我是个新手,向你学习
甄码农 Email Homepage
2014/11/06 10:03
请教个问题,在master上_grains目录下的python文件同步到minion服务器上的说呢么位置了?grain调试有什么好的方法? 谢谢
网游加速器 Homepage
2014/08/17 16:55
感觉管理好麻烦的啊
变压器 Homepage
2014/07/27 20:50
路过,偷偷带走,谢谢分享
园林假山 Email Homepage
2014/07/24 08:44
不错,学习学习,欢迎回访
胶水 Email Homepage
2014/07/21 16:10
我是来打酱油的,欢迎回访我的博客。
ran
2014/02/21 14:31
saltstack针对编译安装的服务怎么维护呢?怎么进行服务的 - enable: True    - reload: True这两个功能?
张伟 Email
2013/10/23 15:52
哈哈,我被主机名勾引出来了
刘天斯 回复于 2013/10/28 16:18
汗颜~
一路狂飙 Email
2013/10/14 09:18
生成了如何分发呢?
刘天斯 回复于 2013/10/14 18:09
运行#salt '*' state.highstate 就是包含校验、分发,具体项看SLS配置。
藤家具 Homepage
2013/09/24 17:25
确实很有压力的呀
北南
2013/09/05 16:46
谢谢分享!回去捣鼓下。
chenqing Email Homepage
2013/09/04 12:59
不错,楼主依然强悍。。。
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]