首页 运维 网络学院 查看内容

自动化运维是什么?这篇文章可以给你带来入门

2019-2-2 11:27 |来自: 互联网 1285 0

摘要: 什么才是自动化运维?互联网发展到今天,业务变的越来越复杂,用户的需求也变得越来越广泛,为了保证服务器能够安全稳定的工作。就需要有专门的人来进行运维。在互 ...
关键词:salt node root Minion node2 Master 00 usr bin Python

自动化运维之SaltStack实践

一、Slatstack入门

1.1、什么才是自动化运维?

互联网发展到今天,业务变的越来越复杂,用户的需求也变得越来越广泛,为了保证服务器能够安全稳定的工作。就需要有专门的人来进行运维。在互联网服务器方面,Linux由于效率高、应用广等优势,在中高端服务器中一直占据着主导的地位。互联网Linux运维工作。主要任务是保证公司的互联网业务能够24小时为用户提供稳定、高质、安全的服务。工作内容包括应用系统的发布、部署、变更、监控、事件处理、优化以及系统架构设计调优、提供运维报告等。

而自动化运维是在传统运维的基础上产生的。由于服务器的数量一般都很巨大,仅仅通过人工已经无法满足管理上的要求。于是自动化运维开始受到人们的重视。自动化运维能够大大降低运维人员的工作负担。自动化运维是通过编程,使得计算机能够自动发现故障,并能够报警或者按照事先给定的程序解决问题。主要是将运维中大量的重复性工作转换成自动化操作。

与传统的普通运维相比,能够大量减少人力财力,同时能够有效减少甚至消除运维中的延迟状况。实现真正意义上的零延时Linux运维。

1.2、Slatstack简介

Slatstack是基于Python语言开发的一套C/S架构配置管理工具,它底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行的认证管理。

1.2.1、什么是C/S架构?

Client/Server架构,即客户端/服务器架构。通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。

1.2.2、了解ZeroMQ

号称世界上最快的消息队列ZeroMQ使得Saltstack能够快速的在成千上万台机器上进行各种操作。而且采用了RSA Key方式确认身份,传输采用的是AES加密,这使用的它的安全性得到了保障。

1.2.3、Slatstack的通信方式

在Slatstack中服务端的名称为:Master,客户端的名称为:Minion。它们都是以守护进程的模式运行。一直监听着配置文件中定义的ret_prot(接受客户端的请求),同时也监听着publish_port发布消息的端口,当客户端运行的时候,它会自动监听配置文件中定义的ret_prot服务端的地址进行链接验证。

1.2.3、了解RSA Key?

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、q的积, n的二进制表示时所占用的位数,就是所谓的密钥长度。

1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质 再选择e2,要求(e2e1)mod((p-1)*(q-1))=1。(n及e1),(n及e2)就是密钥对。

总结:Slatstack通过RSA Key算法进行身份验证,传输使用AES进行加密,使Slatstack安全性方面得到了保障。

二、Slatstack部署

实践环境:

2.1、SaltStack安装环境准备

测试Matser IP地址:192.168.1.111 主机名:node1

测试Minion IP地址:192.168.1.124 主机名:node2

2.2、SaltStack_master基础环境准备:

2.2.1、更改master主机hosts文件

[root@node1 ~]# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.111 node1

192.168.1.124 node2

2.2.2、配置阿里yum源

