运维工程师职业技能发展路线框架

你。 提交于 2020-03-20 12:38:47

运维框架

目录

运维框架 1

1. 基础知识 5

1.1 系统原理 5

1.2 命令基础 6

1.3 网络基础 6

1.4 排错基础 6

1.5 优化基础 6

1.6 安全基础 6

1.7 原理基础 6

2. WEB管理 7

2.1 Nginx 7

2.1.1 部署 7

2.1.2 优化 7

2.1.3 备份 7

2.1.4 恢复 7

2.2 Httpd 7

2.3 Tomcat 7

2.4 IIS 7

3. 数据库 7

3.1 MySQL 7

3.1.1 部署 7

3.1.2 优化 7

3.1.3 备份 7

3.1.4 恢复 7

3.2 Oracle 8

3.3 MongoDB 8

3.4 Redis 8

3.5 Memcached 8

4. 消息队列 8

4.1 ActiveMQ 8

4.2 RabbitMQ 8

4.2.1 部署环境 8

4.2.2 版本依赖 8

4.2.3 安装包下载地址 8

4.2.4 安装步骤 8

4.2.5 常用命令 9

5. 监控 11

5.1 Zabbix 11

5.2 Prometheus 11

5.3 Cacti 11

5.4 Nagios 11

6. CI/CD 12

6.1 Jenkins 12

7. 日志管理 12

7.1 ELK 12

8. 高可用/集群 12

8.1 Lvs 12

8.2 Keepalived 12

8.3 Haproxy 12

9. 负载均衡 12

9.1 Nginx 12

9.2 F5 12

10. 性能测试 13

10.1 Ab 13

10.2 LoadRunner 13

11. 存储技术 13

11.1 NFS 13

11.2 NAS 13

12. 版本管理 13

12.1 SVN 13

12.2 Git 13

13. 备份工具 13

13.1 Rsync 13

13.1.1 Rsync+NFS实现增量备份 13

13.1.2 Rsync+inotify实现实时备份 17

14. 虚拟化 17

14.1 KVM 17

14.2 Xen 17

14.3 VMware 17

14.4 Hyper-V 17

15. 容器 18

15.1 Docker 18

15.2 K8s 18

16. 云计算 18

16.1 OpenStack 18

16.2 CloudStack 18

17. 自建服务 18

17.1 Posfix 18

17.2 DNS 18

17.3 VPN 18

18. CMDB/Wiki 19

18.1 iTop 19

18.2 蓝鲸 19

18.3 Codo 19

18.4 Confluence 19

19. 认证 19

19.1 openLDAP 19

19.2 19

20. 自动化 19

20.1 Ansible 19

20.2 Saltstack 19

20.3 Puppet 19

21. 开发语言 20

21.1 Shell 20

21.2 Python 20

 

运维框架 1

1. 基础知识 3

1.1 系统原理 3

1.2 命令基础 3

1.3 网络基础 4

1.4 排错基础 4

1.5 优化基础 4

1.6 安全基础 4

1.7 原理基础 4

2. WEB管理 5

2.1 Nginx 5

2.1.1 部署 5

2.1.2 优化 5

2.1.3 备份 5

2.1.4 恢复 5

2.2 Httpd 5

2.3 Tomcat 5

2.4 IIS 5

3. 数据库 5

3.1 MySQL 5

3.1.1 部署 5

3.1.2 优化 5

3.1.3 备份 5

3.1.4 恢复 5

3.2 Oracle 6

3.3 MongoDB 6

3.4 Redis 6

3.5 Memcached 6

4. 消息队列 6

4.1 ActiveMQ 6

4.2 RabbitMQ 6

4.2.1 部署环境 6

4.2.2 版本依赖 6

4.2.3 安装包下载地址 6

4.2.4 安装步骤 6

4.2.5 常用命令 7

4.2.5.1 服务管理 7

4.2.5.2 用户管理 7

4.2.5.3 角色管理 8

4.2.5.4 Vhost管理 8

4.2.5.5 权限管理 8

4.2.5.6 查看插件 8

4.2.5.7 监控管理器 8

4.2.5.8 应用管理 8

4.2.5.9 队列管理 9

4.2.5.10 集群管理 9

4.2.5.11 信息查看 9

5. 监控 9

5.1 Zabbix 9

5.2 Prometheus 9

5.3 Cacti 9

5.4 Nagios 9

6. CI/CD 10

6.1 Jenkins 10

7. 日志管理 10

7.1 ELK 10

8. 高可用/集群 10

8.1 Lvs 10

8.2 Keepalived 10

8.3 Haproxy 10

9. 负载均衡 10

9.1 Nginx 10

9.2 F5 10

10. 性能测试 11

10.1 Ab 11

10.2 LoadRunner 11

11. 存储技术 11

11.1 NFS 11

11.2 NAS 11

