企业——saltstack自动化部署软件、高级推、负载均衡

1.saltstack概念及原理

   SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统,包括VMware vSphere环境。自动化运维软件,自动化配置系统
   SaltStack
作用于仆从和主拓扑。SaltStack与特定的命令结合使用可以在一个或多个下属执行。实现这一点,此时Salt Master可以发出命令,如salt '*' cmd.run 'ls -l /'。没有UI界面
   Saltstack
是基于python开发的一套C/S架构配置管理工具;一种全新的基础设施管理方式,部署轻松
   SaltStack
三大功能:
    ●
远程执行
    ●
配置管理
    ●
云管理

saltstack的三中运行模式:

Local本地
Master/minion传统运行方式(server端跟agent端)
Salt SSHSSH

saltstack内的组件:

  中央管理系统。此系统用于将命令和配置发送到在受管系统上运行的Salt minion。

      

  管理系统。该系统运行Salt minion,它从Salt master接收命令和配置。slave要向master发起授权的请求,master上用 salt-key  -L查看

      

  

从命令行针对一个或多个受管系统执行的临时命令。对...有用:

  • 实时监控,状态和库存
  • 一次性命令和脚本
  • 部署关键更新

      

  系统配置的声明性或命令式表示

      

  系统变量。Grains是有关底层受管系统的静态信息,包括操作系统,内存和许多其他系统属性。您还可以为任何系统定义自定义颗粒。

      

 

       

2.环境要求
需要两个干净的6.5的虚拟机
查看虚拟机的信息的命令: qemu-img info 虚拟机名

 
在真机上:
   cd /var/lib/libvirt/
   ls
   qemu-img info new.qcow2    ##
查看虚拟机的信息
   qemu-img create -f qcow2 -b new.qcow2 wf1
   qemu-img create -f qcow2 -b new.qcow2 wf2
   virt-manager
  
创建新的虚拟机 wf1 wf2


  
注意:虚拟机的解析

   cat /etc/redhat-release    ##
查看系统版本
   uname -r   ##
查看系统内核版本
   getenforce   ##
查看selinux的状态,selinux必须是关闭的
   /etc/init.d/iptables stop    ##
关闭防火墙


3.saltstack
的配置

 
在真机上:
   lftp 172.25.254.250
   cd pub/docs/saltstack
   ls
   mirror rhel6     ##
rhel6的文件放在http的默认发布目录上
   mv rhel6/ /var/www/html/
   systemctl start httpd.service

 
wf1,2,3上:   需要重新配置yum
   vim /etc/yum.repos.d/rhel-source.repo
    [saltstack]
    name=saltstack
    baseurl=http://172.25.8.250/rhel6
    gpgcheck=0
   yum repolist
  
 
wf1上(master):
   yum install -y salt-master
   cd /etc/salt
   ls
   vim master      ##master
端编辑master的文件,不过这个没有要编辑的
   /etc/init.d/salt-master start
      


 
wf2,3上(slave):
   yum install -y salt-minion

 chkconfig salt-minion on  ##可以设置开机自启,设不设置都可以
   cd /etc/salt/
   ls
   vim minion      ##minion
端编辑minion的文件
    master: 172.25.8.1     ##
设置masterip,指定master主机,修改配置文件之后才可以开启minion的服务
   /etc/init.d/salt-minion start

 

 必要的时候可以增加主机名的解析:

  vim /etc/hosts

    172.25.8.1  server1

  在slave上面可以用来测试,master和slave之间时候网络连通:

   ping 172.25.8.1  或者  ping server1


       

 

       


 
wf1上:salt远程执行命令,此处的命令相当于是秘钥认证,如果没有被授权的话,主机会显示在 Unaccepted Keys里面
   salt-key -L     ##
查看接受的和没有被授权的请求
   salt-key -A     ##
批量处理没有被处理的没有授权的请求
   salt-key -a     ##
处理某一个为授权的请求

 

在认证之前,查看salt的结构:在指定的目录下面 /etc/salt/pki/master 下

    

  可以看到没有认证授权之前的,申请授权的主机在树状结构的 minions_pre 里面

 

接下来开始授权:
    

 

    

 

现在是授权之后:

     

  之前的需要被授权的主机的信息发生了改变

  并且在客户端相应的目录下面,/etc/salt/pki/minion 下面生成了 master 的秘钥  minion_master.pub

 

 测试:保持长链接
 -
wf1上操作,输入命令:
 -salt wf2/3 test.ping
        ##salt
命令  test.ping的含义是,test是一个模块,ping是模块内的方法
 -salt wf2/3 cmd.run hostname

     ##使用cmd.run直接调用远程shell命令(功能同上),远程主机上面调用hostname这个命令
      
===============================================================================
lsof
list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
   lsof -i
用以显示符合条件的进程情况

   lsof -i :4505
