saltstack

saltstack简介:

saltstack管理工具允许管理员对多个操作系统创建一个一致的管理系统,包括VMwarre vSphere环境。

saltstack采用C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。minion上线后先与master端联系,把自己的pub key法发过去,这时master端通过salt-key -L 命令就会看到minion的key,接收该minion-key后,也就是master与minion已经互信。master可以发送任何指令让minion执行了,salt有很多可执行模块,比如说cmd模块,在安装minion的时候已经自带里,它们通常在python库中,local salt | grep /apps/nsl/python/bin/salt可以看到salt自带的所有东西。这些模块是python写成的文件,里面会有很多函数,如cmd.run,当我们执行/apps/nsl/python/bin/salt '*'   cmd.run 'uptime'的时候,master下发任务匹配到的minion上去,minion执行模块函数,并返回结果。master监听4505和4506端口,4505对应的是ZMQ的PUBsystem,用来发送消息,4506对应的是REPsystem是来接收消息的。saltstack的master与minion之间通过ZeroMq进行消息传递,使用了ZeroMq的发布-订阅模式,连接方式包括tcp等。

实验环境:

rhel6.5   selinux和iptables均为disabled状态

server1:172.25.254.1 master  (haproxy)

server2: 172.25.254.2 minion  (httpd)

server3: 172.25.254.3 minion   (nginx)

操作步骤:

一:部署saltstack环境

可以下载所需的安装包,也可以将所需的包打包成一个目录放在物理机的发布目录(/var/www/html/)下,然后编辑虚拟机的yum源指向物理机

本实验将所需的包放在rhel6目录下,放在物理机的/var/www/html/,并且给rhel6和该目录下的所有东西给权限大一点

三台虚拟机的yum源指向物理机(本实验只在server1上做了演示,其他两台安装和server1步骤一样)

yum repolist  ##查看saltstack包是否有

在server1(master)上安装salt-master,并开启服务

yum install -y salt-master

/etc/init.d/salt-master start

在server2上安装salt-minion

cd  /etc/salt/

vim minion

master=172.25.254.1  (第16行)

/etc/init.d/salt-minion  start

在server1上查看

cd /etc/salt/

salt-key  -L  ##列出所有的minion

salt-key  -A  ##同意所有的minion