12. 版本管理 11

12.1 SVN 11

12.2 Git 11

13. 备份工具 11

13.1 Rsync 11

13.1.1 Rsync+NFS实现增量备份 11

13.1.2 Rsync+inotify实现实时备份 15

14. 虚拟化 15

14.1 KVM 15

14.2 Xen 15

14.3 VMware 15

14.4 Hyper-V 15

15. 容器 16

15.1 Docker 16

15.2 K8s 16

16. 云计算 16

16.1 OpenStack 16

16.2 CloudStack 16

17. 自建服务 16

17.1 Posfix 16

17.2 DNS 16

17.3 VPN 16

18. CMDB/Wiki 17

18.1 iTop 17

18.2 蓝鲸 17

18.3 Codo 17

18.4 Confluence 17

19. 认证 17

19.1 openLDAP 17

19.2 17

20. 自动化 17

20.1 Ansible 17

20.2 Saltstack 17

20.3 Puppet 17

21. 开发语言 18

21.1 Shell 18

21.2 Python 18

 

1. 基础知识

1.1 系统原理

1.1.1

1.2 命令基础

1.2.1 vi

1.2.2 find

1.2.3 ls

1.2.4 df

1.2.5 du

1.2.6 grep

1.2.7 awk

1.2.8 sed

1.2.9 tail

1.2.10 chmod

1.2.11 chown

1.3 网络基础

1.4 排错基础

1.5 优化基础

1.6 安全基础

1.7 原理基础

 

2. WEB管理

2.1 Nginx

2.1.1 部署

2.1.2 优化

2.1.3 备份

2.1.4 恢复 

2.2 Httpd

2.3 Tomcat

2.4 IIS

3. 数据库

3.1 MySQL

3.1.1 部署

3.1.2 优化

3.1.3 备份

3.1.4 恢复

3.2 Oracle

3.3 MongoDB

3.4 Redis

3.5 Memcached

 

4. 消息队列

4.1 ActiveMQ

4.2 RabbitMQ

4.2.1 部署环境

OSCentos7.7

4.2.2 版本依赖

版本依赖一定要提前看清楚。

RabbitMQ相关版本依赖关系查看

https://www.rabbitmq.com/which-erlang.html

4.2.3 安装包下载地址

三个都要下载,放到/root目录下即可

链接:https://pan.baidu.com/s/1dQjSCQz_HmMKHRFEnmvGvA

提取码:4n3a

4.2.4 安装步骤

先安装wxwidgets再安装erlang最后再安装RabbitMQ

以下脚本内容,建议一步步执行

yum install gcc-c++ ncurses-devel fop unixODBC-devel mesa-libGLU-devel gtk3* bzip2 openssl openssl-devel make perl -y   #安装依赖

bzip2 -d wxWidgets-3.1.3.tar.bz2   #解压

tar -xvf wxWidgets-3.1.3.tar     #解压

cd wxWidgets-3.1.3

 ./configure               #编译安装

make & make install

ldconfig                  #重新加载动态库

cd ..

tar -zxvf otp_src_22.1.tar.gz

cd otp_src_22.1

./configure --prefix=/usr/local/erlang --without-javac

make

make install

echo 'export PATH=$PATH:/usr/local/erlang/bin'>> /etc/profile    #加入系统PATH

source /etc/profile

erl        #不报错说明安装成功

cd

xz -d rabbitmq-server-generic-unix-3.8.3.tar.xz

tar -xvf rabbitmq-server-generic-unix-3.8.3.tar

cd rabbitmq_server-3.8.3/

cd sbin/     #相关命令都在这里,可以考虑把这个路径计入系统PATH

./rabbitmq-server   #不报错,说明rabbitmq安装成功

4.2.5 常用命令

4.2.5.1 服务管理

启动: service rabbitmq-server start 或 rabbitmq-service start

关闭: service rabbitmq-server stop 或 rabbitmq-service stop

重启: service rabbitmq-server restart

状态: rabbitmqctl status

4.2.5.2 用户管理

新增账号: rabbitmqctl add_user username password

删除用户: rabbitmqctl delete_user username

所有用户: rabbitmqctl list_users

修改密码: rabbitmqctl change_password username newpassword

清除密码: rabbitmqctl clear_password {userName}

4.2.5.3 角色管理

用户角色分为5中类型:

none:无任何角色。新创建的用户的角色默认为 none

management:可以访问web管理页面。

policymaker: 包含managerment所有权限,并且可以管理策略(Policy)和参数(Parameter)

monitoring: 包含management所有权限,并且可以看到所有链接、信道及节点相关的信息

administartor:包含monitoring所有权限,并且可以管理用户、虚拟机、权限、策略、参数等。(最高权限)

设置用户角色: rabbitmqctl set_user_tags zhaojigang administrator

