安装情况:System: Centos 6.3Salt master: salt-master.example.comSalt minion: salt-client01.example.comSalt minion: salt-client02.example.com一. 主控端设置1. 设置master根基参数# vi /etc/salt/master添加:nodegroups: webgroup1: 'salt-client01.example.com' webgroup2: 'salt-client02.example.com'
file_roots: base: /srv/salt
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
pillar_roots: base: /srv/pillarTip: 这里的nodegroups里的分组会应用到随后的pillar剧本下, 用来区分差异的salt-minion利用相应的pillar参数, 从而定制差异的minion利用差异的设置方案.重启处事# /etc/init.d/salt-master restart2. 动态设置客户端系统毗连数利用python剧本编写grains_module, 实现动态设置被控主机毗连数(CLI可用"limit -n"查询该值), 以便随后的Nginx设置文件中的worker_rlimit_nofile, worker_connections可动态挪用剧本中max_open_file的参数值.Tip: "ulimit -n" 是用来查询当前linux系统的最大打开文件数, 默认为1024也可用"ulimit -a"来查察其他相关参数# ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 7819max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 1024virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited临时修改当前session的参数值# ulimit -n 2048永久修改需修改该参数值# vi /etc/security/limits.conf添加:root soft nofile 2048root hard nofile 2048# vi /etc/pam.d/common-session添加:session required pam_limits.so重启生效.剧本详细设置如下:# mkdir -p /srv/salt/_grains# vi /srv/salt/_grains/nginx_config.py#!/usr/bin/env python
import os,sys,commands
# return Nginx config grains valuedef NginxGrains(): grains = {} max_open_file=65536 try:getulimit=commands.getstatusoutput('source /etc/profile && ulimit -n') except Exception,e: pass if getulimit[0]==0:max_open_file=int(getulimit[1]) grains['max_open_file'] = max_open_file return grainsTip: 该剧本会同步到长途后执行, 剧本实际就是获取并返回当前主机的最大打开数值, 最终返回值会赋予字典 grains['max_open_file']同步grains模块:# salt '*' saltutil.sync_all刷新模块(让minion编译模块)# salt '*' sys.reload_modules验证max_open_file key的value# salt '*' grains.item max_open_fileTip: 这里笔者测试变动客户端最大文件打开值时发明白一个问题, 无论客户端如何变动这个值, 在验证key value时终会显示最早的系统初始值1024, 翻阅了大量文档, 发明minion端会将所有处事端的推送生存在(/var/cache/salt/minion), 这里删除这个缓存目次并重启salt-minion, 让其生成新的缓存目次, 重新同步grains模块, 新的vaule就会生效.# salt '*' cmd.run 'rm -rf /var/cache/salt/minion && /etc/init.d/salt-minion restart'3. 设置pillar1). 界说进口sls# vi /srv/pillar/top.slsbase: webgroup1: match: nodegroup nginx.webserver1 webgroup2: match: nodegroup nginx.webserver2Tip: 这里界说webgroup1的所有minions会利用pillar/nginx/webserver1.sls剧本, webgroup2所有minions利用pillar/nginx/webserver2.sls剧本, match: nodegroup 界说webgroup1, webgroup2匹配nodegroup组.