===============================================================================

4.saltstack
的配置管理  YAML 配置服务需要开启base默认的目录

===============================================================================
 
默认的SLS文件的rendererYAML rendererYAML是一个有很多强大特性的标记性语言。salt使用了一个YAML的小型子集,映射非常常用的数据,像列表和字典
  pki
加密 
base
目录:用来部署服务使用,需要调用很多的模块,没有base目录需要自己建立

================================================================================

 
wf1上:
   vim master
    file_roots:    ##
开启base的默认目录,不能将注释去掉,需要自己按照格式重新写,后面的salt的服务的自动化部署和sls配置的文件都会默认从该路径下读取
      base:
        - /srv/salt/
   mkdir /srv/salt
   /etc/init.d/salt-master restart
        
   cd /srv/salt
   mkdir apache
   vim install.sls     ##
进入到/srv/salt/目录下创建,python语法注意空格缩进,不能用tab
    http:  
软件包名称
      pkg.installed
   salt wf2 state.sls apache.install    ##salt
调用客户端的命令  wf2客户端名称  state.sls调用sls这个文件 在base下的
      

 

      


 
wf2上:
   yum install tree -y
   cd /var/cache/salt
   tree .
      
 
wf1上:
   vim /srv/salt/apache/install.sls
    http:  
软件包名称
      pkg.installed   ##
安装
    apache:  ##软件名称不能重复,所以将HTTP写成apache
      service.running:    ##
执行 开启服务
        - name: httpd
        - enable: True
   salt wf2 state.sls apache.install
      

 

      


 
wf2上:
   ps ax   ##
查看进程信息,是否有开启服务

      


   chkconfig --list httpd

 
wf1上:
   vim /srv/salt/apache/install.sls
    httpd:
      pkg.installed:
       - pkgs:
         - httpd
         - php
         - php-mysql

    service.running:
      - name: httpd
      - enable: True
      

      

      

   注意:但是如果修改wf2上的http的配置文件的话,wf1将命令推过来的时候,就会将更改的配置文件覆盖掉,就相当于没有更改。所以需要将wf2上的httpde配置文件scpwf1的一个目录当中,并且监控,如果修改过的话,就要重启服务
  
 
wf1上:
   cd /srv/salt/apache
   mkidr files

      


 
wf2上:
   scp /etc/httpd/conf/httpd.conf root@172.25.8.1:/srv/salt/apache/files  ##将配置文件发送到wf1(master)上,并建立连接。
        
 
wf1上:
   cd /srv/salt/apache
   vim install.sls
    httpd:
      pkg.installed:  ##pkg.install方式:制定主机安装软件
       - pkgs:    ##需要安装的安装包有哪些?下面行进行定义
         - httpd
         - php
         - php-mysql

    service.running:
      - name: httpd
      - enable: True
      - watch:    ##监控命令
        - file: /etc/httpd/conf/httpd.conf     ##
监控配置文件,如果修改,就重启服务

    /etc/httpd/conf/httpd.conf:
      file.managed:  ##文件管理(文件同步操作)
        - source: salt://apache/files/httpd.conf
        - mode: 644
        - user: root
        - group: root

      
   salt wf2 state.sls apache.install

 
测试:
 
wf1上:
   cd /srv/salt/apache
   cd files/
   vim httpd.conf
      Listen 8080   ##
将端口改成8080
   salt wf2 state.sls apache.install
       

      


 
wf2上:
   netstat -antlp  ##
可以看到http的端口改成了8080
      


5.
开启服务 和 安装 这两个功能分开进行,编写两个sls文件

      
   cd /srv/salt/apache
   ls
   vim install.sls    ##这是原来上面编写的配置文件
    httpd:     ##文件的名字
      pkg.installed:    ##这个是安装模块,类型及其动作
       - pkgs:
         - httpd
         - php
         - php-mysql

      file.managed:    ##文件管理(文件同步操作)
        - name: /etc/httpd/conf/httpd.conf
        - source: salt://apache/files/httpd.conf
        - mode: 644
        - user: root
        - group: root

      

 

更改以后的文件的内容如下:


   vim service.sls  ##这里是启动服务的文件
    include:    ##这里表示,在开启服务之前,先检测是否安装服务;如果没有安装服务,需要先安装。
      - apache.install  ##调用的模块是:apache.install
    apache-service:  
      service.running:  ##如果安装了服务,那么就直接开启服务
        - name: httpd
        - enable: True
        - watch:
          - file: apache-install

      
   salt wf2 state.sls apache.install

6.
wf3上配置nginx服务  并将开启和安装分开进行,编写两个sls文件

(1).
nginx的服务器的配置文件scpwf1
   scp /usr/local/nginx/conf/nginx.conf root@172.25.8.1:/srv/salt/nginx/files          ##
