saltstack学习-1:saltstack介绍、部署、常见问题处理

salt介绍

  • salt是一个基础平台管理工具,配置文件批量修改,文件同步
  • salt是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据

salt的核心功能

  • 是命令发送到远程系统,而且是并行发送不是串行的
  • 使用安全加密协议
  • 对网络要求比较低,使用最小最快的网络载荷
  • 提供简单的编程接口(salt使用python开发)

salt的优点

saltstack使用python语言编写,相当轻量级。 http://www.python.org

saltstack通讯层采用ZeroMQ PUB-SUB pattern实现,使得它很快速。http://www.zearmq.org

saltstack是开源的,通过python可以自己编写模块。

salt端口说明

salt-master启动时会启动两个端口

  • 4505:为salt的消息发布专用端口 
  • 4506:位客户端与服务端通信的端口。  ---监控此端口可以监控哪些minion收到的消息,并回复了结果。

配置文件详解  ---待整理

salt-master和salt-minion配置文件说明,待整理

官网

开发语言:python

工作方式:master/minion(ZeroMQ),Masterless,Salt-SSH(0.17+)

官网:www.saltstack.com

中文官网:www.saltstack.cn

GitHub:http://github.com/saltstack/salt

注意:

  • centos5/redhat5 版本总的zeromq版本默认是2.1.9,存在keepalive bug,需要升级到3以上的版本。
  • 配置文件语法要符合yaml语法,比如:冒号后面要有一个空格。
  • salt要求python最低为python2.6

SaltStack通讯原理概述

image

Salt的KEY管理

  • salt数据传输加密采用AES加密,同事master和minion端采用key管理;
  • minion只有先被master接受(accepted)key后,才能进行管理,同事master端的pub key也会传递到minions上,实现更安全的双向认证;
  • keys默认保存在/etc/salt/pki目录下;
  • 管理工具:salt-key

salt命令详解   ---待整理

salt-key

一、环境准备

1,配置yum源,---salt使用的是epel源

使用阿里云的源:rpm -ivh http://mirrors.yun-idc.com/epel//6/x86_64/epel-release-6-8.noarch.rpm

2,规划主机,配置主机名

IP 主机名 部署应用
10.80.0.161 salt-masterold salt-master
10.80.0.162 salt-masternew salt-master
10.80.0.163 dns01 salt-minion
10.80.0.164 dns02 salt-minion

二、在两台master主机,安装salt-master应用,并启动程序

1,安装master应用,添加开机自启动

[root@localhost ~]#yum install –y salt-master
[root@localhost ~]#chkconfig salt-master on

2,修改配置文件

#log_level: warning
log_level: debug           #调试时将日志级别调整为debug级别

3,启动master程序

[root@localhost ~]#/etc/init.d/salt-master start

4,常用命令和参数

  • salt-key  参数
-a 接受指定minion  
-A 接受所有minion  
-r 拒绝指定minion  
-R 拒绝所有minion  
-d 删除指定minion  
-D 删除所有minion  
-y 默认yes  

    

三、在两台minion主机,安装salt-minion应用,修改配置文件,并启动程序

1,安装minion应用,添加开机自启动

[root@localhost ~]#yum install –y salt-minion
[root@localhost ~]#chkconfig salt-minion on

2,修改minion配置文件

[root@localhost ~]#vi /etc/salt/minion

#master: salt                  minion配置文件中,默认master配置的为salt,此处可以修改为master的IP地址,也可以在/etc/hosts中增加映射,此处我按照第二种方式修改
log_level: debug               调试过程日志级别修改为debug级别,生产系统可根据实际情况配置

[root@localhost ~]#vi /etc/hosts,在文件末尾增加一条记录

10.80.0.162  salt

3,测试与master主机是否连通

[root@dns01 ~]# ping salt
PING salt (10.80.0.162) 56(84) bytes of data.
64 bytes from salt (10.80.0.161): icmp_seq=1 ttl=64 time=0.351 ms
64 bytes from salt (10.80.0.161): icmp_seq=2 ttl=64 time=0.231 ms

3,启动minion程序

[root@localhost ~]#/etc/init.d/salt-minion start

四、常见案例

1,minion修改主机名(以dns01为例)

  • minion修改主机名  /etc/network
  • minion删除缓存(包括荣主机名文件和key文件) rm –rf /etc/salt/minion_id;rm –rf /etc/salt/pki
  • master删除dns01的key,salt-key –d dns01
  • 重启minion程序,/etc/init.d/salt-minion restart

   ------结束

注:

  • 如果再master不删除minion的key,有可能minion程序启动后,会自动杀死自己。原因是:minion启动后,会生成自己的key(主机名、IP地址和一些其它信息联合生成的),当向master注册后,会保存一个master的key。当主机名修改后自己的key会改变,如果master不删除之前minion的key,不仅会注册失败,minion还会杀死自己的进程;
  • minion的主机名会缓存到/etc/salt/minion_id文件里面,修改主机名后需要删除这个文件;

2,master更换主机,所有minion迁移至新的master

思路(原理):

  • 对minion而言只认master服务器上的的key与minion自己保存的master的key是否有冲突,没有冲突就不会有问题
  • minion要执向新的master的地址

操作步骤:

第一步:将masterold上的所有key文件打包上传到masternew服务器上,解压,然后重启master

[root@saltmasterold]# tar -zcvf pki.tar.gz /etc/salt/pki/
[root@saltmasterold]# scp pki.tar.gz 10.80.0.162:/etc/salt/pki/
[root@saltmasternew]# cd /etc/salt/;tar -zxvf pki.tar.gz
[root@saltmasternew]#/etc/init.d/salt-master restart
[root@saltmasternew]#salt-key -L
Accepted Keys:
dns01
dns02
Denied Keys:
Unaccepted Keys:
Rejected Keys:

第二步:修改所有minion配置文件,将master执向新的地址

[root@saltmaster salt]# salt '*' cmd.run "sed -i 's/162/161/g' /etc/hosts"
dns02:
dns01:

第三步:验证是否修改成功

[root@saltmaster salt]# salt '*' cmd.run 'grep salt /etc/hosts'
dns02:
    10.80.0.161  salt
dns01:
    10.80.0.161  salt

第四步:重启所有minion服务

[root@saltmaster salt]# salt '*' service.restart salt-minion
dns02:
    True
dns01:
    True

第五步:在masternew上验证是否接管了所有minion

[root@masternew]# salt '*' test.ping
dns01:
    True
dns02:
    True

------迁移结束

原文地址:https://www.cnblogs.com/snailshadow/p/8005341.html