企业—saltstack简介及其部署应用及其推送相应的服务

一.saltstack简介

1.saltstack简介

  • Saltstack是基于Python开发的一套C/S架构,具备Puppet、Ansible功能于一身的配置管理工具,功能十分强大,各模块融合度及复用性极高;使用号称世界上最快的消息队列ZeroMQ使得Saltstack能够秒级在数万台服务器上进行各种操作,而且使用RAS Key方式确认身份,传输采用AES加密,安全性能更高;

  • Saltstack不仅仅是一款配置管理工具,还是一款做云计算和数据中心架构编排利器。目前Salt-cloud项目也已经合并到Saltstack主项目里,Saltstack已经支持Docker相关模块,在友好地支持各大云平台之后,配合Saltstack的Mine实现各云平台业务自动扩展。

2.saltstack的通信端口

  • master端:4505
  • minion端:4506

altstack的master端监听4505与4506端口。4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口;salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制,如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。

3.saltstack三大功能

  • 远程执行
  • 配置管理
  • 云管理

4.ZeroMQ简介

ZeroMQ的详细信息可参考:https://www.cnblogs.com/rainbowzc/p/3357594.html

ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。

2.系统架构

三.saltstack的部署

实验环境

主机名(IP)服务
server1(172.25.254.1)salt-master
server2(172.25.254.2)salt-minion
server3(172.25.254.3)salt-minion

1.搭建第三方yum源

第三方yum源要用到的安装包,repodate为软件包生成的仓库:
在这里插入图片描述
//在物理机上将搭建的第三方仓库发布到http的默认发布目录下

[root@foundation77 ~]# mv /home/kiosk/Desktop/2018/ /var/www/html/
[root@foundation77 ~]# mount /home/kiosk/Desktop/rhel-server-7.3-x86_64-dvd.iso /var/www/html/file/
[root@foundation77 ~]# ls /var/www/html/
2018  file

//在server1,server2,server3上配置第三方yum源:

[root@server1 ~]# cd /etc/yum.repos.d/     ##server2和server3的第三方yum源配置同server1
[root@server1 yum.repos.d]# vim salt.repo
[saltstack]
name=saltstack
baseurl=http://172.25.254.77/2018
gpgcheck=0

2.在server1上安装salt-master,并开启master服务

[root@server1 ~]# yum install -y salt-master
[root@server1 ~]# cd /etc/salt/
[root@server1 salt]# systemctl start salt-master
[root@server1 salt]# systemctl enable salt-master

3.server2及server3上安装salt-minion,并且编辑minion的配置文件指定master,开启minion服务

