Skip to content

Latest commit

 

History

History
130 lines (92 loc) · 8.77 KB

20-4.SALT-SYNDIC-Salt分区管理.md

File metadata and controls

130 lines (92 loc) · 8.77 KB

SALT SYNDIC - Salt分区管理

最典型的Salt组网拓扑结构是由一个Master节点控制一组Minion节点所组成的。 通过使用称为Syndic(字面原义为地方行政官)的中间节点类型,在构建Salt网络拓扑时,相比仅使用由Master和Minion节点类型构造的拓扑,提供了更大的结构上的灵活性和可伸缩性。

Syndic节点可以被认为是一个特殊的直通Minion节点。 Syndic节点由salt-syndic守护程序和在同一系统上运行的salt-master守护程序组成。 在Syndic节点上运行的salt-master守护程序控制一组较低级别的Minion节点,salt-syndic守护程序则连接更高级别的Master节点,有时称为Master of Masters。

salt-syndic守护程序为上级Master节点和本地salt-master守护程序提供发布和事件的中继服务。 这使Master节点也可以间接控制到连接到Syndic节点上运行的salt-master守护程序的那些Minions节点。

配置SYNDIC

要设置Salt Syndic,需要让Syndic节点及它的上级Master节点互相知道对方的信息。 如果你的Master节点位于10.10.0.1,那么你需要按下面的方法进行配置。

在Syndic节点上面:

# /etc/salt/master
syndic_master: 10.10.0.1  # may be either an IP address or a hostname
# /etc/salt/minion

# id is shared by the salt-syndic daemon and a possible salt-minion daemon
# on the Syndic node
id: my_syndic

在Master节点上面:

# /etc/salt/master
order_masters: True

syndic_master选项,告诉Syndic节点在哪里找到自己的上级Master节点,与我们使用master选项告诉Minion节点去哪里找到master节点的方式相似。

id选项,salt-syndic守护进程使用id选项来标识自己,如果未设置,则默认为Syndic的主机名或IP地址,就像使用Minion时的配置方法一样。

order_masters选项,配置该选项后会让Master节点在常规的事件和发布消息之外,额外发送与Syndic节点服务管理有关的消息。

注意

每个Syndic都必须使用和维护好自己的file_roots目录。发布操作使用的数据文件并不会自动地从上级Master节点传输过来。

在MULTIMASTER架构中配置SYNDIC服务

New in version 2015.5.0.

使用Multimaster的Syndic可以连接到多个Masters服务器,为Syndic管理的minions节点提供了一个额外的冗余层次,提高了可用性水平。这需要首先把Syndic所使用的上级Masters配置为多主架构。 配置方法请参阅Multimaster配置教程

在syndic上,使用syndic_master选项来定义更高级别的master的列表。

由于每个syndic都连接到每一个master,因此从任何master发送的job任务都会转发给连接到syndic的minions。 如果在更高级别Master服务器上的master config配置文件中设置了master_id这个选项值,则job的执行结果将会优先返回到发起这个job请求的那个Master服务器。 在没有设置master_id选项时,事件/作业的处理结果将返回给任何一个可用的master节点。

运行SYNDIC

salt-syndic守护程序是一个单独的进程,除了在Syndic节点上运行salt-master守护程序之外,还需要启动salt-syndic程序。 启动salt-syndic守护程序的方法与启动其他Salt守护程序的方法相似。

Salt Master节点在许多方面将Syndic视为普通的Minion节点。 特别的是,Master也需要接受Syndic的Minion认证密钥,就像任何其他普通Minion一样。

在Syndic节点上面执行:

# salt-syndic
or
# service salt-syndic start

在Master节点上面执行:

# salt-key -a my_syndic
  • 上面假定是你的Syndic节点设置id选项值为my_syndic

Master节点现在就可以控制连接到Syndic的Minions节点了。 只有Syndic节点的密钥才会列在Master节点的密钥注册表中,但这也意味着Syndic的Minions和Syndic之间的密钥认证管理不会成为Master节点的干扰。 通过这种方式,可以将Syndic在Master节点上的密钥视为其下方所有Minions节点和Syndic节点本身密钥的一个共同占位符,从而为 Salt Master 节点提供了一个清晰的高层级结构视图。

