安裝情況:
System: Centos 6.3
Salt master: salt-master.example.com
Salt minion: salt-client01.example.com
Salt 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
pillar_roots:
base:
- /srv/pillar
Tip: 這里的nodegroups里的分組會應用到隨后的pillar劇本下, 用來區分差異的salt-minion利用相應的pillar參數, 從而定制差異的minion利用差異的設置方案.
重啟處事
# /etc/init.d/salt-master restart
2. 動態設置客戶端系統毗連數
利用python劇本編寫grains_module, 實現動態設置被控主機毗連數(CLI可用"limit -n"查詢該值), 以便隨后的Nginx設置文件中的worker_rlimit_nofile, worker_connections可動態挪用劇本中max_open_file的參數值.
Tip: "ulimit -n" 是用來查詢當前linux系統的最大打開文件數, 默認為1024
也可用"ulimit -a"來查察其他相關參數
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7819
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
臨時修改當前session的參數值
# ulimit -n 2048
永久修改需修改該參數值
# vi /etc/security/limits.conf
添加:
root soft nofile 2048
root 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 value
def 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 grains
Tip: 該劇本會同步到長途后執行, 劇本實際就是獲取并返回當前主機的最大打開數值, 最終返回值會賦予字典 grains['max_open_file']
同步grains模塊:
# salt '*' saltutil.sync_all
刷新模塊(讓minion編譯模塊)
# salt '*' sys.reload_modules
驗證max_open_file key的value
# salt '*' grains.item max_open_file
Tip: 這里筆者測試變動客戶端最大文件打開值時發明白一個問題, 無論客戶端如何變動這個值, 在驗證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. 設置pillar
1). 界說進口sls
# vi /srv/pillar/top.sls
base:
webgroup1:
- match: nodegroup
- nginx.webserver1
webgroup2:
- match: nodegroup
- nginx.webserver2
Tip: 這里界說webgroup1的所有minions會利用pillar/nginx/webserver1.sls劇本, webgroup2所有minions利用pillar/nginx/webserver2.sls劇本, match: nodegroup 界說webgroup1, webgroup2匹配nodegroup組.