zoukankan      html  css  js  c++  java
  • linux运维、架构之路-SaltStack快速入门

    一、SaltStack介绍

           SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建,SaltStack整合了Puppet和Chef的功能,更适合大规模批量管理服务器,配置简单。

    三大主要功能:远程执行、配置管理、云管理

    运行方式:local、Master/Minion、Salt SSH

    二、SaltStack工作原理

           salt-master服务启动后会开启两个端口:4505和4506,minion没有端口,通过“双向密钥交换”(可通过tree /etc/salt/pki命令查看)来实现安全管理。salt-master每执行一条命令,所有minion均可收到。

    [root@m01 haproxy]# lsof -n -i:4505
    COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    salt-mini 28094 root   24u  IPv4 513347      0t0  TCP 172.16.1.61:46598->172.16.1.61:4505 (ESTABLISHED)
    salt-mast 28823 root   12u  IPv4 507802      0t0  TCP *:4505 (LISTEN)
    salt-mast 28823 root   14u  IPv4 513324      0t0  TCP 172.16.1.61:4505->172.16.1.7:44184 (ESTABLISHED)
    salt-mast 28823 root   15u  IPv4 513348      0t0  TCP 172.16.1.61:4505->172.16.1.61:46598 (ESTABLISHED)
    salt-mast 28823 root   16u  IPv4 889130      0t0  TCP 172.16.1.61:4505->172.16.1.3:49070 (ESTABLISHED)
    [root@m01 haproxy]# lsof -n -i:4506 #所有的minion都与master通信,而回复的时候,master则使用4506端口
    COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    salt-mini 28094 root   13u  IPv4 513218      0t0  TCP 172.16.1.61:56702->172.16.1.61:4506 (ESTABLISHED)
    salt-mast 28848 root   20u  IPv4 507835      0t0  TCP *:4506 (LISTEN)
    salt-mast 28848 root   27u  IPv4 513219      0t0  TCP 172.16.1.61:4506->172.16.1.61:56702 (ESTABLISHED)
    salt-mast 28848 root   28u  IPv4 513220      0t0  TCP 172.16.1.61:4506->172.16.1.7:46876 (ESTABLISHED)
    salt-mast 28848 root   29u  IPv4 889121      0t0  TCP 172.16.1.61:4506->172.16.1.3:38832 (ESTABLISHED)

    三、SaltStack安装部署

    1、环境

    [root@m01 ~]# cat /etc/redhat-release 
    CentOS release 6.9 (Final)
    [root@m01 ~]# uname -r
    2.6.32-696.el6.x86_64
    

    2、master服务端安装

    rpm -ivh http://mirrors.zju.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm#安装epel源
    yum install salt-master salt-minion -y
    sed -i 's/#master: salt/master: 172.16.1.61/g' /etc/salt/minion#修改minion配置文件指定master
    /etc/init.d/salt-master start
    /etc/init.d/salt-minion start
    chkconfig salt-master on
    chkconfig salt-minion on

    3、minion客户端安装配置

    yum install salt-minion -y
    sed -i 's/#master: salt/master: 172.16.1.61/g' /etc/salt/minion#直接替换指定master地址
    /etc/init.d/salt-minion start
    chkconfig salt-minion on

    4、SaltStack常用命令参数

    常用命令参数

    命令说明

    salt-key -L

    查看minion列表

    salt-key -A

    同意接管所有的minion

    salt-key -a

    同意接管指定的一个minion

    salt-key -D

    删除所有认证的minion

    salt-key -d

    删除指定的minion

    salt-run manage.up

    查看存活的minion

    salt-run manage.down

    查看死掉的minion

    salt-run manage.status

    查看minion的相关状态

    salt-run manage.versions

    查看salt的所有master和minion的版本信息

    salt -d

    查看帮助文档

    salt '*' sys.doc

    查看帮助文档

    salt -d|grep service

    查看service相关模块命令

    salt '*' service.get_all

    获取minion所有服务

    salt '*' service.reload sshd

    重新加载sshd服务

    salt '*' pkg.list_pkgs

    显示软件包版本列表

    salt '*' pkg.version python

    显示软件包版本信息

    salt '*' pkg.install httpd

    安装软件包

    salt '*' service.status mysql

    查看mysql服务状态

    salt '*' service.start mysql

    启动mysql服务

    salt '*' sys.list_modules

    模块列表

    salt-cp'*'/etc/hosts /etc/hosts

    分发hosts文件到所有minion端

    salt'*'file.copy/tmp/zabbix.sls /tmp/sls

    把服务端对应文件拷贝到minion端相应目录下

    salt '*' cp.get_dir salt://zabbix /tmp

    把服务端对应目录拷贝到minion端相应目录下

    5、远程执行

    ①cmd.script远程执行脚本

    salt '*' cmd.script salt://scripts/runme.sh
    salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'

    ②cmd.shell远程执行命令

    salt '*' cmd.shell "ls -l | awk '/foo/{print $2}'"
    salt '*' cmd.shell template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print $2}'"

    ③测试到客户端的连通性

    [root@m01 ~]# salt '*' test.ping
    m01:
        True
    haproxy01:
        True
    web02:
        True

     ④遇到的问题

    #问题
    salt-minion dead but pid file exists #解决 rm -fr /etc/salt/pki/minion/minion_master.pub /etc/init.d/salt-minion restart
    成功最有效的方法就是向有经验的人学习!
  • 相关阅读:
    javaDoc 注释规范
    [阿里云] 如何 开放云主机 非80 端口?
    [Go] 跨平台文件系统监控工具 fsnotify 应用举例
    如何利用 jQuery 修改 css 中带有 !important 的样式属性?
    code.google.com/p/log4go 下载失败
    [Go] ok 判断 汇总
    [Go] 编码规范
    《Go语言实战》摘录:7.3 并发模式
    《Go语言实战》摘录:7.2 并发模式
    《Go语言实战》摘录:7.1 并发模式
  • 原文地址:https://www.cnblogs.com/yanxinjiang/p/7730076.html
Copyright © 2011-2022 走看看