SaltStack自动化运维——实现高可用、job管理(将推送数据保存在数据库中)

本文介绍了如何使用SaltStack实现Apache+nginx+keepalived的高可用部署,详细阐述了Job管理,包括Job简介、Job缓存,并展示了两种将推送数据保存在数据库中的方法,涉及数据库配置、权限管理和数据写入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.实现高可用(apache+nginx+keepalived)

前面实验使用server1(saltstack的master节点)给server2(saltstack的minion节点)安装了httpd服务,给server3(saltstack的minion节点)安装了nginx服务
现在使用server1给server2和server3部署高可用keepalived

实验:
(1)在/srv/salt目录下建立keepalived目录,进入keepalived目录,编辑推送脚本文件
先实现一个推送安装keepalived任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
推送成功,server2和server3上成功安装keepalived
(2)编辑推送脚本文件
写入变量:高可用两个节点的状态,优先级别使用变量

在这里插入图片描述
在这里插入图片描述
(3)在keepalived目录下面建立files目录,复制server2上的keepalived的配置文件到这个目录下,编辑此文件
在这里插入图片描述
写入一个Vip:172.25.12.100,供外界客户端访问测试
在这里插入图片描述
(4)编辑之前的pillar目录下的变量文件
在这里插入图片描述
在这里插入图片描述
(5)编辑全局变量文件
在这里插入图片描述
在这里插入图片描述
(6)全局推送,给server2和server3上面安装keepalived,实现高可用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(7)验证:
server2上的httpd服务和server3上的nginx服务是开启的
在这里插入图片描述
在这里插入图片描述
在server2上可以看到Vip:172.25.12.100
在这里插入图片描述
在浏览器上访问测试一下,可以看到httpd服务的默认发布页
在这里插入图片描述
当关闭server2上的kepalived高可用后,vip就会漂移
在这里插入图片描述
可以看到vip已经漂移到了server3上面
在这里插入图片描述
浏览器上访问测试:
可以看到是server3上的nginx默认发布页
在这里插入图片描述
在server2上重启高可用keepalived,就会发现vip又回来了,这是因为我们设置的server2优先级高

2.Job管理

2.1 Job简介

master在下发指令任务时,会附带上产生的jid。
minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。
指令执行完毕将结果传送给master后,删除该临时文件。

2.2 Job cache

Job缓存默认保存24小时:

vim /etc/salt/master
keep_jobs: 24

当处于图形化管理的时候,推送的结果是看不到的,而这些存放结果的job文件,就是查看推送成功与否的重要指示
master端Job缓存目录:
/var/cache/salt/master/jobs

2.3 将推送数据保存在数据库中的方式

为了可以长久性保存job文件并且可以随时方便的查看,就需要将job储存在数据库里,方式就是当minion节点返回数据给master是,master在将数据发送给数据库进行储存
方式一:在master节点和minion节点均部署数据库
(1)在server1和server2上安装数据库
在这里插入图片描述
在这里插入图片描述
(2)开启server1上的数据库,进行安全初始化,初始化完成后登陆
在这里插入图片描述
在这里插入图片描述
(3)编辑test.sql语句文件,给数据库导入job的数据
在这里插入图片描述

CREATE DATABASE  `salt`
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;
USE `salt`;
DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
  `jid` varchar(255) NOT NULL,
  `load` mediumtext NOT NULL,
  UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
  `fun` varchar(50) NOT NULL,
  `jid` varchar(255) NOT NULL,
  `return` mediumtext NOT NULL,
  `id` varchar(255) NOT NULL,
  `success` varchar(10) NOT NULL,
  `full_ret` mediumtext NOT NULL,
  `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY `id` (`id`),
  KEY `jid` (`jid`),
  KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(4)将数据导入
在这里插入图片描述
(5)查看数据库
在这里插入图片描述
此时还没有数据,显时为空
在这里插入图片描述
(6)在server2上编辑minion配置文件,开启return: mysql,给数据库写入数据,重启minion服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(7)测试,在数据库上进行授权,添加授权用户
在这里插入图片描述
在这里插入图片描述
(8)在数据库的表中查看数据已经写入
在这里插入图片描述
第一种方式,缺点是需要在每一个minion节点安装数据库
方式二:只在master节点部署数据库
(1)查看缓存
在这里插入图片描述
(2)编辑master配置文件,添加数据
在这里插入图片描述
在这里插入图片描述
(3)登陆数据库,添加用户授权
在这里插入图片描述
在这里插入图片描述
(4)在master上安装,MySQL-python插件支持使用
在这里插入图片描述
(5)重启salt-master服务
在这里插入图片描述
在这里插入图片描述
(6)master与minion进行交互,通过 salt server3 test.ping来测试客户端是否在线,并被master管理,如果返回True,则说明客户端已经被master管理,并处于在线状态。
在这里插入图片描述
(8)在数据库中进行查看,发现数据已经写入数据库的表中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 Job管理命令

salt-run jobs.active	## 查看所有minion当前正在运行的jobs(在所有minions上运行saltutil.running)
salt-run jobs.list_jobs	## 列出当前master jobs cache中所有job
salt-run jobs.lookup_jid <jid>	##从master jobs cache中查询指定jid的运行结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值