SaltStack自动化运维部署

一.什么是SaltStack

SaltStack是一个服务器基础设施管理工具,它具有配置管理,远程执行,监控等功能,SaltStack由Python语言编写,是非常简单易用和轻量级的管理工具。

二.为什么使用SaltStack

为同时管理多台机器,与传统的Xshell不同的是它不需要与每台主机手动建立链接,而是在客户端安装客户端应用程序Minion,由客户端应用程序主动连接服务端Master。

 三.SaltStack原理

        SaltStack由Master和Minion构成,Master是服务端,表示一台服务器,Minion是客户服务器端,表示多台服务器

        在 Master 上发送命令给符合条件的 Minion,Minion 就会执行相应的命令。Master 和 Minion 之间是通过 ZeroMQ(消息队列)进行通信。

        Saltstack 的 Master 端监听 45054506 端口,4505为 Saltstack 的消息发布端口,4506为 Saltstack 客户端与服务端通信的端口。Saltstack 客户端程序并不监听端口,当客户端启动后,会主动连接 Master 端注册,然后一直保持该 TCP 连接,而 Master 通过这条 TCP 连接对客户端进行控制。如果连接断开,aster 对客户端将不能进行控制。但是,当客户端检查到连接断开后,会定期的向Master 端请求注册连接。

四.SaltStack部署 

1.设置系统基础环境

(1)修改host文件

192.168.10.101 master
192.168.10.102 minion01
192.168.10.103 minion02

 (2)关闭防火墙和内核安全机制

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

(2)按要求设置主机名称

hostnamectl set-hostname  名称

 2.安装Master

将所需rpm包拷贝到服务器

rpm -ivh salt-3006.4-0.x86_64.rpmrpm -ivh salt-master-3006.4-0.x86_64.rpm 

 备注:
        以下软件包为扩展 saltstack 的可选组件。
        salt-ssh:主要作用是不需要安装 minion,只要 ssh 协议开放,即可远程执行命令,可用作拿到一批新机器,批量配置时使用,也可以直接通过 salt-ssh 不安装 minion 进行管理。
        salt-syndic:通过 Syndic,可以建立多层级的Salt拓扑,Syndic 下的Minions 即可通过 syndic所在的 Master 进行管理,也可以通过 MasterOfMaster 及更高层级的 Master 进行管理,架构变得异常灵活,
        salt-cloud:salt cloud 目前已经提供了对腾讯云平台的管理支持,一些常见的云平台管理功能、管理操作已经都可以做到通过 salt cloud 集成到自有的技术平台上做统一的资源管理了。
        salt-api:salt-api 是我们通过 restful-api 调用 salt-master 的接口,且调用的时候必须通过认证才能调用,认证的用户为系统用户

3. 配置Master

(1)修改Master的配置文件

[root@master ~]# vim /etc/salt/masterinterface: 192.168.10.101
auto_accept: Truefile_roots:base:- /srv/saltnodegroups:group1: 'web01'group2: 'web02'pillar_opts: True
pillar_roots:base:- /srv/pillar

备注:

file_roots:
  base:
    - /srv/salt

开启SaltStack文件根目录位置,注意这个目录默认没有创建,需要手动创建

pillar_opts: True

开启pillar功能,同步文件功能
pillar_roots:
  base:
    - /srv/pillar

pillar的主目录,需要自己创建

nodegroups:
  group1: 'web01'
  group2: 'web02'

设置主机组,group1:“web01”组中有多个成员就用逗号隔开——》group: 'web01,web02'

(2)创建相关目录

 mkdir /srv/saltmkdir /srv/pillar

 (3)开启Master并设置为开机自启

systemctl start salt-master
systemctl enable salt-master

(4)查看相关端口(4505,4506),确保Master正常开启 

[root@master ~]# netstat -anpt | grep salt
tcp        0      0 192.168.10.101:4505     0.0.0.0:*               LISTEN      1760/salt-master Pu 
tcp        0      0 192.168.10.101:4506     0.0.0.0:*               LISTEN      1766/salt-master Re 

4.安装Minion 

将所需rpm包拷贝到服务器

rpm -ivh salt-3006.4-0.x86_64.rpmrpm -ivh salt-master-3006.4-0.x86_64.rpm 

5.配置Minion

(1)修改Minion的配置文件

vim /etc/salt/minionmaster: 192.168.10.101
id: web01                #添加到相关组

注意:
        如果修改了 minion 端的 id, minion 会重新注册,向 master 发送新的 key,老的注册信息就失效了,但此时 master 仍然会连接老的 minion,于是就会报错,
        解决方法:可以删除掉老的 minion 注册信息,Master目录/etc/salt/pki/master/minions,默认会使用minion 端的 ip 地址作为 key 名称。将以前注册的 ID 删掉,即可。