[root@node1 ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 2523 100 2523 0 0 19073 0 --:--:-- --:--:-- --:--:-- 19407

2.2.3、下载epel源

[root@node1 ~]# yum install epel-* -y

2.2.4、关闭防火墙及Selinux

[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0

2.3、安装Saltstack_master操作:

2.3.1、安装salt-master && salt-minion

[root@node1 ~]# yum install salt-master salt-minion -y

2.3.1、启动salt-master

[root@node1 ~]# systemctl start salt-master

[root@node1 ~]# ps -ef | grep salt-

root 11555 1 14 06:25 ? 00:00:01 /usr/bin/python /usr/bin/salt-master

root 11564 11555 13 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master

root 11565 11555 0 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master

root 11566 11555 0 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master

root 11567 11555 0 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master

root 11572 11567 19 06:25 ? 00:00:01 /usr/bin/python /usr/bin/salt-master

root 11573 11567 13 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master

root 11574 11567 18 06:25 ? 00:00:01 /usr/bin/python /usr/bin/salt-master

root 11581 11567 13 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master

root 11582 11567 16 06:25 ? 00:00:01 /usr/bin/python /usr/bin/salt-master

root 11583 11567 0 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master

2.3.2、启动salt-minion

在启动salt-minion时需要修改配置文件指定master地址后,才可以启动如下:

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

[root@node1 ~]# systemctl start salt-minion

[root@node1 ~]# ps -ef | grep salt-minion

root 12078 1 4 09:45 ? 00:00:00 /usr/bin/python /usr/bin/salt-minion

root 12081 12078 19 09:45 ? 00:00:01 /usr/bin/python /usr/bin/salt-minion

root 12111 2648 0 09:45 pts/0 00:00:00 grep --color=auto salt-minion

2.4、客户端操作:

[root@node2 ~]# yum install -y salt-minion

2.4.1、修改salt-minion主配置文件

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

2.4.2、启动Salt-minion

[root@node2 ~]# systemctl start salt-minion

[root@node2 ~]# ps -ef | grep salt-minion

root 11741 1 4 10:52 ? 00:00:00 /usr/bin/python /usr/bin/salt-minion

root 11744 11741 23 10:52 ? 00:00:01 /usr/bin/python /usr/bin/salt-minion

root 11774 2702 0 10:52 pts/0 00:00:00 grep --color=auto salt-minion

在Slatstack中服务端的名称为:Master,客户端的名称为:Minion。它们都是以守护进程的模式运行。一直监听着配置文件中定义的ret_prot(接受客户端的请求),同时也监听着publish_port发布消息的端口,当客户端运行的时候,它会自动监听配置文件中定义的ret_prot服务端的地址进行链接验证。

2.5、Salt秘钥认证设置

2.5.1、查看salt-master 目录结构:

[root@node1 salt]# tree

.

├── master

├── minion

├── minion.d

├── minion_id

└── pki

├── master

│ ├── master.pem

│ ├── master.pub

│ ├── minions

│ ├── minions_autosign

│ ├── minions_denied

│ ├── minions_pre

│ │ ├── node1

│ │ └── node2

│ └── minions_rejected

└── minion

├── minion.pem

└── minion.pub

9 directories, 9 files

2.5.2、使用salt-key命令查看key状态

[root@node1 salt]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
node1
node2
Rejected Keys:

2.5.3、使用salt-key -a {Linux} 命令将秘钥通过允许,随后node1 and node2 将会移植到minions目录中

[root@node1 salt]# salt-key -a node*
The following keys are going to be accepted:
Unaccepted Keys:
node1
node2
Proceed? [n/Y] y
Key for minion node1 accepted.
Key for minion node2 accepted.
[root@node1 salt]# salt-key
Accepted Keys:
node1
node2
Denied Keys:
Unaccepted Keys:
Rejected Keys:
[root@node1 salt]# tree
.
├── master
├── minion
├── minion.d
│ └── _schedule.conf
├── minion_id
└── pki
 ├── master
 │ ├── master.pem
 │ ├── master.pub
 │ ├── minions
 │ │ ├── node1
 │ │ └── node2
 │ ├── minions_autosign
 │ ├── minions_denied
 │ ├── minions_pre
 │ └── minions_rejected
 └── minion
 ├── minion_master.pub
 ├── minion.pem
 └── minion.pub

如图

2.6、Salt远程命令

2.6.1、test.ping

[root@node1 salt]# salt * test.ping
node1:
 True
node2:
 True

2.6.2、salt-run 该命令执行runner

查看所有minion状态

[root@node1 salt]# salt-run manage.status
down:
up:
 - node1
 - node2

查看所有没在线的minion

[root@node1 salt]# salt-run manage.down

查看全部在线的minion

[root@node1 salt]# salt-run manage.up
- node1
- node2
[root@node1 salt]#

2.6.3、salt-key 密钥管理,通常在master端执行

查看所有minion-key

[root@node1 salt]# salt-key -L

Accepted Keys:

node1

node2

Denied Keys:

Unaccepted Keys:

Rejected Keys:

[root@node1 salt]#

接受某个minion-key

[root@node1 salt]# salt-key -a 

接受所有minion-key

[root@node1 salt]# salt-key -A

删除某个minion-key

[root@node1 salt]# salt-key -d 

2.6.3、salt-cp 分发文件到minion上,不支持目录分发,通常在master运行

例如:将master主机的text.txt文件分发至node2主机的/opt/下

[root@node1 src]# touch text.txt

[root@node1 src]# echo "this is a yankerp" > text.txt

[root@node1 src]# salt-cp node2 text.txt /opt/

{node2: {/opt/text.txt: True}}

minion查看文件结果

2.7、saltstack 的常用模块

可以通过salt ‘*’ sys.list_modules 参看当前版本系统支持的相关模块。 部分截图:

2.7.1、Archive 模块

功能:实现系统层面的压缩包调用,支持gunzip、gzip、rar、tar、unrar、unzip

例如:利用gzip方法对yankai.txt进行压缩

[root@node1 ~]# salt node2 archive.gzip /opt/yankai.txt
node2:

node2查看

[root@node2 opt]# ll
total 4
-rw-r--r--. 1 root root 31 Jan 9 11:33 yankai.txt.gz

2.7.2、cmd 模块

功能:实现远程的命令行调用执行(默认具备root操作权限)

例如:查看所有salt-minion内存及磁盘挂载情况

[root@node1 ~]# salt * cmd.run free -m

node2:

total used free shared buff/cache available

Mem: 1824 177 1042 8 604 1452

Swap: 2047 0 2047

node1:

total used free shared buff/cache available

Mem: 1824 313 958 8 552 1329

Swap: 1023 0 1023

[root@node1 ~]# salt * cmd.run df -h

node2:

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/centos-root 50G 5.7G 45G 12% /

devtmpfs 903M 0 903M 0% /dev

tmpfs 913M 12K 913M 1% /dev/shm

tmpfs 913M 8.6M 904M 1% /run

tmpfs 913M 0 913M 0% /sys/fs/cgroup

/dev/mapper/centos-home 48G 33M 48G 1% /home

/dev/sda1 497M 124M 373M 25% /boot

tmpfs 183M 0 183M 0% /run/user/0

node1:

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/centos-root 99G 1.1G 98G 2% /

devtmpfs 903M 0 903M 0% /dev

tmpfs 913M 16K 913M 1% /dev/shm

tmpfs 913M 8.5M 904M 1% /run

tmpfs 913M 0 913M 0% /sys/fs/cgroup

/dev/sda1 497M 124M 373M 25% /boot

tmpfs 183M 0 183M 0% /run/user/0

2.7.3、netwrok 模块

功能:返回被控主机网络信息

例如:获取node2主机的网卡信息

[root@node1 ~]# salt node2 network.interfaces

node2:

----------

eno16777728:

----------

hwaddr:

00:0c:29:5a:5b:a7

inet:

|_

----------

address:

192.168.1.124

broadcast:

192.168.1.255

label:

eno16777728

netmask:

255.255.255.0

inet6:

|_

----------

address:

fe80::20c:29ff:fe5a:5ba7

prefixlen:

64

scope:

link

up:

True

lo:

----------

hwaddr:

00:00:00:00:00:00

inet:

|_

----------

address:

127.0.0.1

broadcast:

None

label:

lo

netmask:

255.0.0.0

inet6:

|_

----------

address:

::1

prefixlen:

128

scope:

host

up:

True

[root@node1 ~]#

获取minion主机的IP地址配置信息

[root@node1 ~]# salt node2 network.ip_addrs
node2:
 - 192.168.1.124

2.7.4、Pkg包管理模块

功能:被控主机程序包管理,如yum、apt-get等

node2被控主机安装vim

[root@node1 ~]# salt node2 pkg.install vim
node2:
 ----------
 gpm-libs:
 ----------
 new:
 1.20.7-5.el7
 old:
 vim-common:
 ----------
 new:
 2:7.4.160-5.el7
 old:
 vim-enhanced:
 ----------
 new:
 2:7.4.160-5.el7
 old:
 vim-filesystem:
 ----------
 new:
 2:7.4.160-5.el7
 old:
[root@node1 ~]#

2.7.5、Service服务模块

功能:被控主机程序包服务管理

[root@node1 ~]# salt node2 service.stop php-fpm 
node2:
 True
[root@node1 ~]# salt node2 service.start php-fpm
node2:
 True
[root@node1 ~]# salt node2 service.restart php-fpm
node2:
 True
[root@node1 ~]# salt node2 service.status php-fpm
node2:
 True
[root@node1 ~]# salt node2 service.stop php-fpm 
node2:
 True
[root@node1 ~]# salt node2 service.status php-fpm
node2:
 False
[root@node1 ~]#

希望对您有所帮助,再见~

看我的文章,若没看懂,是我的问题。 但我坚信,认真看过三遍以上的文章,绝对可以学到东西。我是@延瓒Yankerp

送给正在拼搏的你~

本文出处: https://www.toutiao.com/a6653014244352590344/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部