自动化运维工具——SaltStack(缓存及节点代理)
作者:互联网
SaltStack
一、安装keepalive
一、pillar调用设置
设置安装模块
vim /srv/pillar/kp.sls
//
{% if grains['fqdn'] == 'server2' %}
state: Master
vrid: 42
pri: 100
{% elif grains['fqdn'] == 'server3' %}
state: BACKUP
vrid: 42
pri: 50
{% endif %}
设置高可用模块
[root@server1 pillar]# ls
kp.sls pkgs.sls top.sls
[root@server1 pillar]# vim top.sls
///
base:
'*':
- pkgs
- kp
//
二、keepalive文件配置
[root@server1 salt] mkdir /etc/salt/keeplived
[root@server1 salt] cd /etc/salt/keeplived
[root@server1 keepalive] vim keepalived.conf
/
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost 修改1
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1 修改2
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict 修改3
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state {{ MASTER }} 修改4
interface eth0
virtual_router_id {{ VRID }} 修改5
priority {{ PRI }} 修改6
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.42.100/24 修改5
}
/
安装文件设置
[root@server1 keepalive] vim init.sls
/
kp-install:
pkg.installed:
- name: keepalived
file.managed:
- name: /etc/keepalived/keepalived.conf
- source: salt://keepalived/keepalived.conf
- template: jinja
- context:
STATE: {{ pillar['state'] }}
VRID: {{ pillar['vrid' ]}}
PRI: {{ pillar['pri'] }}
service.running:
- name: keepalived
- reload: true
- watch:
- file: kp-install
///
修改top文件
[root@server1 salt]# vim top.sls
/
base:
'roles:apache':
- match: grain
- apache
- keepalived
'roles:nginx':
- match: grain
- nginx
- keepalived
///
三、测试结果:
[root@server1 salt]# salt '*' state.highstate
二、job管理
一、前言
缓存产生说明:
1 master在下发指令任务时,会附带上产生的jid。
2 minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。
3 minion服务器在指令执行完毕将结果传送给master后,删除该临时文件。
缓存情况:
master
Job缓存默认保存24小时: vim /etc/salt/master
master端Job缓存目录:/var/cache/salt/master/jobs
minion
缓存地址:var/cache/salt/minion/proc (执行master命令后则会删除调)
二、实验目的
通过两种方法将缓存数据导入到数据库,长久记录缓存
方法一、
minion在将数据返还给master的同时的直接将数据导入到数据库
方法二、
将数据返还给Master,通过Master再导入数据库
server1 172.25.42.1 master
server2 172.25.42.2 minion
server3 172.25.42.3 minion
三、实验过程
1.方法一
server2
本实验:minion将数据传给master的同时,也将数据直接导入数据库
vim /etc/salt/minion 设置master的ip等参数
yum search MySQL-python.x86_64 下载导入数据库的python工具
server1
安装接受数据返还的数据库
yum install mariadb-service
systemctl start mariadb
mysql_secure_installation 执行mysql初始化
将配置的jobs导入到mysql(或者用直接配置好的文件test.sql)
cd /srv/salt
vim jobs.sql
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;
/
mysql -pwestos < job.sql 将job.sql模板导入mysql
查看数据库模板配置
mysql -p
MariaDB [(none)]> show databases;
MariaDB [salt]> show tables;
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt';
测试
salt server2 test.ping --return mysql 图1
salt server2 mydisk.df --return mysql 图2
图1
图2
在数据库中查看实验结果
MariaDB [salt]> select * from salt_returns\G;
MariaDB [(none)]> show databases;
MariaDB [salt]> show tables;
在数据库中看到刚才ping的操作
2.方法二
先将刚才的server2里/etc/salt/minion文件改过的东西注释调
本实验:minion将数据传给master,通过master传给minion
cd /var/cache/salt/master/jobs 进入master里的缓存地址,看到缓存如图1
vim /etc/salt/master 更改配置文件
图1
图2
进行授权
mysql -p
MariaDB [(none)]> show databases;
MariaDB [salt]> show tables;
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt';
MariaDB [(none)]> exit
systemctl restart salt-master
yum search MySQL-python.x86_64 下载导入数据库的python工具
测试方法同方法一,都能在数据库中查看到缓存信息。
三、salt-ssh服务
salt-ssh可以独立运行的,不需要minion端。
salt-ssh 用的是sshpass进行密码交互的。
以串行模式工作,性能下降。
server3
systemctl stop salt-minion
server1
cd /etc/salt/
vim roster 图1
yum install salt-ssh
图1
测试:
server1
salt-ssh '*' test.ping
salt-ssh '*' mydisk.df
实验结果:当server的salt-minion关闭后仍能获取到
四、salt-syndic
给master设立一个顶级主机topmaster,其他普通master设定为Syndic节点,因此管理员只需要管理顶级topmaster就能够管理所有的minion服务器
server4
将此服务器作为topmaster
[root@server4 salt]yum install -y salt-master
[root@server4 salt] cd /etc/salt/
[root@server4 salt] ls
cloud cloud.maps.d master minion.d proxy.d
cloud.conf.d cloud.profiles.d master.d pki roster
cloud.deploy.d cloud.providers.d minion proxy
[root@server4 salt] vim master 开启顶级master,如图1
[root@server4 salt] systemctl start salt-master
图1
server1
[root@server4 salt] yum install -y salt-master
[root@server4 salt] cd /etc/salt/
[root@server4 salt] ls
cloud cloud.maps.d master minion.d proxy.d
cloud.conf.d cloud.profiles.d master.d pki roster
cloud.deploy.d cloud.providers.d minion proxy
[root@server4 salt] vim master 开启syndic节点
[root@server4 salt] systemctl start salt-master
[root@server1 salt] systemctl start salt-syndic.service
[root@server1 salt] systemctl restart salt-master.service
测试:
server4(topmaster)
[root@server4 salt] salt-key -L 图1
[root@server4 salt] salt-key -A 图1
[root@server4 salt] salt '*' my_disk.df df测试、图2
发现已经连接到了server1(sydic)
图1
图2
标签:缓存,运维,minion,salt,server1,server4,master,SaltStack,root 来源: https://blog.csdn.net/weixin_48819467/article/details/118878789