运维框架
目录
运维框架 1
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.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 部署环境
OS:Centos7.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实现增量备份
更新时间:2020年3月13日
一、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@服务器Node的ip #传输秘钥,免密登录
五、配置增量备份
首先,我们来看一下Node备份目录/data/nginx结构
[root@VM_0_16_centos ~] tree /data/
/data/
`-- nginx
|-- 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 #同步备份文件夹,即完全备份
| |-- 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实现实时备份
更新时间:2020年3月14日星期六
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
来源:https://www.cnblogs.com/biaopei/p/12530741.html