1. master key共享
当初始化安装 minion 启动服务启动后
minion端生成一个秘钥对,并产生一个ID值,minion服务会安装ID值命名的公钥发送给 master ,直到接受为止;
master认证完毕后,会将minion 端发送来的,以ID值命名的公钥存放在 /etc/salt/pki/master/minions 目录中(无扩展名);
master认证完毕后,会将自身的公钥发送给 minion,并存储为 /etc/salt/pki/minion/minion_master.pub.
启动master1,copy master1 的key到master2对一个的位置,并启动master2
/etc/salt/pki/master/master.pem、master.pub
此处需要注意,本人一开始只共享了master.pem,minion启动起来,两个master都完成认证时,就会死掉,再共享master.pub 就可以使用了
2. minion 端配置 multi-master
minion配置文件中的master如下:
master:
- master1
- master2
3. master端接收minion key,完成认证
minion以串行的方式向master发送认证请求,一般是先验证minion配置中的第一个master(master1),master1认证完成后,在向master2发送认证请求,所以在master1还没认证时在master2上找不到minion认证请求的key,先去master1上认证
4.多master之间保持一致的文件及目录
直接把master .ssh下文件复制过来,共用一个key
保持master的配置内容一致,主要是file_roots,external_auth等的配置一致,若是配置了nodegroup 需要保持nodegroup 的文件内容及地址一致
保持master的file_roots(保存salt配置脚本文件),可以放在第三方软件库svn、git库,也可放在一个共享的ftp等
在使用的时候可以只调用master1,在master1无法连接时自动使用master2来控制minion
5. minion keys可以参考使用:
方案一:自己写shell脚本,定时同步
*/5 * * * * rsync -avP --delete --timeout=30 root@192.168.xxx:/etc/salt/pki/master/minions/ /etc/salt/pki/master/minions/
方案二:修改salt-key的源代码:
当主master有accept的时候同步给备master,在配置文件中配置备机IP,只有两边同步成功了才算成功;
删除minion的时候只用通过salt-key -d的方式删除,或者配合rsync的方式,防止通过rm的方式删除minion。
备注:
配置multi-master主要的问题是:每一个master使用相同的private key. Private key在master第一次启动时自动生成的(注意:配置multi-master时,一定要在启动新master前将老master的private key copy到对应目录)。
注意:
minion可以自动检测失败的master,并且尝试重连到一个更快的master,将minion端的参数master_alive_interval 设置为true,即可开启该功能。