Saltstack入门到精通教程(六):master和minion关键配置详解

  • Post author:
  • Post category:其他


生产环境不可能跟演示环境一样理想,针对不同的网络情况,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数

也就是2

32

*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文件的存放路径。默认情况下目录是没有被创建的,需要手动创建。

  • pillar_opts: True

    如果查看minion的pillar内容,发现有一个名叫

    master

    的pillar的话,那是把master的配置做为pillar下发给了minion。可以通过将这个配置改为False来取消这个pillar。

  • nodegroups:

    将多个minion主机组成一个集合,并给一个名字,方便进行批量的目标筛选。书写的格式和前面提到的组合筛选的格式一样,可以参考

    官方文档

    获取更多信息。

nodegroups:
  group1: 'G@os:Ubuntu'

做targeting的时候用

-N

参数,例如

root@saltmaster:/home/vagrant# salt -N group1 test.ping



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,而且默认是关闭的。



版权声明:本文为Victor2code原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。