生产环境不可能跟演示环境一样理想,针对不同的网络情况,minion数量和主机规格等等,可能会需要对master以及minion的配置做出各种优化。这一节我们就一起来看看master和minion的配置文件中的几个关键配置项。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
文章目录
Master关键配置
/etc/salt/master配置文件详解
-
interface: 0.0.0.0
监听的本机网卡地址,如果是0.0.0.0
表示所有网卡。 -
publish_port: 4505
zeroMQ的发布端口,默认4505。这个端口号会在minion第一次做认证的时候下发给minion。 -
user: root
可以在这里改为普通用户来运行master,权限会自动更新。 -
max_open_files: 100000
这个比较常使用,但是还受限制于linux本身的最大打开文件数。
linux中一切都是文件,每个tcp连接都至少消耗一个文件描述符。linux中查看当前所有进程文件打开数lsof | wc -l
,但是一个文件可以被多个进程打开,所以前面这个命令偏多,用cat /proc/sys/fs/file-nr
或者sysctl -a | grep fs.file-nr
查看会比较准。查看某进程打开的文件数lsof -p pic | wc -l
,查看某端口打开的文件数lsof -i:port | wc -l
。修改用户级别限制,要改两个地方,一个是ulimit -n 100000
,还有一个是/etc/security/limits.conf * soft nofile 100001* hard nofile 100002
client能支持的最多连接数为65535-1024=64511
个,server端是在同一个端口监听,理论上最多可以建立的连接数为ip数*port数
也就是232*64511。
-
worker_threads: 5
对应的是后台zeroMQ的进程个数,一般来说不用变。如果管理的minion达到成千上万个,可能会出现master反应较慢的情况,可以考虑适当增大这个值。 -
ret_port: 4506
用于接收minion返回消息的接口,需要和minion配置中的master_port配置项保持一致。 -
pidfile: /var/run/salt-master.pid
指名pid文件。 -
root_dir: /
如果要将salt从另外一个root进行启动,需要更改这个配置,一般不用变。 -
pki_dir: /etc/salt/pki/master
每个加入的minion都会发送自己的public key给master,master必须要选择接受才可以和对应的minion进行通讯。这个目录就是用来存放minion的public key的地方。 -
cachedir: /var/cache/salt/master
对于执行命令结果等的缓存目录,如果允许minion上传文件到master那么也会保存在这里。 -
keep_jobs: 24
对于旧命令结果的保存时常,单位是小时。如果规模较大,命令较多,可以考虑缩短这个时长。 -
timeout: 5
master在下发命令的时候会给每个命令按照时间戳生成一个jid
,因为是异步下发命令,如果等了这个timeout的时长,所有的minion没有全部返回执行结果的话,master会执行一个find_job
命令去查找对应jid的执行状况。如果发现对应的jid还在执行,则会继续等待一个timeout时长,并且赋予该任务一个新的jid,一直到任务执行完成为止。例如一个需要执行13秒的任务就会有3个jid被下发。有一种情况是过了timeout,发现对应的jid还没有开始执行,那么对应的任务就会没有返回结果。对于网络情况较复杂,延迟较大,或者是minion机器配置较低的情况,需要增大这个数值。 -
job_cache: True
当minion数超过5000个的时候建议关掉任务缓存,采用别的方式来保存历史命令结果。 -
minion_data_cache: True
为了提高速度可以在master上开启minion的grains和pillar的缓存。 -
open_mode: False
为了安全考虑这里保持默认的False。 -
auto_accept: False
测试环境可以让master去自动接受minion的key,但是生产环境还是要保持默认的False,不然会很危险。 -
client_acl:
默认情况下只有上面指定的用户具有向minion下发命令的权限,默认是root,普通用户是没有的。这里可以对普通用户开放几种指定的命令供其执行,默认情况下这个功能是关闭的。 -
client_acl_blacklist:
可以对用户级别和模块级别设置黑名单,阻止某些用户去执行命令,或者阻止所有用户去执行某个模块。默认情况下这个功能是关闭的。 -
file_recv: False
是否允许minion上传文件到master,处于安全考虑这个默认是不允许的。如果想要从minion上传文件到master,需要用到salt.modules.cp.push
这个命令,上传的文件会保存在上面设置的cachedir
中,默认是/var/cache/salt/master/minions/minion-id/files
。 -
state_top: top.sls
这个是设定state系统的入口文件,在salt.modules.state.apply
不带任何参数的时候使用。一般不会修改这个配置,需要注意pillar系统也会受这个配置的影响。 -
file_roots:
指定sls文件存放的路径。默认情况下目录是没有被创建的,需要手动创建。 -
fileserver_backend:
master上的文件服务系统,默认情况下是用的roots,也就是上面说的file_roots
。 -
pillar_roots:
指定pillar的sls文件的存放路径。默认情况下目录是没有被创建的,需要手动创建。
Minion关键配置
一般情况下对于minion只是需要指定master的地址,其余用默认配置即可,配置文件在/etc/salt/minion。
-
master: salt
如果没有对salt的DNS解析,可以在这里改为master的IP地址。 -
ipv6: False
如果启用ipv6去连接master,这个开关需要打开。 -
master_port: 4506
这个地方必须要和master里面的ret_port
保持一致。 -
user: root
建议保持root去运行minion,因为很多操作,例如安装软件,或者是启动停止服务,都必须要root权限才可以。 -
id:
salt中是以id去标识一个主机,一台主机即使ip换了,主要id不变都会被认为是同一台主机。默认情况下以当前minion的主机hostname做为id。 -
grains:
可以去自定义该minion的grains,因为grains数据不会经常刷新,所以这里修改了以后要手动去master上跑salt xxx saltutil.refresh_modules
进行刷新。 -
cachedir: /var/cache/salt/minion
存放minion端缓存的内容。 -
cache_jobs: False
一般来说在minion上不需要缓存任务执行的结果,因为所有的结果都会发送到master。 -
backup_mode: minion
如果打开这个开关,当使用file.managed
这样的文件操作命令的时候,会首先备份原始目标文件到上面设置的cachedir
目录下的file_backups目录里面。只能被配置为minion,而且默认是关闭的。