设置多个角色: rabbitmqctl set_user_tags hncscwc monitoring policymaker

查看用户角色: rabbitmqctl list_users

4.2.5.4 Vhost管理

所有虚拟主机: rabbitmqctl list_vhosts

添加虚拟主机: rabbitmqctl add_vhost vhostname

删除虚拟主机: rabbitmqctl delete_vhost vhostname

4.2.5.5 权限管理

命令格式如下:rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}

查询所有权限:rabbitmqctl list_permissions  [-p  VHostPath]

查看用户权限:rabbitmqctl list_user_permissions username

清除用户权限:rabbitmqctl clear_permissions [-p VHostPath] username

4.2.5.6 查看插件

rabbitmq-plugins list

4.2.5.7 监控管理器

rabbitmq-plugins enable rabbitmq_management #启动

rabbitmq-plugins disable rabbitmq_management #关闭

4.2.5.8 应用管理

关闭应用:rabbitmqctl stop_app

启动应用:rabbitmqctl start_app

4.2.5.9 队列管理

查看所有队列:rabbitmqctl list_queues

清除所有队列:rabbitmqctl reset #需要先执行rabbitmqctl stop_app

强制清除队列:rabbitmqctl force_reset

4.2.5.10 集群管理

查看集群状态: rabbitmqctl cluster_status

摘除节点: rabbitmqctl   forget_cluster_node  [--offline]  

组成集群命令: rabbitmqctl join_cluster <clusternode> [--ram]

修改节点存储形式: rabbitmqctl change_cluster_node_type disc | ram

修改节点名称: rabbitmqctl  rename_cluster_node   oldnode1  newnode1  [oldnode2  newnode2]  [oldnode3  newnode3...]

4.2.5.11 信息查看

rabbitmqadmin list connections #查看所有连接

rabbitmqadmin show overview #概览 Overview

rabbitmqadmin list nodes #查看所有节点 Node

rabbitmqadmin list channels #查看所有通道 Channel

rabbitmqadmin list consumers #查看所有消费者 Consumer

rabbitmqadmin list exchanges #查看所有路由 Exchange

rabbitmqadmin list bindings #查看所有路由与队列的关系绑定 Binding

5. 监控

5.1 Zabbix

5.2 Prometheus

5.3 Cacti

5.4 Nagios

 

6. CI/CD

6.1 Jenkins

 

7. 日志管理

7.1 ELK

 

8. 高可用/集群

8.1 Lvs

8.2 Keepalived

8.3 Haproxy

 

9. 负载均衡

9.1 Nginx

9.2 F5

 

10. 性能测试

10.1 Ab

10.2 LoadRunner

 

11. 存储技术

11.1 NFS

11.2 NAS

 

12. 版本管理

12.1 SVN

12.2 Git

 

13. 备份工具

13.1 Rsync

13.1.1 Rsync+NFS实现增量备份

更新时间:2020313

一、NFS/Rsync简介

网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。Rsync是Linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、Rsync主机同步。

本文详细记录如何通过这两个工具实现服务器内容的全量/增量备份的方法。

二、备份方案架构图

 

mount NFSRsync(ssh)同步

 

创建NFS共享文件夹挂载NFS共享文件夹 备份内容为/data/nginx

②配置增量备份脚本

配置SSH免密登录Node

三、自建NFS服务器

NFS服务器上执行

yum install nfs-utils rpcbind -y #安装NFS相关软件

mkdir /NFS #创建NFS共享目录

echo "/NFS *(rw,no_root_squash,sync)">> /etc/exports #共享该NFS共享目录。建议加上no_root_squash,否则会导致同步时报错(待确认)

systemctl start rpcbind #开启rpcbind服务

systemctl start nfs #开启nfs服务

showmount -e 127.0.0.1  #验证NFS共享目录是否共享成功如下则说明共享成功

Export list for 127.0.0.1:

/NFS *

 

四、挂载NFS

在需要挂载NFS的服务器上执行

此处为Jumpserver服务器

yum install nfs-utils rpcbind -y #安装NFS相关软件

mkdir /NFS1 #创建文件夹用来挂载NFS

mount -t nfs NFS服务器ip:/NFS /NFS1 #NFS共享目录/NFS挂载到本地/NFS1

df -Th #查看是否挂载成功

ssh-keygen #创建秘钥

ssh-copy-id root@服务器Nodeip #传输秘钥,免密登录

五、配置增量备份

首先,我们来看一下Node备份目录/data/nginx结构

[root@VM_0_16_centos ~] tree /data/

/data/

`-- nginx

    |-- mail

    |-- note.txt

    |-- web

    |   `-- web.txt

    `-- www

        |-- book

        |   `-- book.txt

        |-- food

        `-- shop

            `-- shop.txt

 

7 directories, 4 files

[root@VM_0_16_centos ~]#

 

