一 saltstack 简介:
saltstack 是基于python开发的一套C/S架构配置管理工具,底层使用zeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行认证管理
ZeroMQ 使得saltstack能快速在成千上万台机器上进行各种操作,而且采用RSAkey 方式确认身份,传输采用AES加密。
saltstack中服务端叫做master,客户端叫做minion,
在master和minion端都是以守护进程的模式运行,一直监听配置文件里面的ret_port(接受minion请求)和publish_port(发布消息)的端口。
当minion运行时会自动连接到配置文件里面定义的master地址ret_port端口进行连接认证,默认客户端请求id 是 socket.getfqdn()取到的值,也可以在minion启动之前修改minion的id值。
二 服务的安装及基本说明
1 server 1 上安装客户端和服务器端
软件和相关文档:
链接:https://pan.baidu.com/s/1wBVFXI8qYf-Z0YTDnjchYg
密码:mofl
2 server 2 和 server3 端安装客户端
3 服务端安装树并查看其状态
4 其密钥的存放路径
5 将从节点指向主节点
6 指向前查看其密钥为空
7 启动slave服务
8 查看从节点密钥,当服务启动后,会自动使用md5校验生成密钥
9 服务器master端查看并启动服务
10 查看节点slave情况
11 允许所有未注册的节点注册,并查看是否注册成功
12 查看master 端生成的公钥
13 查看slave 及 minion端由master发送的公钥
14 查看master端由minion端发送的公钥
由此可知,其验证是双向验证,及master端将其公钥发送到minion端,minion也将公钥发送到master端。
其中4505 负责发送数据到客户端,
4506 负责接收客户端的数据到服务器
三 基础应用
1 部署远端httpd 服务
1 master环境准备
开启工作目录并重启进程加载
2 了解YAML
1 默认的sls文件的renderer 是YAML renderer ,YAML是一个有很多强大特性的标记性语言,salt 使用了一个YAML的小型子集,映射非常常规的数据结构,向列表和字典,YAML renderer 的工作是将YAML数据格式的结构编译成python数据结构给salt使用
规则一 :
缩进: YAML 使用一个固定的缩进风格表示数据层结构关系,salt需要每一个缩进级别都有两个空格组成,不要使用tab
规则二:
冒号:python 的字典当然是简单的键值对
规则三:
短横杠:想要表示列表项,使用一个短横杠加一个空格,多项使用同样的缩进级别作为同一列表的一部分。
3 部署:
其中apache-install只是一个名字
pkg.installed中pkg是数据包处理的类,是一个大的方式,installed 表示其是对数据包进行安装处理
-pkgs 用于指定安装多个数据包
4 查看安装结果
5 设置部署并启动
其中service 也是一个大的类,而running是其中的方法
其有reload 、restart、enable 等常用方法
6 实施
7 查看
8 配置httpd配置文件并推送
9 配置
其中使用到了file.managed模块
--name:表示目标目录,及客户端对应的目录
--source:表示配置文件的来源路径,其是相对于/srv/salt的路径
10 部署
11 查看 :
12 另一种配置方式:
2 nginx 源码包编译配置
1 配置并认证通过server3
2 创建相关文件夹,并查看,用于存放不同的文件和数据包
3 安装配置相关依赖包
4 安装配置nginx用户名
5 配置nginx的推送和解压
6 部署
查看是否编译成功
7 创建nginx配置文件
8 创建启动和触发机制
9 部署
10 查看
3 安装haproxy实现负载均衡:
1 另一个节点安装以获取到期配置文件
2 复制配置文件主节点
3创建haproxy 目录
4 修改配置文件
5 配置客户端服务
6 配置认证key
7 查看总的目录结构
8 查看haproxy 目录结构
9 配置haproxy安装配置文件
10 设置其分配给不同的主机
11 进行一键配置
12 配置网页查看其负载均衡
13 测试其负载均衡
客户端通过服务端数据发送到客户端指定的目录,并有客户端进行安装和配置,其配置文件目录如下
四 扩展模块
1 grains
1 常用命令
2 设置标签
3 其他用法
2 pillar 模板使用
1 配置pillar模块目录
2 创建目录并创建文件
3 测试
3 mysql 应用于记录数据
1 安装数据库并导入相应的数据
2 客户端安装服务:
3 客户端配置mysql相关数据
、
4 mysql数据库进行授权
5 测试并查看结果
4 master端用于将数据提交给mysql
此处的客户端即需要将数据传送到master 端也需要将数据发送给mysql。难度大,如果直接在master端配置mysql-python则只需mater将数据写入数据库即可
1 客户端关闭mysql链接配置
2 重启服务
3 服务端安装mysql-python
4 服务端配置mysql相关配置
5 重启服务
6 mysql授权:
7 测试:
配置相关模块
1 关闭mysql及配置,此处是实验,以防mysql影响正常性能:
其他扩展模板的基本使用
可以通过此格式编写其他的服务
5 jinja 模板的使用
1 方式一 :
2 方式二:通过模板进行修改
3 方式三 通过grains进行修改IP
通过定义配置文件进行修改其端口或IP地址