(salt-key  -a  linux*  ##同意含有linux的minion  |  salt-key   -D   ##删除所有的minion   |    salt-key  -d   linux*    ##删除所有含有linux的minion)

查看端口 4505

安装lsof更方便查看

在server3中安装,改文件,开启服务

在server1上重新查看minion,会出现server3

在server1上安装python-setproctitle.x86_64

重启服务

进入到/etc/salt/pki/master,生成了master.pem   master.pub  (钥匙)

md5sum  master.pub   ##查看钥匙

进入到minion中,会发现两个minion,server2和server3

在server2上,进入到/etc/salt/pki/minion/  , 生成了minion_master.pub  minion.pem  minion.pub  (钥匙)

md5sum  minion_master.pub   ##查看钥匙

server2与server1的master钥匙一样,且minion的钥匙也一样

在server1中安装tree,便于查看缓存结构

进入到/var/cache/salt/master中tree .

在server1中

vim /etc/salt/master  ##编写master文件,因为是python编写,故要注意缩进,缩进两个空格

file_roots:

  base:

    - /srv/salt

mkdir /srv/salt    ##创建目录

重启服务

二:安装apache

在/srv/salt下创建一个名为apache的目录,并且在apache下面新建文件install.sls(文件名字无所谓,但后缀必须为sls)

编写install.sls文件内容为安装apache的脚本内容,注意缩进

salt server2 state.sls apaceh.install    ##安装命令

在server2中安装tree,进入到/var/cache/salt/,且tree . ,会发现server2与server1同步,也会有apache目录和其目录下的install.sls

且已安装apache,说明远程操作成功

在server1中编写install.sls,增加功能,给server2开启apache

在server2中查看服务是否开启

在server1中

cd /srv/salt/apache/

mkdir files  ##用于存放httpd.conf

cat  /etc/passwd   ##查看所属用户与所属组

发现所属用户与所属组都是root

在server2中

scp  /etc/httpd/conf/httpd.conf  server1:/srv/salt/apache/files/   ##前提是server2上做好server1的解析,或者直接输入ip也可以

在server1中编写install.sls文件

在server1中复制一份install.sls成为service.sls,改动service.sls

salt server2 state.sls  apache.service   ##利用service.sls来执行给server2安装apache

三:安装nginx

在server1中

cd /srv/salt/

mkdir nginx

cd nginx

touch install.sls

mkdir files/

cd files/

下载nginx-1.14.0.tar.gz

在server1中

cd /srv/salt/

mkdir pkgs   ##创建一个包目录,以后要用到则直接调用,不用重复来

cd pkgs/

vim  make.sls

在server1中编辑nginx的安装文件

在server3中查看是否有/usr/local/nginx/conf/nginx.conf

把server3中的nginx.conf传到server1中去

可以在server3中先下载一个nginx服务,再把/etc/init.d/nginx传到server1中去(本实验是拷贝别的虚拟机中的nginx)

然后再删除nginx

在server1中查看是否传过来了

编写service.sls,开启nginx服务的文件

在server1中编写top.sls文件,实现高可用开启

salt '*' state.highstate   ##执行命令,所有的minion均按照文件内容开启

成功后,在server3中查看是否开启服务

四:安装haproxy

本应该apache,nginx,haproxy安装在不同的虚拟机,但是本实验只创建了三个虚拟机,所以,在master上安装minion,当作一个minon,在其上安装haproxy,这也是可以的

安装minon

改写/etc/salt/minion,将master的ip改成172.25.254.1

开启服务

将server1加到salt中去

在/srv/salt/创建haproxy目录,这个目录下的东西都是跟安装,开启haproxy有关的东西

在files下下载hproxy需要的源码安装包

在haproxy/编写install.sls (这只是个简单的安装文件,不是最终的安装文件)

salt server1 state.sls haproxy.install   ##安装haproxy服务

安装成功后,再次编写install.sls文件,这次是源码编译安装

salt server1 state.sls haproxy.install     ##给server1上安装haproxy服务

安装成功之后,查看/usr/local/haproxy 是否已经做好软连接

先手动解压安装包,将里面的两个文件复制到/srv/salt/haproxy/files/

在/srv/salt/下新建users目录,在users目录下编写haproxy.sls,用来创建haproxy用户

在/srv/salt/haproxy下编写service.sls文件,用来开启服务

进入到/srv/salt/haproxy/fiels/,编写haproxy.cfg文件,做好轮循

salt server1 state.sls haproxy.service   ##开启服务

查看haproxy服务是否开启

编写top.sls文件,实现三个服务同时开启

salt '*' state.highstate  执行命令

在server2中,编写apache发布文件,以便测试

在server3中,编写nginx发布目录,以便测试

在浏览器上172.25.254.1,会出现轮循结果

在浏览器172.25.254.1/admin/stats

停掉server2的apache

编写top.sls文件

这时刷新浏览器,只会出现server3的页面

salt '*' state.highstate    #会调用top.sls文件实现多节点推送

此时访问浏览器,就会发现轮循了

在server1中,可以通过grains.item 查看相应 minion的相关信息

在server2的minion文件里加上roles:apache

重启server2的minion服务

可以查看到server2的roles

在server3中新建编写 /etc/salt/grains

在server1中能查看到

编写top.sls文件,加入grain

重新安装

导入模块:

1.grains

grains的信息不是动态的,不会随时更新,只是在minion启动时会收集到

在server1中编写.py文件

将模块同步到server2中去

在server2中通过tree可以查看到

在server1中查看server2的信息

2.pillar

pillar和grains不一样,是master上定义的,并且是针对minion定义的一些信息,还可以定义变量

编写master文件,去掉注释的pillar

重启服务

编写web中的install.sls,编写pillar中的top.sls

在server1中查看minion信息

刷新pillar

jinja

第一种方式:

第二种方法:

第三种方法:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值