第二章:SaltStack通信原理3 min read

  • A+
所属分类:SaltStack

 

 

目录:

1. 互发密钥过程.

2. salt通信原理

  

  

1. 互发密钥过程

  

本文以node1master)和node2minion)为例说明

在启动masterminion时会做如下动作:

第二章:SaltStack通信原理 

     

配置目录如下:

master/minion启动前

  1. ##node1  
  2. [root@linux-node1 /]# tree /etc/salt/  
  3. /etc/salt/  
  4. └── master  
  5.   
  6. 0 directories, 1 file  
  7.   
  8. ##node2:  
  9. [root@linux-node2 /]# tree /etc/salt/  
  10. /etc/salt/  
  11. └── minion  
  12.   
  13. 0 directories, 1 file  

 

master/minion启动后:

  1. ##node1  
  2. [root@linux-node1 /]# tree /etc/salt/  
  3. /etc/salt/  
  4. ├── master  
  5. └── pki  
  6.     └── master  
  7.         ├── master.pem  
  8.         ├── master.pub  
  9.         ├── minions  
  10.         ├── minions_autosign  
  11.         ├── minions_denied  
  12.         ├── minions_pre  
  13.         │   └── linux-node2.example.com  #minion启动后向master发送来以id命名的公钥  
  14.         └── minions_rejected  
  15.   
  16. 7 directories, 4 files  
  17.     
  18. ##node2  
  19. [root@linux-node2 /]# tree /etc/salt/  
  20. /etc/salt/  
  21. ├── minion  
  22. ├── minion.d        #有些配置可以放在该目录下  
  23. ├── minion_id       #本机的id写在了这个文件里,意味着改id时需要删除这个文件(1)  
  24. └── pki  
  25.     └── minion  
  26.         ├── minion.pem      #minion的私钥  
  27.         └── minion.pub      #minion的公钥  
  28.   
  29. 3 directories, 4 files  

     

master同意管理minion端后的配置文件:

  1. ##node1  
  2. [root@linux-node1 /]# tree /etc/salt/  
  3. /etc/salt/  
  4. ├── master  
  5. └── pki  
  6.     └── master  
  7.         ├── master.pem  
  8.         ├── master.pub  
  9.         ├── minions   #该目录为master管理minion端的公钥目录  
  10.         │   └── linux-node2.example.com  
  11.         ├── minions_autosign  
  12.         ├── minions_denied  
  13.         ├── minions_pre  
  14.         └── minions_rejected  
  15.   
  16. 7 directories, 4 files  
  17.    
  18. ##node2  
  19. [root@linux-node2 /]# tree /etc/salt/  
  20. /etc/salt/  
  21. ├── minion  
  22. ├── minion.d  
  23. │   └── _schedule.conf  
  24. ├── minion_id  
  25. └── pki  
  26.     └── minion  
  27.         ├── minion_master.pub    #在master接受minion被管理后回向minion发送一个公钥  
  28.         ├── minion.pem  
  29.         └── minion.pub  
  30.   
  31. 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端的压力。

  

  

zhaoyulin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: