- A+
目录:
1. 互发密钥过程
本文以node1(master)和node2(minion)为例说明
在启动master和minion时会做如下动作:
配置目录如下:
master/minion启动前
- ##node1
- [root@linux-node1 /]# tree /etc/salt/
- /etc/salt/
- └── master
- 0 directories, 1 file
- ##node2:
- [root@linux-node2 /]# tree /etc/salt/
- /etc/salt/
- └── minion
- 0 directories, 1 file
master/minion启动后:
- ##node1
- [root@linux-node1 /]# tree /etc/salt/
- /etc/salt/
- ├── master
- └── pki
- └── master
- ├── master.pem
- ├── master.pub
- ├── minions
- ├── minions_autosign
- ├── minions_denied
- ├── minions_pre
- │ └── linux-node2.example.com #minion启动后向master发送来以id命名的公钥
- └── minions_rejected
- 7 directories, 4 files
- ##node2
- [root@linux-node2 /]# tree /etc/salt/
- /etc/salt/
- ├── minion
- ├── minion.d #有些配置可以放在该目录下
- ├── minion_id #本机的id写在了这个文件里,意味着改id时需要删除这个文件(1)
- └── pki
- └── minion
- ├── minion.pem #minion的私钥
- └── minion.pub #minion的公钥
- 3 directories, 4 files
master同意管理minion端后的配置文件:
- ##node1
- [root@linux-node1 /]# tree /etc/salt/
- /etc/salt/
- ├── master
- └── pki
- └── master
- ├── master.pem
- ├── master.pub
- ├── minions #该目录为master管理minion端的公钥目录
- │ └── linux-node2.example.com
- ├── minions_autosign
- ├── minions_denied
- ├── minions_pre
- └── minions_rejected
- 7 directories, 4 files
- ##node2
- [root@linux-node2 /]# tree /etc/salt/
- /etc/salt/
- ├── minion
- ├── minion.d
- │ └── _schedule.conf
- ├── minion_id
- └── pki
- └── minion
- ├── minion_master.pub #在master接受minion被管理后回向minion发送一个公钥
- ├── minion.pem
- └── minion.pub
- 3 directories, 6 files
2. salt通信原理
salt-master怎么给minion发消息?
Master有端口为4505和4506,salt默认用的一个消息队列,叫做zeromq,在装salt的时候默认会装py-zeromq的包,这是个消息队列,消息队列有个最经典的模式就是发布与订阅,发布与订阅就相当于你订了一份报纸,每天都有报纸发给你。salt所有的minion都链接到了salt-master的4505这个端口上,使用命令 lsof -n -i:4505 查看那些与我的4505端口建立了链接。当salt-master在4505发布消息的时候所有minion都会收到消息,所以说salt是并行的。
4505发送,4506用来接收
通信原理:我在发这个指令时所有的minion都会收到,只是minion端做不做完全看我们指定了那台服务器。
疑惑:有没有必要所有的minion都收到?
答案是有的,如果我指定谁谁就能收到,这样就需要master端来进行判断,会加大master端的压力,比如如果在master段进行判断,minion上面有个动态的值,master端需要去获取,这时master会全部收集过来进行判断,然后再去获取,这就加大了master端的压力。