Saltstack 集中化管理平台安装
Saltstack的简介
SaltStack(http://www.saltstack.com/)是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet(http://puppetlabs.com/)和加强版的func(https://fedorahosted.org/func/) Ansible。
SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。有如下特性:
部署简单、方便;
支持大部分UNIX/Linux及Windows环境;
主从集中化管理;
配置简单、功能强大、扩展性强;
主控端(master)和被控端(minion)基于证书认证,安全可靠;
支持API及自定义模块,可通过Python轻松扩展。
通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。目前Saltstack已经趋向成熟,用户群及社区活跃度都不错,同时官方也开放了不少子项目,具体可访问https://github.com/saltstack获得。
SaltStack支持多种操作系统,如CentOS、RedHat、Debian、Ubuntu、FreeBSD、Solaris、Fedora、SuSe、Gentoo、MAC OS X、Archlinux等,以及Windows(仅支持Minion)。
官方文档:http://docs.saltstack.com
中国SaltStack用户组:http://www.saltstack.cn
Saltstack的安装
Saltstack的不同角色服务安装非常简单,建议采用yum源方式来实现部署,下面简单介绍具体步骤。
1.业务环境说明
通过部署一组业务功能服务器来进行演示,操作系统版本为CentOS release 6.5,自Python 2.6.6,相关服务器信息如表。
| 
 角色  | 
 ID  | 
 IP  | 
 Groupsnmode  | 
| 
 master  | 
 saltstack_master.test.com  | 
 192.168.1.182  | 
|
| 
 minion  | 
 saltstack_web1group_1  | 
 192.168.1.183  | 
 web1group  | 
| 
 minion  | 
 saltstack_web1group_2  | 
 192.168.1.184  | 
 web1group  | 
修改master服务端hosts文件及master端/minion端主机名;
[root@saltstack-master salt]# vim /etc/hosts
192.168.1.182 saltstack_master.test.com
192.168.1.183 saltstack_web1group1_1
192.168.1.184 saltstack_web1group1_2
[root@saltstack-master salt]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=saltstack_master.test.com
[root@saltstack_web1group_1 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=saltstack_web1group1_1
[root@saltstack_web1group_2 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=saltstack_web1group1_2
挂载光盘,安装EPEL,由于目前RHEL官网yum源还没有Saltstack的软件包支持,因此先安装EPEL作为部署Saltstack的默认yum源。
[root@saltstack-master ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@saltstack-master ~]# rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
Retrieving https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
warning: /var/tmp/rpm-tmp.ZGqN4N: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing... ########################################### [%]
:epel-release ########################################### [%]
主服务器安装Saltstack
[root@saltstack-master ~]# yum -y install salt-master
Complete!
[root@saltstack-master ~]# chkconfig salt-master on
[root@saltstack-master ~]# service salt-master start
Starting salt-master daemon: [确定]
从服务器安装Saltstack
[root@saltstack_web1group_1 ~]# yum -y install salt-minion
[root@saltstack_web1group_1 ~]# chkconfig salt-minion on
[root@saltstack_web1group_1 ~]# service salt-minion start
Starting salt-minion daemon: [确定]
[root@saltstack_web1group_2 ~]# yum -y install salt-minion
[root@saltstack_web1group_2 ~]# chkconfig salt-minion on
[root@saltstack_web1group_2 ~]# service salt-minion start
Starting salt-minion daemon: [确定]
SaltStack防火墙配置
SaltStack master启动后默认监听 4505 和 4506 两个端口。
4505:publish port 为 saltstack 的消息发布系统
4506:ret port 为 saltstack 被控制与服务端通信的端口。
如果使用 lsof 查看4505端口,会发现所有的 minion 在4505端口持续保持在ESTABLISHED状态。
在主控制端添加TCP 4505,TCP 4506的规则,而在被控端无须配置防火墙,原理是被控端直接与主控端的zeromq建立长连接,接受广播到的任务信息并执行,添加两条iptables规则:
[root@saltstack-master ~]# iptables -I INPUT -m state --state new -m tcp -p tcp --dport -j ACCEPT
[root@saltstack-master ~]# iptables -I INPUT -m state --state new -m tcp -p tcp --dport -j ACCEPT
更新 SaltStack 配置及安装校验
Saltstack分两种角色:一种为master(主控端),另一种为minion(被控端),安装完毕后要对两种角色的配置文件进行修改。
master 主控端配置
[root@saltstack-master ~]# vim /etc/salt/master
interface: 192.168.1.182 #绑定master通信IP
auto_accept: True #自动认证,避免手动运行salt-key来确认证书信任
file_roots: #指定Saltstack文件根目录位置
base:
- /srv/salt/
[root@saltstack-master ~]# service salt-master restart
Stopping salt-master daemon: [确定]
Starting salt-master daemon: [确定]
minion被控端配置
[root@saltstack_web1group_1 ~]# vim /etc/salt/minion
master: 192.168.1.182 #指定master主机IP地址
id: saltstack_web1group_1 #修改被控端主机识别id,建议使用操作系统主机名来配
[root@saltstack_web1group_1 ~]# service salt-minion restart
Stopping salt-minion daemon: [确定]
Starting salt-minion daemon: [确定]
[root@saltstack_web1group_2 ~]# vim /etc/salt/minion
master: 192.168.1.182
id: saltstack_web1group_1
[root@saltstack_web1group_2 ~]# service salt-minion restart
Stopping salt-minion daemon: [确定]
Starting salt-minion daemon: [确定]
Saltstack master minion 配置文件
Master端的配置是修改/etc/salt下master配置文件。以下是Master端常用的配置。
interface:指定bind 的地址(默认为0.0.0.)
publish_port:指定发布端⼝(默认为4505)
ret_port:指定结果返回端⼝,与minion配置⽂件中的master_port对应(默认为4506)
user:指定master 进程的运⾏⽤户,如果调整,则需要调整部分目录的权限(默认为root)
timeout:指定timeout时间,如果minion规模庞大或网络状况不好,建议增⼤该值(默认5s)
keep_jobs:默认情况下,minion会执⾏结果会返回master,master会缓存到本地的cachedir ⺫录,该参数指定缓存多⻓时间,以供查看之前的执⾏结果,会占⽤磁盘空间(默认为24h)
job_cache:master 是否缓存执⾏结果,如果规模庞⼤(超过5000台),建议使⽤其他⽅式来存储jobs,关闭本选项(默认为True)
file_recv:是否允许minion传送⽂件到master 上(默认是Flase)
file_roots:指定file server登录, 默认为:
file_roots:
base:
- /srv/salt
pillar_roots : 指定pillar 登录, 默认为:
pillar_roots:
base:
- /srv/pillar
log_level:执行日志级别,支持的日志级别有'garbage', 'trace', 'debug', info', 'warning', 'error', ‘critical ’ ( 默认为’warning’)
Minion常用配置
master:指定master 主机(默认为salt)
master_port:指定认证和执行结果发送到master的哪个端⼝,与master配置组件中的ret_port 对应(默认为4506)
id:指定本minion的标识,salt内部使 id作为标识(默认为主机名)
user:指定运行minion的用户,由于安装包,启动服务等操作需要特权用户, 推荐使用root( 默认为root)
cache_jobs : minion 是否缓存执行结果(默认为False)
backup_mode: 在组件操作(file.managed 或file.recurse) 时, 如果组件发生变更,指定备份指标. 当前有效的值为minion, 备份在cachedir/file_backups⺫录下, 以原始组件名称加时间戳来命名(默认为Disabled)
providers : 指定模块对应的providers, 如在RHEL系列中, pkg对应的providers 是yumpkg5
renderer: 指定配置管理系统中的渲染器(默认值为:yaml_jinja )
file_client : 指定file clinet 默认去哪⾥(remote 或local) 寻找⽂件(默认值为remote)
loglevel: 指定⽇志级别(默认为warning)
tcp_keepalive : minion 是否与master 保持keepalive 检查, zeromq3 以下版本存在keepalive bug,会导致某些情况下连接异常后minion重连master. 建议有条件的话升级到zeromq 3以上版本(默认为True)
当/etc/salt/master 没有配置auto_accept: True时,需要通过salt-key 命令来进行证书认证操作,具体操作如下:
salt-key -L #显示已经或未认证的被控端id,Accept Keys为已认证清单,Unaccepted Keys为未认证清单;
salt-key -D #删除所有认证主机id证书
salt-key -d id #删除单个id证书
salt-key -A #接受所有id证书请求
salt-key -a id #接受单个id证书请求
[root@saltstack-master salt]# salt-key -a slaver.test.com
[root@saltstack-master salt]# salt-key -a master.test.com
[root@saltstack-master salt]# salt-key
Accepted Keys:
saltstack_web1group_1
saltstack_web1group_2
Denied Keys:
Unaccepted Keys:
Rejected Keys:
认证流程(密钥)
master/minion数据传输采用AES加密算法,salt支持自动认证
把公钥发给master
[root@saltstack-master salt]# cd /etc/salt/pki/master/
[root@saltstack-master master]# tree
.
├── master.pem
├── master.pub
├── minions
│ ├── saltstack_web1group_1
│ └── saltstack_web1group_2
├── minions_autosign
├── minions_denied
├── minions_pre
└── minions_rejected directories, files
校验安装结果
通过test模块的ping方法,可以确认指定被控端设备与主控端是否建立信任关系及连通性是否正常,探测所有被控端采用’*’来代替’ saltstack_web1group_1’即可。
[root@saltstack-master salt]# salt 'saltstack_web1group_1' test.ping
saltstack_web1group_1:
True
[root@saltstack-master salt]# salt 'saltstack_web1group_2' test.ping
saltstack_web1group_2:
True
[root@saltstack-master salt]# salt '*' test.ping
saltstack_web1group_1:
True
saltstack_web1group_2:
True
更多精选文章,请扫描下方二维码关注,在公众号里进行查看哦~

Saltstack 集中化管理平台安装的更多相关文章
- saltstack集中化管理平台
		
1.安装与启动 yum install salt-master -y 安装服务端 chkconfig salt-master on 自启动 service salt-master start 启动 y ...
 - SaltStack 是一个服务器基础架构集中化管理平台
		
SaltStack详细部署 一.基础介绍============================================================================== ...
 - 安装Rancher容器化管理平台
		
卸载已有的避免冲突 yum remove docker docker-common docker-selinux docker-engine 安装需要的软件包,yum-util 提供yum-co ...
 - 集中化管理平台 — Ansible 详解
		
# Ansible 简介 Ansible 类似于Saltstack,是一种集成IT系统的配置管理.应用部署.执行特定任务的开源平台.Ansible基于Python语言实现,由Paramiko和PyYA ...
 - EasyNVR无插件直播流媒体服务器云端集中管控的EasyNVS云管理平台安装使用文档
		
EasyNVS - EasyNVR云端集中管理服务 EasyNVS云管理平台是一套专门用于集中化管理EasyNVR 的解决方案. EasyNVR 采用主动注册的方式接入到 EasyNVS, 再由 Ea ...
 - 集中化管理平台Saltstack安装配置
		
salt是一个异构平台基础设置管理工具(虽然我们通常只用在Linux上),使用轻量级的通讯器ZMQ,用Python写成的批量管理工具,完全开源,遵守Apache2协议,与Puppet,Chef功能类似 ...
 - 【saltstack 集中化管理】
		
Master(监控端): Minion(被监控端) 监控: /etc/master: #interface:监控端地址 #自动接受被监控端证书 #saltstack文件根目录位置 #启动监控 被监控: ...
 - dubbo管理平台安装
		
dubbo-admin.war可在网上百度去下载,但是我下载了好几个,发布上去服务启动都报错,这个时候大概是我们系统的JDK和编译dubbo-admin.war的JDK版本不同导致的了,强烈建议自己下 ...
 - saltstack系列(一)——介绍与安装
		
saltstack简介 saltstack 是服务器基础架构集中化管理平台.具备配置管理.远程执行.监控等功能. saltstack 基于python. 注意: puppet是一种Linux.Unix ...
 
随机推荐
- docker 删除镜像
			
有时候我们不需要某个镜像,需要对它进行删除.1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有cont ...
 - 【asp.net】asp.net实现上传Excel文件并读取数据
			
#前台代码:使用服务端控件实现上传 <form id="form1" runat="server"> <div> <asp:Fil ...
 - Java JPS找不到正在执行的java进程   jps cannot see running java process
			
最近磁盘进展,把临时目录/tmp给全删了,结果发现jps的输出为空,找不到正在运行的jvm进程. 但是新建的进程没有问题,能够正常查看: [root@node-master ~]# ps -e|gre ...
 - python excel写入及追加写入
			
# -*- coding:utf-8 _*- """ @author:Administrator @file: excel.py Description :如果行数是10 ...
 - Kafka(二)设计原理
			
1.持久性 kafka使用文件存储消息,这就直接决定kafka在性能上严重依赖文件系统的本身特性.且无论任何OS下,对文件系统本身的优化几乎没有可能.因为kafka是对日志进行append操作,因此磁 ...
 - es6常用语法学习笔记
			
1.let和const的常规使用 let声明的变量不存在预解析 let声明的变量不允许重复使用(在同一个作用域内) ES6引入了块级作用域{},块内部定义的变量,在外部是不可以访问到的 使用let在f ...
 - Linux基础 - 系统优化及常用命令
			
目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...
 - CentOS下TensorFlow安装命令
			
安装扩展源:sudo yum -y install epel-release 安装python-pip模块:sudo yum install python-pip 直接把whl文件download下来 ...
 - xls 打乱序列 -和给拼接字符串加上双引号
			
打乱 给空列 添加函数 =RAND() ,下拉,排序,即可打乱 添加双引号: =""""&C1&"""" ...
 - C# - 设计模式 - 钩子模式
			
钩子模式 问题场景 如何控制抽象类的行为?解决办法是靠钩子!抽象类公布一个虚方法,由子类自行决定是否重写它,抽象类以钩子做判定,如果返回真则执行某个方法,否则不执行.为什么钩子不能是抽象的,因为如果钩 ...