我们假定当前的测试环境中,有4个minions节点接入到了Salt Syndic服务中,而Syndic又接入到上级的Salt Master管理中。那么我们在Master节点上查看密钥列表信息,并执行一个test.ping的测试,会得到类似下面的输出结果。

在Master节点上执行:

# salt-key -L
Accepted Keys:
my_syndic
Denied Keys:
Unaccepted Keys:
Rejected Keys:

# salt '*' test.ping
minion_1:
    True
minion_2:
    True
minion_4:
    True
minion_3:
    True

程序运行的拓扑结构

在Salt Master节点上(本身不是另一个更高级别Master节点的Syndic的节点)必须运行salt-master守护程序和可选的salt-minion守护程序。

Syndic节点则必须同时运行salt-syndic和salt-master守护进程以及可选的salt-minion守护进程。

Minion节点必须运行salt-minion守护程序。

当salt-master守护程序发出命令时,它将由直接连接到它的Syndic和Minion节点接收。 Minion节点将以通常的方式处理命令。 在Syndic节点上,salt-syndic守护程序将该命令中继到Syndic节点上运行的salt-master守护程序,然后该节点再将命令传播到与其连接的Minions和Syndics。Syndic支持级联。

当salt-minion守护进程生成事件和作业的返回数据时,会先由它们所连接的salt-master守护进程进行聚合,然后salt-master守护进程再通过其salt-syndic守护进程将数据中继回来,直到数据到达上级的Master节点 或发出命令的上级Syndic节点。

SYNDIC WAIT选项

syndic_wait是一个Master配置文件中的配置选项,它指定了Salt Client在放弃之前应等待其他syndics检查其预期的minions列表的秒数。 该值默认为5秒。

syndic_wait选项的设置是有必要的,因为在更高级别的Master没有办法知道在syndic节点下面有哪些minions。 更高级别的Master有自己的预期minions列表,在他们下面的Masters也会有他们自己的预期连接的minions列表。所以Salt Client不会知道要等待所有的返回需要多少的时间。 syndic_wait选项定义了一个允许所有minions返回结果给Salt Client的超时时间。

注意

要减少CLI客户端等待Minions响应的时间,请在Syndic上安装Minion或调整syndic_wait配置的值。

虽然可以在不安装Minion的条件下运行Syndic服务,但为了得到更快的CLI响应,建议还是安装一个minion服务。 如果没有在Syndic节点上安装Minion,syndic_wait的超时值会显着增加(大约三倍)。 在Syndic上安装Minion后,CLI超时将保持在syndic_wait中定义的值。

注意: 如果你有一个非常大的基础设施或多层的Syndics,你可能会发现CLI没有等待足够长的时间,让所有Syndics返回其事件。 如果遇到了这种情况,则可以在执行命令的Master节点或Syndic节点上的Master配置中设置上syndic_wait选项的值。 默认值为5,应该适用于大多数的部署场景。

综上所述,为了使Master或Syndic节点从其Syndics下方的Minions返回信息,CLI需要等待一个较短的时间,以便允许Syndics收集来自其Minions的响应。 此值在syndic_wait配置选项中定义,默认值为五秒。

SYNDIC 服务的配置选项

这些是可用于配置Syndic服务节点的选项。 请注意,除了id选项(在Minion配置文件中)之外,Syndic服务的配置选项都放在Syndic节点的Master配置文件中。

  • id: Syndic id (由 salt-syndic daemon 和 salt-minion daemon 所共享)
  • syndic_master: Master node IP address or hostname
  • syndic_master_port: Master node ret_port
  • syndic_log_file: 日志文件路径 (absolute or not)
  • syndic_pidfile: pidfile文件路径 (absolute or not)
  • syndic_wait: 该syndic服务节点等待minions返回结果的超时时间

MINION DATA CACHE

从Salt 2016.11.0版本开始,引入了Pluggable Minion Data Cache的功能。 在Minion data cache中可以包含那些缓存在Salt Master上的Salt Mine data、minion grains和minion pillar信息。 默认情况下,Salt使用localfs缓存模块,但也可以使用其他外部数据存储。

使用可插拔的minion cache模块后,就可以允许存储在Salt Master上的关于Salt Minions的数据被复制到Minion所连接的其他Salt Masters上了。 有关更多信息和配置示例,请参阅Minion Data Cache文档。