Saltstack学习(五)-架构扩展
一、saltstack多master架构
单台master管理多台minion时,master压力过大,存在单点问题,需要对master做高可用
1.1、多master架构原理
原理说明:
1)minion端配置多个master地址
2)两台master之间的配置文件,状态文件,密钥文件必须相同
方案设计:
1)使用rsync+inotify或sersync实现文件的同步
2)使用nfs共享挂载的方式
1.2、rsync方式
1)安装新的master
yum install salt-master -y #注意:先不要启动
2)同步旧master的配置文件,状态文件,密钥文件到新的master上
#配置文件 rsync -avz /etc/salt/master server-two:/etc/salt/ #密钥文件 rsync -avz /etc/salt/pki/master/master.* server-two:/etc/salt/pki/master/ #master的公钥与私钥 #状态文件 rsync -avz /srv server-two:/
3)修改minion配置,重启minion
# vim /etc/salt/minion master: - server-one - server-two # systemctl restart salt-minion
4)启动新master,并测试
systemctl start salt-master salt-key -A -y salt '*' test.ping
5)实时同步
rsync+inotify
或sersync
方式完成实时同步
脚本思路:
#!/usr/bin/bash Srv_Config=/srv Master_Config=/etc/salt/master Master_New=10.0.0.21 Date=$(date +%F-%T) rsync -avz --delete $Srv_Config $Master_New:/ &>/dev/null && \ rsync -avz --delete $Master_Config $Master_New:$Master_Config &>/dev/null if [ $? -eq 0 ];then echo "$Date Rsync Salt Config Is Ok!" else echo "$Date Rsync Salt Config Is Err!" fi
1.3、NFS挂载方式
待续
二、salt syndic架构
2.1、syndic原理
原理说明:
1)主控master可以控制一群master,通过syndic将操作命令传输给受控master,受控master来完成对自己旗下minion的管理,并将结果传回主控master,从而实现了主控master对所有minion的间接管理。
2)syndic节点上也需要master,,syndic连接主控master
文档:https://docs.saltstack.com/en/latest/topics/topology/syndic.html
2.2、syndic配置
环境说明:
master | syndic | minion |
10.0.0.11 |
10.0.0.21 |
10.0.0.22,10.0.0.23 |
1)配置顶级master
[root@salt-master srv]# yum install salt-master -y [root@salt-master srv]# vim /etc/salt/master order_masters: True #打开表示master与syndic通信 [root@salt-master srv]# systemctl restart salt-master
2)配置syndic
[root@syndic ~]# yum install salt-syndic -y [root@syndic ~]# vim /etc/salt/master # If this master will be running a salt syndic daemon, syndic_master tells # this master where to receive commands from. syndic_master: - 10.0.0.11 #配置master的ip地址 [root@syndic ~]# systemctl restart salt-master [root@syndic ~]# systemctl restart salt-syndic
3)配置minion
两台执行相同操作
[root@salt-minion2-c7 ~]# yum install salt-minion -y [root@salt-minion2-c7 ~]# vim /etc/salt/minion master: - 10.0.0.21 #配置syndic的地址 [root@salt-minion2-c7 ~]# systemctl restart salt-minion #如果之前已经添加过受信任的Master需要删除对应的key,然后重启 rm -f /etc/salt/pki/minion/minion_master.pub
4)master添加syndic key信任,syndic添加minion key信任
#master上 [root@salt-master srv]# salt-key -A -y [root@salt-master srv]# salt-key -L Accepted Keys: salt-minion1-c7 Denied Keys: Unaccepted Keys: Rejected Keys: #syndic上 [root@syndic minion]# salt-key -A -y [root@syndic minion]# salt-key -L Accepted Keys: salt-minion2-c7 salt-minion3-c7 Denied Keys: Unaccepted Keys: Rejected Keys: #master上测试 [root@salt-master ~]# salt '*' test.ping #显示的是两台minion,说明master知道有多少台minion,但不知道多少syndic salt-minion2-c7: True salt-minion3-c7: True #syndic上测试 [root@syndic minion]# salt '*' test.ping salt-minion2-c7: True salt-minion3-c7: True
说明:syndic的file_root、pillar_root
必须与高级master
一致,master知道有多少台minion,但不知道多少syndic
三、salt masterless架构(无主架构)
Salt
脱离Master
独立运行,这种状态可以称为无master
的salt
这种模式可以用于登陆minion
后的一些调试任务,可以将状态文件配置在本地进行执行
文档:https://docs.saltstack.com/en/latest/topics/tutorials/quickstart.html
3.1、无主架构配置
1)配置minion为本地执行模式
[root@salt-minion3-c7 ~]# vim /etc/salt/minion file_client: local file_roots: base: - /srv/salt/ pillar_roots: base: - /srv/pillar [root@salt-minion3-c7 ~]# systemctl restart salt-minion
2)编写本地sls文件
[root@salt-minion3-c7 ~]# cat /srv/salt/demo.sls pkg-demo: pkg.installed: - pkgs: - screen - nmap
3)使用salt-call本地执行
[root@salt-minion3-c7 ~]# salt-call --local state.sls demo [root@salt-minion3-c7 ~]# salt-call --local cmd.run 'w' local: 13:43:23 up 4:20, 1 user, load average: 0.01, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 09:26 3.00s 0.82s 0.02s w
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!