Jumpserver配置增量备份脚本

 

[root@VM_16_6_centos ~]# cat rsync.sh #脚本内容

#!/bin/bash

BackupSource=$1 #远程目标

BackupRoot=$2 #增量备份路径

BackupName=$3 #备份的名字

BackupNum=$4                   #保留多少个增量备份(用于每周归档文件)

checkDir() { #检查目录 $1 是否存在,不存在则创建

    if [ ! -d "${BackupRoot}/$1" ] ; then

        mkdir -p "${BackupRoot}/$1"

    fi

}

for i in `seq $(($BackupNum - 1)) -1 1`

    do

        if [ -d "${BackupRoot}/daily/$BackupName.$i" ] ; then

            /bin/rm -rf "${BackupRoot}/daily/$BackupName.$((i + 1))"

            mv "${BackupRoot}/daily/$BackupName.$i" "${BackupRoot}/daily/$BackupName.$((i + 1))"

        fi

    done

checkDir "daily" #检查目录是否存在

checkDir "daily/${BackupName}.0/" #检查全量备份(包含所有最新内容的备份目录)

checkDir "daily/${BackupName}.1/" #检查增量备份目录是否存在,不存在则创建

rsync -av --delete -b --backup-dir=${BackupRoot}/daily/${BackupName}.1 $BackupSource ${BackupRoot}/daily/${BackupName}.0

运行该脚本时,需要输入四个参数

同步命令格式./rsync.sh BackupSource BackupRoot  BackupName BackupNum

BackupSource远程目标

BackupRoot本地备份存放路径,命令执行成功后会在该目录下生产对应的备份文件

BackupName备份名称

BackupNum保留的增量备份数量

举例:

./rsync.sh root@129.204.176.102:/data/nginx/ /NFS1/backups/129.204.176.102/  nginx 5

六、增量备份恢复

备份目录解释

[root@VM_0_2_centos ~]# tree /NFS1/

/NFS1/

`-- backups #备份文件根目录

    `-- 129.204.176.102 #根据主机划分

        `-- daily #每次的备份文件放在这里

            |-- nginx.0 #同步备份文件夹,即完全备份

            |   |-- mail

            |   |-- web

            |   |   `-- web.txt

            |   `-- www

            |       |-- book

            |       |-- food

            |       `-- shop

            |           `-- shop.txt

            |-- nginx.1 #最新的增量备份。里面是完全备份后变化的文件

            |   `-- note.txt

            |-- nginx.2 #较早的增量备份,数字越大,代表备份越旧

            |   `-- www

            |       `-- book

            |           `-- book.txt

            |-- nginx.3

            |   `-- web

            |       `-- web.txt

            `-- nginx.4

 

18 directories, 5 files

当我们需要恢复增量备份时,需要先从数字最大的备份进行恢复,依次递减,直到我们需要恢复的增量备份点。

进行恢复备份时,将以下脚本放在有相关备份文件的服务器上运行

[root@VM_16_6_centos ~]# cat rsyncrecover.sh #脚本内容

#!/bin/bash

OlderDir="$1" #增量备份目录

BackupRoot="$2" #全量备份目录

BackupName="$3" #输入你的备份名

BackupNum="$4" #总的增量备份数量(用于递归)

where="$5" #输入你想要恢复的备份

for i in `seq $BackupNum -1 $where` #从最旧的备份开始,一直恢复到想要的那个备份位置

do

rsync -av  $OlderDir$BackupName.$i/    $BackupRoot$BackupName.0

done

增量备份恢复命令格式:

./rsyncrecover.sh 增量备份路径 完全备份路径 备份名称 最大增量备份数量 恢复点

举例

./rsyncrecover.sh /NFS1/backups/129.204.176.102/daily/ /NFS1/backups/129.204.176.102/daily/ nginx 4 2

执行成功后,完全备份路径下的内容就会变成我们想要恢复的内容

 

PS

后续需完善问题

1.备份日志处理

2.备份文件命名规范

3.归档备份配置

4.定时任务

5.对特殊情况的检测处理

 

13.1.2 Rsync+inotify实现实时备份

更新时间:2020314日星期六

 

 

13.1.3 

 

14. 虚拟化

14.1 KVM

14.2 Xen

14.3 VMware

14.4 Hyper-V

 

15. 容器

15.1 Docker

15.2 K8s

 

16. 云计算

16.1 OpenStack

16.2 CloudStack

 

17. 自建服务

17.1 Posfix

17.2 DNS

17.3 VPN

 

18. CMDB/Wiki

18.1 iTop

18.2 蓝鲸

18.3 Codo

18.4 Confluence

 

19.  认证

19.1 openLDAP

19.2 

 

20. 自动化

20.1 Ansible

20.2 Saltstack

20.3 Puppet

 

21. 开发语言

21.1 Shell

21.2 Python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!