You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无Salt Master权限且不使用编排,如何实现跨Minion的Salt State依赖?

无Salt Master权限下的跨集群State协调方案

因为无法使用Salt Orchestrate,只能在Minion本地执行state.apply,要实现clusterC的iisreset依赖clusterA、clusterB的stop_service执行成功,可采用以下两种方案:

方案一:共享标志文件(半自动化,无需手动干预)

利用共享存储(如NFS、SMB挂载目录)让Minion之间传递执行完成的信号,修改State文件如下:

{% set cluster = grains['prodcluster'] %}
# 替换为所有Minion都能访问的共享目录路径
{% set shared_flag_dir = '/mnt/shared/cluster_flags' %}

# clusterA、clusterB执行停止服务并标记完成
{% if cluster in ["clusterA","clusterB"] %}
stop_service:
  service.dead:
    - name: my_service

mark_cluster_done:
  file.touch:
    - name: {{ shared_flag_dir }}/{{ cluster }}.finished
    - makedirs: true
    - require:
      - service: stop_service
{% endif %}

# 所有集群执行IIS重置,clusterC需等待A、B的标志
reset_iis:
  cmd.run:
    - name: iisreset
    - require:
      {% if cluster == 'clusterC' %}
      - file: wait_for_clusterA
      - file: wait_for_clusterB
      {% else %}
      - service: stop_service
      {% endif %}

# clusterC专属:等待A、B的完成标志
{% if cluster == 'clusterC' %}
wait_for_clusterA:
  file.wait_for_exists:
    - name: {{ shared_flag_dir }}/clusterA.finished
    - timeout: 300  # 超时时间,单位秒,可按需调整

wait_for_clusterB:
  file.wait_for_exists:
    - name: {{ shared_flag_dir }}/clusterB.finished
    - timeout: 300
{% endif %}

执行说明

  1. 确保所有Minion已挂载指定的共享目录,且有读写权限
  2. 同时在所有三个集群的Minion上执行state.apply your_state_name:
    • clusterA、clusterB会先停止服务,完成后创建标志文件
    • clusterC会持续等待两个标志文件出现,待检测到后自动执行IIS重置

方案二:手动分阶段执行(完全依赖人工确认)

如果没有可用的共享存储,可分两步手动执行:

  1. 第一阶段:仅在clusterA、clusterB的所有Minion上执行State,完成服务停止:

    salt-call state.apply your_state_name
    

    执行完成后,手动确认所有clusterA、clusterB的my_service已停止。

  2. 第二阶段:在clusterA、clusterB、clusterC的所有Minion上执行State,触发IIS重置:

    salt-call state.apply your_state_name
    

    此时clusterA、clusterB会直接执行iisreset(因为stop_service已完成),clusterC也会执行iisreset。

内容的提问来源于stack exchange,提问作者aven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:23:23