//server2:
[root@server2 yum.repos.d]# yum install -y salt-minion
[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
16 master: 172.25.254.1
[root@server2 salt]# systemctl start salt-minion
[root@server2 salt]# systemctl enable salt-minion

//server3:
[root@server3 yum.repos.d]# yum install -y salt-minion
[root@server3 ~]# cd /etc/salt/
[root@server3 salt]# vim minion
16 master: 172.25.254.1
[root@server3 salt]# systemctl start salt-minion
[root@server3 salt]# systemctl enable salt-minion

4.在server1上添加key,并且测试

[root@server1 salt]# salt-key -L  ##查看key发现没添加
[root@server1 salt]# salt-key -A   ##-A表示所有
[root@server1 salt]# salt-key -L    ##再次查看添加完成
[root@server1 salt]# salt '*'  test.ping   ##测试

在这里插入图片描述
在这里插入图片描述
5.查看server1上master的相应信息
//查看master的端口相应信息

[root@server1 salt]# yum install -y lsof

在这里插入图片描述
//查看master查看的相应进程,因为进程显示的python语言,因此需要下载python语言的相应解释器

[root@server1 salt]# yum install -y python-setproctitle.x86_64
[root@server1 salt]# ps ax   ##产生1python的相应的进程及其作用

在这里插入图片描述
//查看master上的master.pub及其minion上的minion_master.pub发现公匙是相同的

//server1:
[root@server1 salt]# cd pki/master
[root@server1 master]# md5sum master.pub 
5d62a03af30164bf630d5180c3654e44  master.pub

//server2:
[root@server2 minion]# md5sum minion_master.pub 
5d62a03af30164bf630d5180c3654e44  minion_master.pub   ##minion与master上的相同

四.YAML在sls文件中的应用,部署服务

1.编写master的配置文件添加该模块

[root@server1 salt]# vim master
添加该模块:取消注释
file_roots:
  base:
    - /srv/salt

[root@server1 salt]# mkdir /srv/salt
[root@server1 salt]# systemctl restart salt-master
[root@server1 salt]# cd /srv/salt/
[root@server1 salt]# pwd
/srv/salt

2.在添加的sls文件的模块指定的路径下部署apache

//编辑sls文件
[root@server1 salt]# mkdir apache
[root@server1 apache]# vim install.sls
httpd:
  pkg.installed:
    - pkgs:
      - httpd
      - php
      - httpd-tools
  service.running:
    - name: httpd
    - enable: true
    - reload: true

/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644

//添加文件中所指出的配置文件
[root@server1 apache]# mkdir files
[root@server1 apache]# cd files/
[root@server1 files]# scp server2:/etc/httpd/conf/httpd.conf  .

3.在server2上安装apache

[root@server1 apache]# salt server2 state.sls apache.install     apache.install表示在apache目录下的install安装文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行过程中产生的相应信息都在上图的相应目录下

3.重新编写sls文件配置安装与服务开启分离,相当于ansible的角色

//编辑安装文件:
[root@server1 apache]# vim install.sls 
httpd-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php
      - httpd-tools

  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644

//编辑开启服务的文件
[root@server1 apache]# vim service.sls 
include:
  - apache.install   ##包含安装文件
httpd-service:
  service.running:
    - name: httpd
    - enable: true
    - reload: true
    - watch:   监控安装文件
      - file: httpd-install

//安装httpd:
在这里插入图片描述
//开启服务:
在这里插入图片描述

五.nginx服务的推送

1.在/srv/salt目录下建立相应的nginx目录并且在nginx目录下建立相应的存放nginx压缩包的目录

[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# mkdir nginx
[root@server1 salt]# cd nginx/
[root@server1 nginx]# mkdir files
[root@server1 nginx]# cd files/
[root@server1 files]# ls
nginx-1.15.8.tar.gz

2.编写相应的sls安装文件并且现在server3(minion)上进行解压相应的操作,因为nginx在编译的过程中会产生相应的debug,需要在编译过程中将其注释掉

[root@server1 nginx]# vim install.sls
nginx-install:
  pkg.installed:
    - pkgs:
      - gcc
      - make
      - pcre-devel
      - zlib-devel
  file.managed:
    - name: /mnt/nginx-1.15.8.tar.gz  压缩包重新存放的位置
    - source: salt://nginx/files/nginx-1.15.8.tar.gz   压缩包的存放位置

  cmd.run:
    - name: cd /mnt && tar zxf nginx-1.15.8.tar.gz && cd nginx-1.15.8
    - creates: /mnt/nginx-1.15.8
[root@server1 nginx]# salt server3 state.sls nginx.install   在server3上执行解压

查看debug文件:
[root@server3 salt]# cd /mnt/
[root@server3 mnt]# ls
nginx-1.15.8  nginx-1.15.8.tar.gz
[root@server3 mnt]# cd nginx-1.15.8
[root@server3 nginx-1.15.8]# vim auto/cc/gcc
171 # debug
172 CFLAGS="$CFLAGS -g"    需要用到在后面进行安装时用到,所以需要查看

在这里插入图片描述
3.再次编写nginx的安装文件,并且进行安装

[root@server1 nginx]# vim install.sls 
nginx-install:
  pkg.installed:
    - pkgs:
      - gcc
      - make
      - pcre-devel
      - zlib-devel
  file.managed:
    - name: /mnt/nginx-1.15.8.tar.gz
    - source: salt://nginx/files/nginx-1.15.8.tar.gz

  cmd.run:
    - name: cd /mnt && tar zxf nginx-1.15.8.tar.gz && cd nginx-1.15.8 && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx &> /dev/null && make &> /dev/null && make install &> /dev/null
    - creates: /usr/local/nginx

在这里插入图片描述
在这里插入图片描述
4.准备nginx服务启动脚本将脚本放到server3相应的服务的目录下并且进行相应的测试

[root@foundation77 6.8]# vim nginx.service 
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[root@foundation77 6.8]# scp nginx.service root@172.25.254.3:/etc/systemd/system

//在server3上重启模块并且进行查看
[root@server3 system]# pwd
/etc/systemd/system
[root@server3 system]# systemctl daemon-reload

在这里插入图片描述
5.关闭server3上的nginx服务并且将服务脚本,及其配置文件烤到server1 master上的nginx的相应的files文件的模版目录下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.在server1进行配置nginx服务的sls文件,实现远程控制服务的开启和关闭

[root@server1 nginx]# pwd
/srv/salt/nginx
[root@server1 nginx]# vim service.sls
[root@server1 nginx]# vim service.sls
include:
  - nginx.install    包括nginx.install的安装文件
/usr/local/nginx/conf/nginx.conf:
  file.managed:
    - source: salt://nginx/files/nginx.conf   nginx的配置文件的来源

nginx-service:
  file.managed:
    - name: /etc/systemd/system/nginx.service
    - source: salt://nginx/files/nginx.service     nginx的脚本来源
  service.running:
    - name: nginx
    - enable: true
    - reload: true
    - watch:
      - file: /usr/local/nginx/conf/nginx.conf

7.在master上进行服务的推送开启server3上的nginx的服务并且在server3上进行查看验证
在这里插入图片描述
在这里插入图片描述
在server3上查看服务的状态:
在这里插入图片描述
则服务推送成功

8.编辑顶层模块文件将apache及其nginx服务的安装都写进去,并且推送顶层模块进行测试

[root@server1 ~]# cd /srv/salt/nginx/
[root@server1 nginx]# ls
files  install.sls  service.sls

[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# vim top.sls
base:
  'server2':
    - apache.service
  'server3':
    - nginx.service

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值