(2) 启动Minion并设置为开机自启

systemctl start salt-minion
systemctl enable salt-minion

备注:

        当 Minion 启动后,会自动生成公钥和私钥,并将公钥发送到Master端。Minion不监听端口,全靠和Master保持长连接,可通过netstat -anpt | grep salt命令查看是否连接成功,到此SaltStack安装完成。

(3)查看端口验证

[root@minion01 ~]# netstat -anpt | grep salt
tcp        0      0 192.168.10.102:42312    192.168.10.101:4506     ESTABLISHED 2153/salt-minion Mu 
tcp        0      0 192.168.10.102:48640    192.168.10.101:4505     ESTABLISHED 2153/salt-minion Mu

(4)Master查看连接

[root@master minions]# netstat -anpt | grep salt
tcp        0      0 192.168.10.101:4505     0.0.0.0:*               LISTEN      1760/salt-master Pu 
tcp        0      0 192.168.10.101:4506     0.0.0.0:*               LISTEN      1766/salt-master Re 
tcp        0      0 192.168.10.101:4506     192.168.10.103:60084    ESTABLISHED 1766/salt-master Re 
tcp        0      0 192.168.10.101:4505     192.168.10.102:48640    ESTABLISHED 1760/salt-master Pu 
tcp        0      0 192.168.10.101:4505     192.168.10.103:60734    ESTABLISHED 1760/salt-master Pu 
tcp        0      0 192.168.10.101:4506     192.168.10.102:42312    ESTABLISHED 1766/salt-master Re 

6.Master端查看Minion密钥

        在 minion 启动后,会连接master,并且会请求 master 为其签发证书,待证书签发完成后,代表master 可以信任该 minion,并且 minion 和 master 端的通信是经过加密的。我们可以通过 salt-key命令管理 minion 秘钥。

(1)Master端查看介绍的Minion端

[root@master minions]# salt-key -L
Accepted Keys:
web01
web02
Denied Keys:
Unaccepted Keys:
Rejected Keys:

(2)获取Minion端指纹码

[root@master minions]# salt-key -f web01
Accepted Keys:
web01:  05:28:c4:39:b1:55:24:2b:42:18:6a:70:d9:9f:51:fa:a3:c3:66:df:0c:bd:0c:47:d9:26:f7:c9:7c:9a:05:4e

(3)前往Minion端验证指纹码

[root@minion01 ~]# salt-call --local key.finger
local:05:28:c4:39:b1:55:24:2b:42:18:6a:70:d9:9f:51:fa:a3:c3:66:df:0c:bd:0c:47:d9:26:f7:c9:7c:9a:05:4e

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144725.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

主机和Docker容器之间的文件互传方法汇总

Docker渐渐成为前端的一个工具,它像一个通用包装,可以把各种环境包裹其中,从而实现跨设备的兼容。使用的过程中,往往会需要将本地的文件和docker容器内部的文件互传:将主机的文件传递给容器内,让里面的工具…

向日葵好用吗?4款稳定的远程控制软件推荐。

远程控制技术现在已经被应用于很多个领域,像企业办公,远程协助,智能家居,工业控制等等。我们常常会用到的时前两种。而实现远程控制的方式也有多种,但是最方便高效的还是使用第三方软件。我最常使用的是向日葵&#xf…

城市脉络下的空间句法:中介中心性、接近中心性与绕行率的深度解析

这一篇是对上篇内容的继续深化,也就是sDNA “整体分析”(Integral Analysis)计算结果代表的意思,有哪些?意义是什么? 上篇文章指路:城市脉络下的空间句法:整合度与选择度的深度解析…

vue实现二维码生成器应用

实现一个简单的二维码生成器应用,可以使用 Vue 前端结合一个 JavaScript 库(如 qrcode.js 或 QRCode.js)来生成二维码。以下是一个完整的实现步骤: 步骤 1:安装依赖 首先,你需要安装 qrcode 库&#xff0c…

Unity教程(十六)敌人攻击状态的实现

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

macOS平台编译MAVSDK源码生成mavsdk库与mavsdk_server服务可执行文件

克隆源码: 克隆命令 git clone https://github.com/mavlink/MAVSDK.git --recursive 克隆成功如下: 生成makefile (只生成mavsdk库) cmake -Bbuild/default -DCMAKE_BUILD_TYPE=Debug -H. 指定安装目录与生成目录: cmake -Bbuild/macos -DCMAKE_BUILD_TYPE=Debug -…

pg入门3—详解tablespaces2

