• saltstack学习-1:saltstack介绍、部署、常见问题处理


    salt介绍

    • salt是一个基础平台管理工具,配置文件批量修改,文件同步
    • salt是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据

    salt的核心功能

    • 是命令发送到远程系统,而且是并行发送不是串行的
    • 使用安全加密协议
    • 对网络要求比较低,使用最小最快的网络载荷
    • 提供简单的编程接口(salt使用python开发)

    salt的优点

    saltstack使用python语言编写,相当轻量级。 http://www.python.org

    saltstack通讯层采用ZeroMQ PUB-SUB pattern实现,使得它很快速。http://www.zearmq.org

    saltstack是开源的,通过python可以自己编写模块。

    salt端口说明

    salt-master启动时会启动两个端口

    • 4505:为salt的消息发布专用端口 
    • 4506:位客户端与服务端通信的端口。  ---监控此端口可以监控哪些minion收到的消息,并回复了结果。

    配置文件详解  ---待整理

    salt-master和salt-minion配置文件说明,待整理

    官网

    开发语言:python

    工作方式:master/minion(ZeroMQ),Masterless,Salt-SSH(0.17+)

    官网:www.saltstack.com

    中文官网:www.saltstack.cn

    GitHub:http://github.com/saltstack/salt

    注意:

    • centos5/redhat5 版本总的zeromq版本默认是2.1.9,存在keepalive bug,需要升级到3以上的版本。
    • 配置文件语法要符合yaml语法,比如:冒号后面要有一个空格。
    • salt要求python最低为python2.6

    SaltStack通讯原理概述

    image

    Salt的KEY管理

    • salt数据传输加密采用AES加密,同事master和minion端采用key管理;
    • minion只有先被master接受(accepted)key后,才能进行管理,同事master端的pub key也会传递到minions上,实现更安全的双向认证;
    • keys默认保存在/etc/salt/pki目录下;
    • 管理工具:salt-key

    salt命令详解   ---待整理

    salt-key

    一、环境准备

    1,配置yum源,---salt使用的是epel源

    使用阿里云的源:rpm -ivh http://mirrors.yun-idc.com/epel//6/x86_64/epel-release-6-8.noarch.rpm

    2,规划主机,配置主机名

    IP 主机名 部署应用
    10.80.0.161 salt-masterold salt-master
    10.80.0.162 salt-masternew salt-master
    10.80.0.163 dns01 salt-minion
    10.80.0.164 dns02 salt-minion

    二、在两台master主机,安装salt-master应用,并启动程序

    1,安装master应用,添加开机自启动

    [root@localhost ~]#yum install –y salt-master
    [root@localhost ~]#chkconfig salt-master on

    2,修改配置文件

    #log_level: warning
    log_level: debug           #调试时将日志级别调整为debug级别

    3,启动master程序

    [root@localhost ~]#/etc/init.d/salt-master start

    4,常用命令和参数

    • salt-key  参数
    -a 接受指定minion  
    -A 接受所有minion  
    -r 拒绝指定minion  
    -R 拒绝所有minion  
    -d 删除指定minion  
    -D 删除所有minion  
    -y 默认yes  

        

    三、在两台minion主机,安装salt-minion应用,修改配置文件,并启动程序

    1,安装minion应用,添加开机自启动

    [root@localhost ~]#yum install –y salt-minion
    [root@localhost ~]#chkconfig salt-minion on

    2,修改minion配置文件

    [root@localhost ~]#vi /etc/salt/minion

    #master: salt                  minion配置文件中,默认master配置的为salt,此处可以修改为master的IP地址,也可以在/etc/hosts中增加映射,此处我按照第二种方式修改
    log_level: debug               调试过程日志级别修改为debug级别,生产系统可根据实际情况配置

    [root@localhost ~]#vi /etc/hosts,在文件末尾增加一条记录

    10.80.0.162  salt

    3,测试与master主机是否连通

    [root@dns01 ~]# ping salt
    PING salt (10.80.0.162) 56(84) bytes of data.
    64 bytes from salt (10.80.0.161): icmp_seq=1 ttl=64 time=0.351 ms
    64 bytes from salt (10.80.0.161): icmp_seq=2 ttl=64 time=0.231 ms

    3,启动minion程序

    [root@localhost ~]#/etc/init.d/salt-minion start

    四、常见案例

    1,minion修改主机名(以dns01为例)

    • minion修改主机名  /etc/network
    • minion删除缓存(包括荣主机名文件和key文件) rm –rf /etc/salt/minion_id;rm –rf /etc/salt/pki
    • master删除dns01的key,salt-key –d dns01
    • 重启minion程序,/etc/init.d/salt-minion restart

       ------结束

    注:

    • 如果再master不删除minion的key,有可能minion程序启动后,会自动杀死自己。原因是:minion启动后,会生成自己的key(主机名、IP地址和一些其它信息联合生成的),当向master注册后,会保存一个master的key。当主机名修改后自己的key会改变,如果master不删除之前minion的key,不仅会注册失败,minion还会杀死自己的进程;
    • minion的主机名会缓存到/etc/salt/minion_id文件里面,修改主机名后需要删除这个文件;

    2,master更换主机,所有minion迁移至新的master

    思路(原理):

    • 对minion而言只认master服务器上的的key与minion自己保存的master的key是否有冲突,没有冲突就不会有问题
    • minion要执向新的master的地址

    操作步骤:

    第一步:将masterold上的所有key文件打包上传到masternew服务器上,解压,然后重启master

    [root@saltmasterold]# tar -zcvf pki.tar.gz /etc/salt/pki/
    [root@saltmasterold]# scp pki.tar.gz 10.80.0.162:/etc/salt/pki/
    [root@saltmasternew]# cd /etc/salt/;tar -zxvf pki.tar.gz
    [root@saltmasternew]#/etc/init.d/salt-master restart
    [root@saltmasternew]#salt-key -L
    Accepted Keys:
    dns01
    dns02
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:

    第二步:修改所有minion配置文件,将master执向新的地址

    [root@saltmaster salt]# salt '*' cmd.run "sed -i 's/162/161/g' /etc/hosts"
    dns02:
    dns01:

    第三步:验证是否修改成功

    [root@saltmaster salt]# salt '*' cmd.run 'grep salt /etc/hosts'
    dns02:
        10.80.0.161  salt
    dns01:
        10.80.0.161  salt

    第四步:重启所有minion服务

    [root@saltmaster salt]# salt '*' service.restart salt-minion
    dns02:
        True
    dns01:
        True

    第五步:在masternew上验证是否接管了所有minion

    [root@masternew]# salt '*' test.ping
    dns01:
        True
    dns02:
        True

    ------迁移结束

  • 相关阅读:
    高性能MySQL--创建高性能的索引
    error:0906D064:PEM routines:PEM_read_bio:bad base64 decode
    高性能MySQL--MySQL数据类型介绍和最优数据类型选择
    Elasticsearch入门和查询语法分析(ik中文分词)
    裁员浪潮,互联网人该何去何从?
    django+mysql的使用
    很详细的Django入门详解
    (2021年1月5日亲测有效)最新PyCharm 安装教程&激活破解,Pycharm激活,Pycharm破解
    (2021年1月5日更新)!最新的pycharm永久激活办法,亲测有效
    太干了!一张图整理了 Python 所有内置异常
  • 原文地址:https://www.cnblogs.com/snailshadow/p/8005341.html
Copyright © 2020-2023  润新知