我是棒棒冰 發表於 2023-9-20 00:00:00

如何建立多Master的SaltStack环境

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>Master Keys</li><li>Configure Minions</li><li>Sharing Files Between Masters<ul class="second_class_ul"><li>Minion Keys</li><li>file_roots</li><li>pillar_roots</li><li>Master Configuration</li></ul></li><li>Conslusion<ul class="second_class_ul"></ul></li></ul></div><p>0.16.0版本的发布,带来了minion可以连接多Master的特性. 这种方式称为多master( <tt>multi-master</tt> )配置, 使环境中的SaltStack冗余。在这种配置下,Salt Minions将连接所有配置的Salt Master. 本文将带你了解如何建立多Master的环境.</p>
<p> </p>
<div id="master-keys">
<p class="maodian"></p><h2>Master Keys</h2>
<p>在建立多Master的配置中,主要的一点就是所有的Master使用同样的private key. 这些key将在Master第一次启动时自动生成。 因此在多Master环境建立时,需要从原始的(original) Master上拷贝其private key至第二个Master以提供它启动时自动生成的那个, 以此类推.</p>
<p>Master的private key存储在Master本地的 <tt>pki_dir</tt> 目录下. 默认的目录是 <tt>/etc/salt/pki/master/master.pem</tt> . 将该key拷贝到新增的master上. 需要注意的是,在拷贝的时候,需要确保新增的master上并没有minion连接进来.</p>
<p> </p>
</div>
<div id="configure-minions">
<p class="maodian"></p><h2>Configure Minions</h2>
<p>当配置多Master时,Minion需要知道需要连接的每个Master的网络地址. 需要在Minion的配置文件中进行配置,默认的配置文件是 <tt>/etc/salt/minion</tt> 。 找到 <tt>master</tt> 配置项, 更新需要新增的Master.</p>
<p>下边是一个多Master的配置例子:</p>
<div><pre class="brush:bash;toolbar:false">master:
- master1.example.tld
- master2.example.tld</pre></div>
<p>配置完毕后,需要重启Minion以确保配置生效. 此时所有的Master均可以控制你的minions.</p>
<p> </p>
</div>
<div id="sharing-files-between-masters">
<p class="maodian"></p><h2>Sharing Files Between Masters</h2>
<p>Salt并不会自动在Master间共享文件. 本小节将带你了解Master间哪些文件需要同步以保持一致.</p>
<p> </p>
<div id="minion-keys">
<p class="maodian"></p><h3>Minion Keys</h3>
<p>Minion的keys需要每个Master都进行accept. 可以使用 <tt>salt-key</tt> 手动接接受minion的key, 也可以在Master间保持key目录的同步. 需要同步的目录有:</p>
<p>/etc/salt/pki/master/minions<br>
/etc/salt/pki/master/minions_pre<br>
/etc/salt/pki/master/minions_rejected</p>
<div>
<p>直接共享 <tt>/etc/salt/master</tt> 目录是强烈反对的. 允许外部访问 master.pem key将带来严重的安全风险.</p>
<p> </p>
</div>
</div>
<div id="file-roots">
<p class="maodian"></p><h3>file_roots</h3>
<p><tt>file_roots</tt> 的内容需要在Master间同步以保持一致. 这里存放Salt State配置管理文件. 推荐同步内容使用 <tt>gitfs</tt>backend,或者直接将 <tt>file_roots</tt> 存储在共享存储上.</p>
<p> </p>
</div>
<div id="pillar-roots">
<p class="maodian"></p><h3>pillar_roots</h3>
<p>同理,对于 <tt>pillar_roots</tt> 也是如此,需要保持Pillar数据一致.</p>
<p> </p>
</div>
<div id="master-configuration">
<p class="maodian"></p><h3>Master Configuration</h3>
<p>最后你需要确保有关Master的配置选项在所有Master间是同步的. 除非你知道你不需要这么做,你需要保证以下的设置Master间是同步的:</p>
<p>external_auth<br>
client_acl<br>
peer<br>
peer_run</p>
<p> </p>
</div>
</div>
<div id="conslusion">
<p class="maodian"></p><h2>Conslusion</h2>
<p>多Master环境配置提供了控制Minions的冗余性,配置相当简单. 只需要保证key及State文件在你的多Master间是同步的,你就可以透明的在多Master上控制你的Minions。</p>
</div>
頁: [1]
查看完整版本: 如何建立多Master的SaltStack环境