pg默认的tablespace的location为空,那么如果表设置了默认的tablespace,数据实际上是存哪个目录的呢? 在 PostgreSQL 中,如果你创建了一个表并且没有显式指定表空间(tablespace),或者表空间的 location 为…

面试官问:你如何处理与同事或上级的分歧?【无标题】

面试官问:你如何处理与同事或上级的分歧? 当面试官问你如何处理与同事或上级的分歧,其实面试官的目的是评估你的沟通技巧、冲突解决能力和团队合作的能力。在一起共事,就一定有分歧发生,有争执是正常的,关…

OJ在线评测系统 思考主流OJ的实现方案 常用概念 自己的思考

OJ判题系统常用概念 OJ系统 在线判题系统 AC all accpeted 测试样例全部通过 题目介绍 题目输入 题目输出 题目输出用例 题目输入用例 不能让用户随便引入包 随便遍历 暴力破解 需要使用正确的算法 提交后不会立刻出结果 而是异步处理 提交后会生成一个提交记录 有运…

大牛直播SDK核心音视频模块探究

技术背景 视沃科技旗下”大牛直播SDK”,始于2015年,致力于传统行业极致体验的音视频直播技术解决方案,产品涵盖跨平台的实时RTMP推流、RTMP/RTSP直播播放(支持RTSP|RTMP H.265,Enhanced RTMP H.265)、GB28181设备接入、推送端播放…

内存管理篇-27寄存器映射:ioremap

驱动在读写寄存器是,需要将寄存器进行ioremap。在x86上,通过专用的指令进行编址访问,但是在arm上是进行统一的编址(占用32位4GB空间的某一小段),因此也叫memory-map的设备。 实现机制:

【IPOL阅读】点云双边滤波

文章目录 简介点云滤波处理结果 简介 IPOL,即Image Processing On Line,理论上是一个期刊,但影响因子很低,只是个SCIE,按理说没什么参考价值。但是,这个网站的所有文章,都附带了源代码和演示窗…

阿里云CTO:通义稳居全球最强开源大模型,性能接近GPT-4o

来源:首席数智官 9月19日,在2024杭州云栖大会上,阿里云CTO周靖人表示,阿里云正在围绕AI时代,树立一个AI基础设施的新标准,全面升级从服务器到计算、存储、网络、数据处理、模型训练和推理平台的技术架构体…

python+flask+mongodb+vue撸一个实时监控linux服务资源的网站

用pythonflaskmongodbvue写一个监控linux服务资源实时使用率的页面网站,并每30秒定时请求,把Linux数据保存数据到mongodb数据库中,监控的linux的资源有:cup、内存、网络带宽、mysql慢查询、redis、系统平均负载、磁盘使用率等&…

黑马头条APP手工测试项目

1.app有关概念 APP测试范围: 业务功能测试 专项测试:兼容性测试 、安装/卸载/升级测试、交叉事件测试 、push消息推送测试、性能测试、其他测试(用户体验、权限/边界、权限) 功能测试测试对象: 功能点(单…

synchronized是怎么实现的?

synchronized是JVM的语法糖,主要是通过JVM来控制的。其实现原理依赖于JVM的监视器和对象头。 synchronized修饰方法时,JVM会通过编译完的字节码的访问标记来区分该方法是否被synchronized修饰,在进入方法的时候就会进行获得锁的竞争&#xff…

今日所学啊

ArcGIS打不开焦点统计如何解决_arcgis焦点统计打不开-CSDN博客 好吧其实最后焦点统计还是不行&#xff0c;我就去ArcGIS Pro里做焦点统计了哈哈哈哈哈哈哈 visual studio多工程项目管理_visual studio 的模块管理-CSDN博客 1.今天成功#include <QNetworkReply>不画红线…

C++:布尔类型,引用,堆区空间

1.布尔类型 #include <iostream>using namespace std;int main() {bool b13;bool b20;cout << "b1" <<b1<< endl;cout << "b2" <<b2<< endl;cout <<boolalpha<< "b1" <<b1<<…

米客方德SD NAND 掉电测试

SD NAND 异常上下电测试的作用 SD NAND 异常上下电测试是一项关键的测试步骤&#xff0c;对确保SD NAND在不同电源条件下的稳定性和可靠性至关重要。 通过模拟正常和异常电源情况&#xff0c;测试可以验证设备的电源管理功能、检测潜在错误和异常行为&#xff0c;并评估设备在…

MacOS安装homebrew,jEnv,多版本JDK

1 安装homebrew homebrew官网 根据官网提示&#xff0c;运行安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装后&#xff0c;bash会提示执行两条命令 (echo; echo eval "$(/opt/homebrew/b…