如果配置文件更改的话,将配置文件也发到虚拟机上去,然后覆盖原来的配置文件,注意,如果要更改配置文件的话,需要在master上更改,如果在minion上更改的话,在master执行salt操作的话,文件会被salt上的文件覆盖掉,更改的内容也就不见了。所以在minion上面修改配置文件是没有用的。当master一推,就会将原来的配置文件的内容覆盖掉。

(2)
nginx的安装包放在files目录下
   cd /srv/salt/
   mkdir nginx
   mkdir nginx/files
   mv nginx-1.14.0.tar.gz nginx/files
      

      


(3)
nginx的配置文件scpwf1nginxfiles目录下
   scp nginx.conf root@172.25.254.1:/srv/salt/nginx/files

      


(4)
将开启服务的命令放到另一个sls的文件里
   vim install.sls   ##
配置如下图,pkgs里面需要安装的,都是在源码编译nginx的时候,解决相应的依赖性的安装包

      

  文件内的 file.managed那个模块里面的意思是: - name: 就是将即将要推出去的服务的压缩包,放在那个主机的 /mnt 目录下。 - source:就是这个压缩包,在本机的(推文件的,推服务的master)salt的默认的路径下。 - mode:给文件的权限,如644,755等。

      
==================================================================================
  
注意:也可以将安装全部放在一个文件中,只需要调用就好了
   cd /srv/salt
   mkdir pkgs
   cd pkgs
   vim make.sls
    pkg.installed:
      - pkgs:
      - gcc
      - pcre-devel
      - openssl-devel
==================================================================================


   salt wf3 state.sls nginx.install
      


(5)
安装nginx的发布目录
  
用已经编译好的nginx的发布的文件,放到默认发布目录下就好
   mv nginx /etc/init.d
   cd /etc/init.d
   chmod +x nginx

  
测试一下,看发布文件能否使用:
   /etc/init.d/nginx start
   curl localhost      ##
出现nginx的页面就代表可以使用
   /etc/init.d/nginx stop
   scp nginx root@172.25.254.1:/srv/salt/nginx/files

      


      

 wf3上: ps ax  ##查看执行的进程


7.
高级推  (一次推很多的服务器上的不同的服务)

  top.sls:作为“最高同步”操作的入口文件,执行“最高同步”操作时,将从此sls文件中获取状态对minion进行同步
   cd /srv/salt
   ls
   vim top.sls  ##高级推需要读取的项目的名称
    base:
       "wf2":
          - apache.service
       "wf3":
          - nginx.install
   salt '*' state.highstate
      

      

      

      

  

salt '*' test.ping     ## * 匹配的是salt里面的所有的远程主机

      

 


8.
wf1上下载salt-minion配置和wf23一样   wf1haproxy的服务器  用作负载均衡
   salt-key -L
   salt-key -a wf1
   salt-key -L  

   cd /srv/salt/
   ls
   mkdir haproxy
   cd haproxy/
   mkdir files      ##
haproxy的压缩包放在files文件中。
   vim install.sls
   vim service.sls
   salt wf1 state.sls haproxy.install
      

      
   cd ..
   cd haproxy-1.6.11/examples
   ls
   cp haproxy.init content-sw-sample.cfg  /srv/salt/haproxy/files/

   cd /srv/salt/haproxy/files
   mv content-sw-sample.cfg haproxy.cfg
  
   mkdir users
   cd users/
   vim install.sls
    haproxy-group:
      group.present:
        - name: haproxy
        - group: 200

    haproxy-user:  ##自动创建用户的函数方法
      user.present:
        - name: haproxy
        - uid: 200
        - gid: 200
        - home: /usr/local/haproxy
        - shell: /sbin/nologin
        - createhome: False
   cd ..
   cd haproxy/
   vim service.sls
    - users.install

  
编辑haproxy的配置文件:如下所示:

  cd files/
  pwd
    /srv/salt/haproxy/files
  ls
    haproxy.cfg
  vim haproxy.cfg
    stats uri /status
    #---------------------------------------------------------------------
    # main frontend which proxys to the backends
    #---------------------------------------------------------------------
    frontend main *:80
    default_backend app

    backend server

    balance roundrobin
    server server1 172.25.8.2:80 check
    server server2 172.25.8.3:80 check


 
   vim top.sls
    "wf1":
       - haproxy.install
  
 
在 wf2/3 上编写http的默认发布文件:
   cd /var/www/html/
   ls
   vim index.html
     server2/server3
 
 
在网页上测试,会出现轮询的效果: 172.25.18.1

 

9.配置 Salltstack 的高可用

(1)在 wf1 的/srv/salt目录下,建立keepalived目录,进到目录里边编辑安装keepalived的sls推送文件

 

转载于:https://www.cnblogs.com/wf-aiyouwei/p/9937582.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值