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

生产环境不可能跟演示环境一样理想,针对不同的网络情况,minion数量和主机规格等等,可能会需要对master以及minion的配置做出各种优化。这一节我们就一起来看看master和minion的配置文件中的几个关键配置项。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

文章目录

    • Master关键配置
    • Minion关键配置

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

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

你可能感兴趣的:(Saltstack入门到精通教程(六):master和minion关键配置详解)