首页 > 技术文章 > 思维导图

mkmkmk 2020-01-10 20:13 原文

1.使用LDAP认证
作用:网络用户认证,用户集中管理
网络用户信息:LDAP服务器提供

conn:网络用户,本地管理

2.NFS共享
• Network File System,网络文件系统
– 由NFS服务器将指定的文件夹共享给客户机
– 客户机将此共享目录 mount 到本地目录,访问此共享
资源就像访问本地目录一样方便
– 类似于 EXT4、XFS等类型,只不过资源在网上.

conn:共享只读文件夹

3.cron计划任务
用途:按照设置的时间间隔为用户反复执行某一项固
定的系统任务.

conn:机器自执行任务

4.磁盘分区 fdisk /dev/vdb
• MBR/msdos 分区模式
– 分区类型:主分区   扩展分区   逻辑分区
– 至多4个主分区,或者 3个主分区+1个扩展分区(n个逻辑分区)
– 最大支持容量为 2.2TB 的磁盘
– 扩展分区不能格式化

conn:虚拟磁盘分区

5.划分LVM逻辑卷
作用: 
  1.整合分散的空间
  2.空间可以进行扩大
  零散空闲存储 ---- 整合的虚拟磁盘 ---- 虚拟的分区
  由众多的物理卷(PV)组合成卷组(VG),从卷组中划分多个逻辑卷(LV)

conn:格式化分区的磁盘,使用虚拟磁盘

6.搭建基本的Web服务

conn:搭建基本的http网页服务.

7.搭建基本的FTP服务
]# firefox  ftp://172.25.0.11

conn:搭建基本的ftp服务

8.防火墙相关操作(firewall)
防火墙相关设置

conn:CentOS7 防火墙基本操作

9.配置SMB共享(Samba共享)
– 用途:为客户机提供共享使用的文件夹
– 协议:SMB(TCP 139)、CIFS(TCP 445) 
• 所需软件包:samba
• 系统服务:smb

管理共享账号
• Samba用户 —— 专用来访问共享文件夹的用户
– 采用独立设置的密码
– 但需要提前建立同名的系统用户(可以不设密码)

conn:NFS一样,共享可读写文件夹

10.iSCSI网络磁盘
默认端口:3260
• Internet SCSI,网际SCSI接口
– 一种基于C/S架构的虚拟磁盘技术
– 服务器提供磁盘空间,客户机连接并当成本地磁盘使用。

conn:共享本地磁盘至其他主机,扩展本机磁盘空间(共享的磁盘未格式

化)

11.简单MariaDB数据库的管理
单机MariaDB增删改查、授权操作

conn:单机MariaDB增删改查、授权操作

12.虚拟Web主机

conn:一台服务器可以提供多个Web站点

13.基础邮件服务、parted分区工具、交换分区、链路聚合

01.基础邮件服务
 • 电子邮件服务器的基本功能
– 为用户提供电子邮箱存储空间(用户名@邮件域名)
– 处理用户发出的邮件 —— 传递给收件服务器
– 处理用户收到的邮件 —— 投递到邮箱

conn:配置linux基础postfix服务器,提供邮件传输服务

02.parted分区工具 parted /dev/vdb
GPT分区模式,最多128主分区
最大支持容量 18EB
1EB=1000PB
1PB=1000TB
1TB=1000GB
1Tib=1024Gib

conn: fdisk的高级版本

03. 什么是交换空间
• 相当于虚拟内存
– 当物理内存不够用时,使用磁盘空间来模拟内存
– 在一定程度上缓解内存不足的问题
– 交换分区:以空闲分区充当的交换空间

conn:当电脑运行一个程序时,物理内存不够用,使用磁盘空间来模拟内



04.配置聚合连接(链路聚合  网卡绑定  网卡组队)
链路聚合的优势
• team,聚合连接(也称为链路聚合)
– 由多块网卡(team-slave)一起组建而成的虚拟网卡,
即“组队”
– 作用1:轮询式(roundrobin)的流量负载均衡
– 作用2:热备份(activebackup)连接冗余

conn: 网卡的链路聚合就是将多块网卡连接起来,当一块网卡损坏,网

络依旧可以正常运行,可以有效的防止因为网卡损坏带来的损失,同时

也可以提高网络访问速度。

      网卡的链路聚合一般常用的有"bond"和"team"两种模式,"bond"

模式最多可以添加两块网卡,"team"模式最多可以添加八块网卡。

14.自定义yum仓库、源码编译安装

conn: 
*.rpm 制作yum源,提供yum包
源码安装:非yum的自定义装包

15.DNS子域授权、分离解析、缓存DNS服务器

01:搭建基本DNS服务器
主配置文件指定分地址库文件存放位置及解析域名

conn:服务器配置解析,客户机指定DNS服务器地址(/etc/resolv.conf

),将域名解析为IP地址。

02:多区域的DNS服务器
主配置文件里添加zone块,地址库添加域名解析zone文件

conn:一台主机可以解析多个域名

03:DNS轮询
地址库对应域名解析文件里配置
一个域名 --> 多个不同IP地址

conn:基于DNS的站点负载均衡,每个IP提供相同镜像服务内容,每个IP对

应不同服务器。

04:泛域名解析
地址库对应域名解析文件里配置

conn:*.baidu.com,设置统一解析地址

05:有规律泛域名解析
$GENERATE 1-50 p$.baidu.com. A 192.168.10.$

conn:多台主机,多个域名批量解析

06:解析记录别名CNAME
tts  CNAME  ftp

conn:不同域名前缀解析相同

07:DNS子域授权
Non-authoritative answer:
Name: xxx.xx.com

conn:父域的地址库解析文件里添加子域的域名解析地址,解析时通过父

域指定的解析地址去对应子域主机解析。

08:递归解析 迭代解析
options  {
          directory      "/var/named";
          recursion  no;
 };

conn:
递归解析:
    客户端请求DNS域名解析,首选DNS服务器与其他DNS服务器交互,最终

将解析结果反馈给客户端.
迭代解析:
    客户端请求DNS域名解析,首选DNS服务器与其他DNS服务器交互过程.

09:缓存DNS服务器
forwarders  {  xx.xx.xx.xx;  };  
作用:缓存解析结果,进行加速解析

conn:缓存里有,则直接返回解析结果

010:DNS分离解析
view "xx" { 
    match-clients  { xx.xx.xx.xx; };
    zone...
}

view "other" {
    match-clients  { any; };
    zone... 
}

当收到客户机的DNS查询请求的时候
能够区分客户机的来源地址
为不同类别的客户机提供不同的解析结果(IP地址)
不同类别的客户机,解析同样的域名,结果不同

conn:为客户端提供最近的资源   

16.PXE网络装机

conn:PXE(preboot execute environment,预启动执行环境)工作于

Client/Server的网络模式,支持客户机通过网络从远端服务器下载镜像

,并由此支持通过网络启动操作系统,在启动过程中,客户机要求服务

器分配IP地址,再用TFTP(trivial file transfer protocol)协议下

载一个启动软件包到本机内存中执行,由这个启动软件包完成客户机基

本软件设置,从而引导预先安装在服务器中的终端操作系统。

17.rsync+SSH同步
rsync+SSH+inotify-tools

inno:编写脚本,实现多个主机数据同步

18.搭建Nginx服务器、配置网页认证、基于域名的虚拟主机、ssl虚拟主


01:Nginx服务器       :搭建web服务
02:网页认证          :认证用户可访问网页
03:基于域名的虚拟主机:配置域名server
04:SSL虚拟主机       :配置访问加密网站

conn:网站搭建:Apache Nginx Tomat

19.部署LNMP环境、构建LNMP平台、地址重写
01:linux+nginx+php+mysql/mariadb
02:地址重写:
a.html-->b.html(不跳转地址栏)
a.html-->b.html(跳转地址栏)
a.com-->b.com (首页跳转)
a.com/*.html-->b.com/*.html(整站跳转)
浏览器内容识别匹配

conn:基本上可实现部署商业化运营平台

20.Nginx反向代理、Nginx的TCP/UDP调度器、Nginx常见问题处理
01:Nginx反向代理
两台web服务器:使用Apache实现
一台proxy调度器,使用Nginx实现
一台访问测试服务器,Client
Client:访问Proxy的Nginx页面,实现轮流访问web1、web2的Apache页



conn:实现分流

02:四层调度(TCP/UDP调度,源码安装的时候要with-stream)
Proxy的Nginx监听12345端口
分别调度:web1、web2的22端口
Client:ssh proxy的12345端口实现登录轮询登录web1、web2

conn:分流

03:http常见状态码
200 一切正常
301 永久重定向
302 临时重定向
401 用户名或密码错误
403 禁止访问(客户端IP地址被拒绝)
404 文件不存在
414 请求头过长
500 服务器内部错误
502 Bad Gateway

04:定义Nginx状态页面,查看状态页面信息

conn:查看访问数据

05:优化Nginx并发
修改worker线程数与CPU核心数一致
修改每个线程的并发连接数(65535)
修改Linux内核参数(最大文件数量,硬限制,软限制)

06:优化Nginx数据包头缓存
请求包头信息的缓存 4k
最大请求包头部信息的缓存个数与容量: 4 6m

07: 浏览器本地缓存静态数据
定义客户端静/动态缓存时间

08:对页面进行压缩处理
gzip on;

09:服务器内存缓存
设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄
文件句柄的有效时间是60秒,60秒后过期
只有访问次数超过5次会被缓存

21.构建memcached服务、LNMP+memcached、PHP的本地Session信息、PHP

实现session共享
01:构建memcached服务
高性能的分布式缓存服务器

conn:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能

(适合读多写少,对于数据量比较大,可以采用sharding)

02:LNMP+memcached

conn:php页面从memcache获取数据

03:PHP的本地Session信息
proxy调度web1/2的nginx的php页面,client访问proxy,多次刷新查看

轮询效果,输入账户密码,以便调度器在两台web服务器都存储session信

息。

conn:session:储存在服务端的用户信息

04:PHP实现session共享
配置PHP使用memcached服务器共享Session信息.
客户端访问两台不同的后端Web服务器时,Session 信息一致.

conn:两台web服务器配置session于proxy的memcache数据库里,客户端

访问直接从memcache里获取session,实现session共享。

22.安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加

速Web
01:配置Tomcat集群
proxy的nginx调度web1、web2的Tomcat的8080端口页面(一个web服务器

页面做少量修改,以便查看效果),真机访问proxy的nginx web页面查

看调度。

conn: Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成

Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行


      Varnish是一款高性能的开源HTTP加速器。

23.Subversion基本操作、使用Subversion协同工作、制作nginx的RPM包
01:Subversion
Subversion是一个自由开源的版本控制系统。在Subversion管理下,文

件和目录可以超越时空。Subversion将文件存放在中心版本库里,这个

版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件

和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以

查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神

奇的“时间机器”。

02:使用Subversion协同工作
支持多个账户同时协作编辑文件,手动解决版本冲突问题。

03:下载GitHub仓库中的代码
]# git clone https://github.com/账户名称/仓库名称

04:制作nginx的RPM包
根据压缩包制作源码包,%post可以添加自己的命令

24.配置GRE VPN,创建PPTP VPN,创建L2TP+IPSec VPN,NTP时间同步,pssh

远程套件工具
01:Virtual Private Network 虚拟专用网络
功能是:在公用网络上建立专用网络,进行加密通讯。在企业网络中有

广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远

程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务

器、硬件、软件等多种方式实现。

02:GRE VPN,创建PPTP VPN,创建L2TP+IPSec VPN

GRE VPN:(Generic Routing Encapsulation)即通用路由封装协议,是

对某些网络层协议(如IP和IPX)的数据报进行封装,使这些被封装的数

据报能够在另一个网络层协议(如IP)中传输。
PPTP VPN:点对点隧道协议,允许加密 IP 通讯,然后在要跨越公司 IP 

网络或公共 IP 网络(如 Internet)发送的 IP 头中对其进行封装。

L2TP VPN:可以为跨越面向数据包的媒体发送点到点协议 (PPP) 框架提

供封装。PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头

用于数据在互联网络上的传输。L2TP支持在两端点间使用多隧道,提供隧

道验证。 PPTP要求互联网络为IP网络。L2TP只要求隧道媒介提供面向数

据包的点对点的连接。

IPSec VPN:IPSec 隧道模式隧道是封装、路由与解封装的整个过程。隧

道将原始数据包隐藏(或封装)在新的数据包内部。该新的数据包可能

会有新的寻址与路由信息,从而使其能够 通 过网络传输。隧道与数据

保密性结合使用时,在网络上窃听通讯的人将无法获取原始数据包数据

(以及原始的源和目标)。封装的数据包到达目的地后,会删除封 装,

原始数据包头用于将数据包路由到最终目的地。

conn:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛

应用。

03:NTP时间同步:为网络内设备提供标准的时间基准

04:pssh远程套件工具
pssh:使用密码批量、多并发远程其他主机,执行命令(要输入密码)
pssh: 使用密钥批量、多并发远程其他主机,执行命令(不输入密码)

pscp.pssh:批量、多并发拷贝数据到其他主机
pslurp   :批量、多并发从其他主机下载数据到本机
pnuke    :批量、多并发杀死其他主机的进程


25.存储技术与应用 iSCSI技术应用 、udev配置 NFS网络文件系统 、

Multipath多路径 、NFS网络文件系统 、udev配置
01:iSCSI技术应用(查看第10课对比):服务器配置提供iscsi共享磁

盘,客户端格式化挂载当本地盘使用。

02:多台FTP或者http主机使用ISCSI共享存储
客户端将ISCSI网盘挂载在FTP目录下给与777权限,FTP启动匿名上传与

下载功能

03:NFS网络文件系统
远端NFS服务器将所有磁盘共享给本地NFS的客户端,客户机通过TCP/IP网

络远程访问存放在NFS服务器上的数据。

conn:节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以

通过网络访问,那么本地终端将可以减少自身存储空间的使用。

04:udev:一个用户空间程序

conn:udev负责在用户空间,根据用户设置的规则,在监测到设备被插入

后,在/dev/下自动创建并命名设备文件节点(实际上只能做一个已存在

节点的链接文件),也可以自动设置设备属性。

26.集群及LVS简介 LVS-NAT集群 LVS-DR集群
01:LVS简介
LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,

高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一

起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的

方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,

也不影响整体效果。另外可扩展性也非常好。

使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(

Loader Balancer),中间的服务器群组层,用Server Array表示,最底

层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用

都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

02:LVS集群:虚拟服务器里添加真实服务器
虚拟服务器设置算法:轮询、加权轮询、最少连接算法
真实服务器设置工作模式:DR模式、隧道模式、NAT模式

03:LVS-NAT模式 每个RS都有VIP
CIP-->VIP ...IPVS... CIP-->RIP ...RS回数据包... RIP--

>CIP...IPVS...VIP-->CIP
client发送request到LVS的VIP上,VIP根据负载算法选择一个Real-

server,并记录连接信息到hash表中,然后修改client的request的目的

IP地址为Real-server的地址,将请求发给Real-server; Real-server

收到request包后,发现目的IP是自己的IP,于是处理请求,然后发送

reply给LVS; LVS收到reply包后,修改reply包的的源地址为VIP,发送

给client; 从client来的属于本次连接的包,查hash表,然后发给对应

的Real-server; 当client发送完毕,此次连接结束或者连接超时,那

么LVS自动从hash表中删除此条记录。(20-30台) 

conn:real-server 集群组提供相同服务,LVS实现负载均衡
     调度器配置http的50端口,新加的RS同步50端口,设置工作模式

04:LVS-DR模式(数据链路层)
CIP-->VIP ...DIR-算法-修改数据包目标mac地址-->real server... 

CIP-->VIP ...RS回数据包... VIP-->CIP
每个Real Server上都有两个IP:VIP和RIP,但是VIP是隐藏的,就是不

能提供解析等功能,只是用来做请求回复的源IP的,Director上只需要

一个网卡,然后利用别名来配置两个IP:VIP和DIP,在DIR接收到客户端

的请求后,DIR根据负载算法选择一台rs sever的网卡mac作为客户端请

求包中的目标mac,通过arp转交给后端rs serve处理,后端再通过自己

的路由网关回复给客户端。(100台左右)

05:LVS-TUN模式 每个RS都有VIP
CIP-->VIP ...DR添加一层包头(DIP-->RIP,可以是外网)...RS拆包发

现(CIP-VIP),自己有VIP...RS回包...VIP-->CIP
它的连接调度和管理与VS/NAT中的一样,利用ip隧道技术的原理,即在

原有的客户端请求包头中再加一层IP Tunnel的包头ip首部信息,不改变

原来整个请求包信息,只是新增了一层ip首部信息,再利用路由原理将

请求发给RS server,不过要求的是所有的server必须支

持”IPTunneling”或者”IP Encapsulation”协议。

conn:nginx负载均衡,LVS负载均衡

27.Keepalived热备份 Keepalived+LVS 、 HAProxy服务器
01:Keepalived
keepalived是基于VRRP协议实现的保证集群高可用的一个服务软件,主

要功能是实现真机的故障隔离和负载均衡器间的失败切换,防止单点故

障。在了解keepalived原理之前先了解一下VRRP协议。
VRRP协议:Virtual Route Redundancy Protocol虚拟路由冗余协议。是

一种容错协议,保证当主机的下一跳路由出现故障时,由另一台路由器

来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠

性。
虚拟路由器:由一个 Master 路由器和多个 Backup 路由器组成。主机

将虚拟路由器当作默认网关。
Keepalived是Linux下一个轻量级别的高可用解决方案。高可用:广义来

讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。

conn:web1、web2配置了部署Keepalived高可用软件,客户端在访问浮动

IP的时候,访问的是master节点的服务器,master宕机后,浮动IP漂浮

到backup节点,客户端访问浮动IP的时候,实际访问的是backup节点。

02:Keepalived+LVS
 Keepalived的项目实现的主要目标是简化LVS项目的配置并增强其稳定

性,即Keepalived是对LVS项目的扩展增强。
Keepalived为Linux系统和基于Linux 的架构提供了负载均衡和高可用能

力,其负载均衡功能主要源自集成在Linux内核中的LVS项目模块IPVS( 

IP Virtual Server ),基于IPVS提供的4 层TCP/IP协议负载均衡, 

Keepalived也具备负载均衡的功能,此外, Keepalived还实现了基于多

层TCP/IP 协议( 3 层、4 层、5/7 层)的健康检查机制,因此, 

Keepalived在LVS 负载均衡功能的基础上,还提供了LVS 集群物理服务

器池健康检查和故障节点隔离的功能。
除了扩展LVS的负载均衡服务器健康检查能力, Keepalived 还基于虚拟

路由冗余协议( Virtual Route Redundancy Protocol, VRRP )实现了

LVS 负载均衡服务器的故障切换转移,即Keepalived还实现了LVS负载均

衡器的高可用性。Keepalived 就是为LVS 集群节点提供健康检查和为

LVS 负载均衡服务器提供故障切换的用户空间进程。

conn:Keepalived实现了集群内主机的高可用(自动切换活着的web服务

器),LVS实现了负载均衡(算法调度),即如果只剩一台RS的时候,谈

不上负载均衡。

03:HAProxy服务器
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用

性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话

保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计

的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前

的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲

HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于

Nginx的。

conn:HAProxy自带健康检查和可视化管理与查看

28.Ceph概述 部署Ceph集群 Ceph块存储
01:Ceph概述
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场

景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系

统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在

OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端

存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群

可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。
Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存

储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据

存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了

CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随

着规模的扩大性能并不会受到影响。

ceph组件:
OSDs:数据存储设备
Monitors:集群监控组件
RBD:对象存储网关
MDSs:存放文件系统的元数据(对象存储和块存储不需要该组件)
Client:ceph客户端

conn:ISCSI:块存储(SAN)
     NFS:文件系统存储(NAS)
     
02:部署Ceph集群

conn: 多个OSD(node*)形成一完整的存储空间
      分片4M并发写入OSDs,确保每个数据都有3副本
      monitor:调度器,取余等算法存储数据,可对Monitor做调度
    
03:Ceph块存储
创建块存储镜像-->客户端映射镜像(将镜像映射为本地磁盘)-->格式化

挂载使用(使用后客户端写入的数据在ceph磁盘里)

创建快照
创建镜像快照:对客户端写入数据的ceph块磁盘做快照-->客户端误删数

据-->客户端离线回滚-->数据恢复

快照克隆:复制一份已备份快照,如果希望克隆镜像可以独立工作,就

需要将父快照中的数据,全部拷贝一份,但比较耗时。

29.块存储应用案例 分布式文件系统 对象存储
01:块存储应用案例
node1创建ceph磁盘镜像(file format: raw),启用认证账户(服务端

),客户端创建虚拟机通过ceph认证将虚拟机文件创建在ceph磁盘上。

02:分布式文件系统
文件系统存储:不用分盘,不用格式化,直接使用
分布式文件系统:使用ceph磁盘镜像创建的文件系统,挂载直接使用

03:对象存储:只能通过API访问
Ceph 对象存储可以简称为 RGW,Ceph RGW 是基于 librados,为应用提

供 RESTful 类型的对象存储接口,其接口方式支持 S3(兼容 Amazon 

S3 RESTful API) 和 Swift(兼容 OpenStack Swift API) 两种类型



30.数据库服务概述 构建MySQL服务器 、数据库基本管理 MySQL数据类


01:数据库
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用

户可以对文件中的数据进行新增、截取、更新、删除等操作。
所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽

可能小的冗余度、与应用程序彼此独立的数据集合。

conn:存放电子数据的仓库

31.MySQL存储引擎 、 数据导入导出 管理表记录 匹配条件
32.多表查询 MySQL管理工具 、 用户授权及撤销
33.mysqldump 实时增量备份 、innobackupex
启用binlog日志恢复:日志里,恢复INSERT之前节点数--COMMIT之后的

节点数
innobackupex:完整备、增量备

34.MySQL主从同步 、主从同步模式
01:一主一从:Master写的数据可以同步到Slave上,Slave的数据不能

同步到Master上。

02:52为51的从,53为52的从:
   51写的数据会同步到52,53
   52写的数据会同步到53
   53写的数据只会在本地

03:半同步复制模式
异步复制,通常没说明指的都是异步,即主库执行完Commit后,在主库

写入Binlog日志后即可成功返回客户端,无需等等Binlog日志传送给从

库,一旦主库宕机,有可能会丢失日志。

半同步复制,是等待其中一个从库也接收到Binlog事务并成功写入Relay 

Log之后,才返回Commit操作成功给客户端;如此半同步就保证了事务成

功提交后至少有两份日志记录,一份在主库Binlog上,另一份在从库的

Relay Log上,从而进一步保证数据完整性;半同步复制很大程度取决于

主从网络RTT(往返时延),以插件 semisync_master/semisync_slave 

形式存在。 

35.MySQL读写分离 MySQL多实例 、MySQL性能调优
01:MySQL读写分离
51 Master,52 Slave,50读写分离服务器,53测试
此时,53从50登录(写入数据),数据直接写入51,同步到52。

02:MySQL多实例:单台主机运行多个独立mysqld服务。

03:MySQL性能调优
并发连接数量:Max_used_connections | 4
默认的最大连接数: max_connections | 151
连接超时时间:"%timeout%"
允许保存在缓存中被重用的线程数量: thread_cache_size | 9
引擎的关键索引缓存大小: key_buffer_size | 8388608
为每个要排序的线程分配此大小的缓存空间:sort_buffer_size | 

262144
为顺序读取表记录保留的缓存大小 read_buffer_size | 131072
为所有线程缓存的打开的表的数量: table_open_cache | 2000

04:SQL查询优化 启用慢查询日志
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中

响应时间超过阀值的语句,具体指运行时间超过long_query_time值的

SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意

思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日

志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一

般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能

影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数

据库表。
查看缓存的大小: "query_cache%"
查看当前的查询缓存统计: "qcache%"

36.MHA集群概述 、部署MHA集群 测试配置
MHA(Master High Availability)目前在MySQL高可用方面是一个相对

成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公

司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升

的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动

完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最

大程度上保证数据的一致性,以达到真正意义上的高可用。
该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点

)。MHA Manager可以单独部署在一台独立的机器上管理多个master-

slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL

服务器上,MHA Manager会定时探测集群中的master节点,当master出现

故障时,它可以自动将最新数据的slave提升为新的master,然后将所有

其他的slave重新指向新的master。整个故障转移过程对应用程序完全透

明。


37.MySQL视图 MySQL存储过程
01:MySQL视图
什么是视图:是一种虚拟存在的表
内容与真实的表相似,包含一系列带有名称的列和行数据。
视图并不在数据库中以存储的数据的形式存在。
行和列的数据来自定义视图时查询所引用的基本表,并且在具体引用视

图时动态生成。
更新视图的数据,就是更新基表的数据
更新基表数据,视图的数据也会跟着改变

conn:视图数据来源相当于查询基表数据时产生的动态缓存。

02:WITH  LOCAL CHECK OPTION
WITH  LOCAL CHECK OPTION
会检验视图v4WHERE子句下的条件,然后检验底层视图v3的WHERE子句条



WITH CASCADED CHECK OPTION
会检查视图v4WHERE子句下的条件,然后检查底层视图v3的WHERE子句条



没有check option
不会检查视图v4WHERE子句下的条件,但会检查底层视图三的WHERE子句

条件

03:MySQL存储过程
in 输入参数 传递值给存储过程,必须在调用存储过程时指定,在存储

过程中不能修改该参数的值;默认类型是in。
out 输出参数该值可在存储过程内部被改变,并可返回
inout 输入/输出参数调用时指定,并且可被改变和返回

conn:数据库中定义函数,调用函数

38.分库分表概述 配置mycat
01:分库分表
据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时

间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,

相应地,数据操作,增删改查的开销也会越来越大;另外,由于无法进

行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有

限的,最终数据库所能承载的数据量、
数据处理能力都将遭遇瓶颈。

何谓垂直切分,即将表按照功能模块、关系密切程度划分出来,部署到

不同的库上。

何谓水平切分,当一个表中的数据量过大时,我们可以把该表的数据按

照某种规则,例如userID散列,进行划分,然后存储到多个结构相同的

表,和不同的库

02:mycat:数据库分片服务器

39.NoSQL概述 部署Redis服务 、 部署LNMP+Redis
NoSQL:(Not Only SQL),泛指非关系型的数据库。
Redis:Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存

亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

40:创建Redis集群 管理集群
Redis集群:
主库宕机后,对应的从库会自动升级为主库.
原主库起来后,成为新主库的从库。

41:redis主从复制 RDB/AOF持久化 数据类型
主从复制:从库开启哨兵服务后,主库宕机,从库升级为主库,原主库

开机,降级为从库。

RBD:开启RDB数据备份后,每次启动Redis会从备份数据库里读取数据,

如果备份数据不存在,则自动创建备份数据文件,但数据库为空。
RDB优点:
高性能的持久化实现:创建一个子进程来执行持久化,先将数据写入临

时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文

件;过程中主进程不做任何IO操作
比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合
RDB的缺点:
意外宕机时,最后一次持久化的数据会丢失

AOF介绍
只做追加操作的文件,Append Only File
记录redis服务所有写操作
不断的将新的写操作,追加到文件的末尾
使用cat命令可以查看文件内容

RDB优点:
可以灵活的设置同步持久化appendfsync always或异步持久化

appendfsync verysec
宕机时,仅可能丢失1秒的数据
RDB的缺点:
AOF文件的体积通常会大于RDB文件的体积
执行fsync策略时的速度可能会比RDB慢

42.部署MongoDB服务 、MongoDB基本使用
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在

为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系

数据库当中功能最丰富,最像关系数据库的。

43.MongoDB副本集 MongoDB文档管理
01:MongoDB副本集
停止当前主库的mongodb服务,在2个副本主机查看集群状态信息(两个副

本机会随机选举一个作为主库),把坏掉的主库修复后会自动配置为当

前主库的副本主机并自动同步宕机期间的数据。

44.Linux基本防护 用户切换与提权 SSH访问控制 SELinux安全
01:Linux基本防护
账户有效期:chage
用户锁定:passwd
修改tty登录的提示信息,隐藏系统版本:/etc/issue
锁定文件:chattr

02:用户切换与提权
# su - [账户名称]
# su - [账户名称] -c '命令'  
# visudo

03:SSH访问控制:远程登录策略
04:SELinux安全
修改文件的上下文:chcon
恢复上下文:restorecon
SELinux布尔值(bool) 功能开关: getsebool setsebool

45.加密与解密 AIDE入侵检测系统 扫描与抓包
01:加密与解密
对称加密:怎么加密,就怎么解密
DES Date Encryption Standard
AES Advance Encryption Standard
非对称加密
RSA Rivest Shamirh Adleman
DSA Digital Signature Algorithm

加密工具
GPG加密工具:gnupg2
公钥加密 私钥解密
加密       解密
uesra    userb
A--发送加密数据(B的公钥)  B--查看加密数据(B的私钥)
B-->公钥-->A
A--公钥-->加密数据
A--数据-->B
B--私钥-->数据

02:AIDE入侵检测
AIDE(Adevanced Intrusion Detection Environment,高级入侵检测环境

)是个入侵检测工具,主要用途是检查文本的完整性。 
AIDE能够构造一个指定文档的数据库,他使用aide.conf作为其配置文档

。AIDE数据库能够保存文档的各种属性,包括:权限(permission)、索

引节点序号(inode number)、所属用户(user)、所属用户组(group)、文

档大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间

(atime)、增加的大小连同连接数。AIDE还能够使用下列算法:sha1、

md5、rmd160、tiger,以密文形式建立每个文档的校验码或散列号。

03:扫描与抓包
nmap 扫描
nmap是一个网络连接端扫描软件,它用于扫描因特网计算机的网络连接

端。确定哪些服务正在运行哪些连接,推导出计算机运行的操作系统(

也称指纹识别)。它是网络管理员必备的软件之一,并用于评估网络系

统的安全性。
tcpdump抓包
顾名思义,tcpdump可以将网络中传送的数据包的“头”完全截获下来提

供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供

and、or、not等逻辑语句来帮助你去掉无用的信息。

46.系统审计 服务安全 Linux安全之打补丁
01:系统审计
#语法格式:auditctl -w path -p permission -k key_name
# path为需要审计的文件或目录
# 权限可以是r,w,x,a(文件或目录的属性发生变化)
# Key_name为可选项,方便识别哪些规则生成特定的日志项

02:优化Nginx服务的安全配置
禁用某些模块:--without-http_autoindex_module 
修改版本信息,并隐藏具体的版本号:
server_tokens off; //在http下面手动添加这么一行
vim +48 src/http/ngx_http_header_filter_module.c
限制并发量:ngx_http_limit_req_module模块
拒绝非法请求:if ($request_method !~ ^(GET|POST)$ ) ...
防止buffer溢出:
http{
client_body_buffer_size  1K;   客户端缓冲区的大小
client_header_buffer_size 1k;  协议头部信息的大小
client_max_body_size 1k;       网页页面内容的大小
large_client_header_buffers 2 1k; 客户端头部信息的大小

03:数据库安全
]# mysql_secure_installation
//执行初始化安全脚本,用自带脚本初始化安全配置
修改密码--删除匿名账户--禁止root远程登陆--删除测试数据库--刷新

权限
使用tcpdump查看之前抓取的数据包,很多数据库的数据都明文显示出来
如何解决?
可以使用SSH远程连接服务器后,再从本地登陆数据库(避免在网络中传

输数据,因为网络环境中不知道有没有抓包者)。
或者也可以使用SSL对MySQL服务器进行加密,类似与HTTP+SSL一样,

MySQL也支持SSL加密(确保网络中传输的数据是被加密的)。 

04:Tomcat安全性
隐藏版本息:
/usr/local/tomcat/lib/org/apache/catalina/util/ServerInfo.prope

rties
/usr/local/tomcat/conf/server.xml(69行)
降级启动:默认tomcat使用系统高级管理员账户root启动服务,启动服务

尽量使用普通用户。

05:使用diff和patch工具打补丁
程序是人设计出来的,总是会有这样那样的问题与漏洞,目前的主流解

决方法就是为有问题的程序打补丁,升级新版本。
在Linux系统中diff命令可以为我们生成补丁文件,然后使用patch命令

为有问题的程序代码打补丁。
使用diff对比文件差异
使用diff生成补丁文件
使用patch命令为旧版本打补丁

47.iptables防火墙 filter表控制 扩展匹配 nat表典型应用
iptables防火墙:
filter过滤和转发控制
网络型防火墙案例
主机型防火墙案例
根据MAC地址过滤
基于多端口设置过滤规则
配置SNAT实现共享上网

48.监控概述 、 Zabbix基础 、 Zabbix监控服务
Zabbix:
  zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的

企业级的开源解决方案。
       zabbix由zabbix server与可选组件zabbix agent两部门组成。
       zabbix server可以通过SNMP,zabbix agent,ping,端口监视

等方法提供对远程服务器/网络状态的监视。
       zabbix agent需要安装在被监视的目标服务器上,它主要完成对

硬件信息或与操作系统有关的内存,CPU等信息的收集。

zabbix的主要特点:
          - 安装与配置简单,学习成本低
          - 支持多语言(包括中文)
          - 免费开源
          - 自动发现服务器与网络设备
          - 分布式监视以及WEB集中管理功能
          - 可以无agent监视
          - 用户安全认证和柔软的授权方式
          - 通过WEB界面设置或查看监视结果
          - email等通知功能
         等等

Zabbix主要功能:
         - CPU负荷
         - 内存使用
         - 磁盘使用
         - 网络状况
         - 端口监视
         - 日志监视 

监控概述:
查看内存信息
查看交换分区信息
查看磁盘信息
查看CPU信息
查看网卡信息
查看端口信息
查看网络连接信息

49.Zabbix报警机制 、 Zabbix进阶操作 、 监控案例

50.KVM简介、 Virsh管理 、 自定义虚拟机、虚拟设备管理
01:虚拟化所支持的内部指令集:VMX--CPU支持虚拟化

02:虚拟化主要厂商及产品
VMware     VMware Workstation Vsphere esxi
Microsoft  VirtualPC,Hyper-V(windows 虚拟化)
RedHat     KVM(只是单台物理机虚拟化技术平台,虚拟机集群管理需要

openstack,CPU支持虚拟化),RHEV(收费)
Citrix     Xen(性能好,内核改动太多,安装麻烦)
Oracle     Oracle VM VIirtualBox(安装包很小,功能没有kvm强大)

03:虚拟化平台KVM/QEMU/LIBVIRTD
KVM
Linux 内核安装的一个模块,提供CPU和内存的访问支持(使用真机的

CPU和内存创建虚拟机)
QEMU:虚拟化的仿真工具,通过ioctl和kvm交互完成对硬件的虚拟化支

持(虚拟周边硬件,鼠标、网卡等)。
Libvirt:虚拟机启动需要很多命令(如启动总线、地址等),Libvirt

一个对虚拟化管理的接口和工具,提供用户端程序virsh,virt-

install,virt-manager,virt-view与用户交互(用户接口,将QEMU指令

打包封装简化)。

04:安装虚拟化服务器平台必备软件
kvm:已经集成在内核
qemu-kvm:为kvm提供底层仿真支持
libvirt-daemon:libvirtd守护进程,管理虚拟机
libvirt-client:用户端软件,提供客户端管理指令/图形管理工具

virt-manager
libvirt-daemon-driver-qemu:libvirt连接qemu驱动

virt-install 系统安装工具
virt-manager 图形管理工具
virt-v2v     虚拟机迁移工具
virt-p2v     物理机迁移工具

05:虚拟化平台安装:
]# yum -y install qemu-kvm libvirt-daemon libvirt-client 

libvirt-daemon-driver-qemu
]# systemctl restart libvirtd

06:虚拟机组成
KVM:内核虚拟化模块
QEMU:系统设备仿真
LIBVIRT:虚拟机管理程序

*.xml:虚拟机配置声明文件: /etc/libvirt/qemu/
*.img:磁盘镜像文件,虚拟机的硬盘: /var/lib/libvirt/images/

07:虚拟机通信
虚拟机之间通信:设置虚拟交换机,每个虚拟机连接虚拟交换机
虚拟机连外网:虚拟交换机连接真机交换机

08:虚拟机磁盘镜像(后端盘)文件格式
RAW:I/O效率高,只用空间大,不支持压缩、快照、后端盘复用
QCOW2:KVM默认,I/O效率较高,占用空间小,支持压缩、快照、后端盘

复用
管理命令:qemu-img:create convert info snapshot

09:COW技术原理
Copy On Write,写时复制
直接映射原始盘数据内容
当原始盘的旧数据有修改时,在修改之前将旧数据存入前端盘
对前端盘的修改不会写到原始盘

51.Openstack概述 部署安装环境 、 部署Openstack OpenStack操作基



01:虚拟机由两部分构成
*.xml   *.img
 
02:.配置openstack基础准备
yum源     时间同步(同步阿里云,自己也做服务器)
 
03:什么是云计算
一种便捷的、按需的、提供互联网相关服务的虚拟化资源管理服务。
 
04:云计算的三种服务
IaaS(Infrastructure as a Service) ,基础设施,即服务。
提供给消费者的服务是对所有计算基础设施的利用,包括处理CPU,内存

、网络等和其他基本的计算资源,用户能够部署和运行任意软件,包括

操作系统和应用程序。
 
IaaS通常分为三种用法:共有云(虚拟机),私有云(淘宝)和混合云
PaaS(Platform-as-a-Service),平台服务,以服务平台或者开发环境为

服务进行提供就成了PaaS.
SaaS(Software-as-a-Service),软件即服务,厂商将应用软件统一部署

在服务器上,客户可以根据自己的实际需求,通过互联网向厂商订购(

租用,代维护,数据存储)所需要的应用软件服务。

05: Openstack 简介
是一套IaaS解决方案,开源的云计算管理平台,以Apache许可证为授权


七大组件:
01:Horizon 
用于管理Openstack各种服务的、基于web的管理接口
通过图形界面实现创建用户、管理网络、启动实例等操作。
 
02:Keystone 
为其他服务提供认证和授权的集中身份管理服务
密码认证、令牌认证、AWS(亚马逊Web服务)、SSO认证服务等
也提供了集中的目录服务
 
03:Neutron
软件定义网络服务
用于创建网络、子网、路由器、管理浮动IP
实现虚拟交换机、路由器
实现项目中的VPN服务
 
04:Cinder
为虚拟机管理存储卷的服务
为运行在Nova中的示例提供永久的块存储
可以通过快照进行数据备份
经常应用在实例存储环境中,如数据库文件
 
05:Nova
在节点上用于管理虚拟机的服务
分布式服务,能够与Keystone交互实现认证,与Glance交互实现镜像管


Nova被设计在标准硬件上能够进行水平拓展
启动实例时,如果有则需要下载镜像
相当于皇帝安插在各个大臣身边的钦差,远程管理各个虚拟机(安装服

务等)。
 
06:Glance
扮演虚拟机镜像注册的角色
允许用户直接拷贝服务的镜像
这些镜像可以应用于新建虚拟机的模版
类似于yum源,任意云主机想要创建前端盘,可以通过Glance服务器映射

后端盘镜像创建前端盘
 
07:Swift
对象存储,底层相当于一个ceph,提供给openstack云主机使用

52.用户配额管理 云主机类型管理 、 镜像管理 网络管理 案例和实例

管理 、 安装额外计算节点

1.云主机创建网络原理
I:创建公网交换机--名称(public)--项目(项目1)--网络类型(Flat

直连网络)--物理网络:physnet1(br-ex,升级后的三层交换机eth0)--

共享、外部网络

II:创建内网交换机:创建网络(lan)--创建子网:lan_net--网络地

址:10.10.10.0/24--配置网关:10.10.10.254(云主机之间通信网关)

--配置DHCP分发内网IP:10.10.10.100,10.10.10.200(分发给云主机

)--配置真机DNS(云主机连接外网)

III:公网交换机--增加子网--名称:wan--网络地址:192.168.1.0/24

(分配浮动公网IP)--网关IP:192.168.1.254(能连接外网的外关)--不

需要激活DHCP(买的公网IP)

IV:创建内外网连接路由--新建路由:r1--选择网络:public(外部网络

)--确定
  点击路由:增加接口--子网:lan(子网),IP地址:10.10.10.254(

内网预留网关)提交

V:浮动公网IP(花钱买的)--访问和安全--浮动IP--分配IP给项目--资

源池:public--分配IP(防止冲突):192.168.1.5--关联:待连接的端

口(选择一台创建的云主机:10.10.10.108)--云主机数量:查看浮动

IP(外网访问192.168.1.5:公网IP就等于访问10.10.10.108:私网IP--

设置防火墙(安全组)规则--添加到10.10.10.108主机应用(各种服务

规则自己设置)

02.堡垒主机、跳板机
外网通过浮动IP连接云主机:先连接的浮动IP绑定的云主机--在通过此

云主机连接到其他云主机,这个绑定浮动IP的云主机,就是堡垒主机,

跳板机(即通过这个跳板机跳进公司内网访问)。一般部署运维的审计

系统。

53.Docker概述、部署Docker、Docker镜像、Docker基本命令
01:容器技术,Docker是实现容器技术的一种手段。
对资源切分和利用的手段,核心手段是:
资源管理(Cgroups)、进程隔离(NameSpace)、SELinux安全,让用户更加方便的使用容器技术,而不关心底层内核技术。
 
02:Docker优点
虚拟机里启动虚拟机为什么性能很差,因为新启动的虚拟机CPU不能支持VMX硬件虚拟化技术,使用容器技术可以解决这一问题。
Docker使用的宿主机共享公共库和程序。
 
03:Docker缺点
容器的隔离性没有虚拟化强;功用Linux内核,安全性差;SELinux难以驾驭;容器监控和排错难度大(弹性)。
 
04:镜像与容器
镜像==模板(后端盘)
容器==虚拟机(img,xml都是docker管理)
 
docker镜像采用分层设计,利用后端盘映射前端盘,叠加前端盘为镜像,再创建(多个)前端盘,使用快照的COW技术,确保底层数据不丢失。
 
Docker镜像仓库:https://hub.docker.com
镜像的唯一性:镜像+标签
 
05:docker run 注意事项
ducker run -it 启动的是交互式进程(如: /bin/bash)
ducker run -itd 启动的是进程(如: nginx,redis)
docker attach/exec 是针对ducker run -itd 这种启动的是进程的容器设置的

54.自定义镜像及仓库、持久化存储 、 Docker网络架构
01:自定义镜像及仓库
基于源镜像进行配置,commit或build成新镜像,当成自己镜像仓库。
将自己的镜像搭建一个镜像仓库(registry),上传到网络,共享给其他主机。

02:持久化存储:卷
docker容器不保持任何数据,重要数据使用外部卷存储(数据持久化)
容器可以挂载真机目录或共享存储为卷(即共享存储服务器,如NFS共享,映射到容器中)。

03:真机将NFS目录共享给docker1、2挂载,docker1启动nginx容器和docker2启动http容器两者共享该目录(两个容器共享一web个页面).

04:Linux网桥:虚拟交换机(TYPE="bridge")
创建容器时启用该网桥(带子网,即网络区域)
目的:一台docker主机有多个容器可隔离网络,创建多个不同网桥,将不同需求的容器隔离开。(同一网桥的不同容器可以互相通信)
bridge:桥接 host:主机模型 null:无网络
查看:brctl show

05:docker最大的作用就是:快速的切换部署环境!
原理:docker容器端口可以跟docker宿主机进行绑定(宿主机可以真机通信,而真机可以访问外网),即外网可以访问到容器内的服务!
容器内部署了nginx和http容器,宿主机启动nginx容器,外网即可以宿主即nginx服务;宿主机关闭nginx服务,启动http容器,外网即可访问宿主机http服务!

虚拟化:kvm namespace(内核的三个功能)
---libvirt 单机命令管理 docker 单机容器管理
---openstack 管理集群 k8s 管理容器集群

55.ansible概述、ansible基础 、 ad-hoc、批量配置管理
01:ansible概述
基于Python开发,IT自动化和DevOps软件,实现了批量操作系统配置,批量程序部署,批量运行命令等功能,只要有SSH和Python即可使用。

02:ad-hoc 主机管理模式/playbook 两种模式
01:主机集合:inventory=/etc/ansible/hosts
host_key_checking=False 首次ssh不输入yes
]# ansible 集合/主机 -m(module) xxx -a(模块的参数) 'xxx' (- k 密码)

常用模块都有哪些:
command --> id(查看用户),uptime,date 默认模块,不支持"|" "<" ">" "&"(bash提供)

authorized_key --> ssh-key-id命令

shell(跟command差不多,可执行任意模块 远程的时候注意转义,否则是本地)

raw(跟shell一样,可执行任意模块,unix,不支持cd 即 -a chdir=/dir touch xxx)

script -a 'xx.sh' --> 执行脚本模块 远程批量执行本地脚本(复杂的任务)

copy -a 'src=xx dest=xx' --> 拷贝文件和文件夹,不适合批量操作(打包校验机制,麻烦)

lineinfile -a 'path=xxx regexp=“^xx"(匹配整行,替换整行) line(修改为)="XXX" -->修改行内容

replace 跟lineinfile一样,但只修改匹配的部分
replace -a 'path=xxx regexp=“^xx"(匹配整行,替换整行) replace(修改为)="^XXX" -->修改行内容

yum -a 'name=aa,bb,.. state=installed' --> yum 装包 (removed 卸载)

service -a 'name=a,b,...state=started(stoppd restarted) enabled=yes' -->启服务

setup | grep os(返回字符串) -->获取主机信息,不写参数获取所有
setup -a 'filter="ansible_os_family"'(返回标准格式) 获取主机名

查看所有模块:]# ansible-doc -l(1300多)

02:动态主机分组(脚本、程序,返回给ansible Json主机数据就行)
(只要哪个程序有主机群组的配置文件+SSH就可以用ansible批量管理,如zabbix)
Json:数组 字典
数组:[ "a","b","c" ] 
字典:{ A:a,B:b,...键值对的集合 }

56.playbook基础 、 playbook进阶
01:ansible的七种武器:
a:ansble 执行临时性工作
b:ansible-doc 文档
c:ansible-console 用户交互式工具(类似shell)
d:ansible-galaxy 从github上下载管理Roles的工具(类似Python的pip,下载别人的项目,回来自己修改)
e:ansible-playbook 任务集(命令集合)
f:ansible-vault 配置文件加密
g:ansible-pull/push 大批量机器配置

02:json YAML Jinja2 playbook
json数据格式:
{} 集合,里面存放多组键值对
[ ] 数组,存放多个值,可以是集合
两者可以互相嵌套
{ "all":[
{ "a1": "A1","a2": "A2" },
{ "b1": "B1","b2": "B2" },
{ "c1": "C1","c2": "C2" }
]
}


YAML数据格式:
--- ,表示一个文件的开始
数组:-空格
键值对::空格
#表示注释
不要用tab键,分隔必须是英文符号
"all":
-
"a1": "A1"
"a2": "A2"
-
"b1": "B1"
"b2": "B2"
-
"c1": "C1"
"c2": "C2"


Jinja2语法规则
基于Python的模板引擎,包含变量和表达是两部分,两者在模板求值时会被替换为值,模板中还有标签,控制模板的逻辑。
Playbook的模板使用Python的Jinjia2模块来处理。
{{ 表达式 }}
{% 控制语句 %}
{# 注释 #}

调用变量 {{var}}
计算 {{2+3}}
判断 {{ 1 in [1,2,3]}}

{% if "name" == "aa" %}
"aa"
{% elif "name" == "bb" %}
"bb"
{% for "BB" in [AA,BB,CC] %}
{{ do method }}
{% endfor %}
{% else %}
"cc"
{% endif %}

对abc哈希加密
{{ "abc" | hash('md5') }}

把一个列表用逗号连接起来
{{ list | join(',') }}


playbook构成
由YAML语言编写,支持YAML脚本
Target 远程主机组
Variable 定义playbook运行时需要使用的变量
Tasks 定义将要在远程主机上执行的任务列表(命令的集合)
Handler 定义Task执行任务完成以后需要调用的任务
红色表示失败,绿色表示成功
主机与主机之间运行命令是并发的
命令是按顺序执行的

---
- hosts: all
remote_user: root
tasks:(此处有空格)
- ping:(此处有空格)

ansible ~]# ansible-playbook ping.yml -f 5
-空格ping:空格参数
-f 并发进程数量,默认是5
hosts 一个或多个组或主机的patterns,以逗号为分隔符
remote_user 账户名
每个task命令批量执行于hosts里所有主机,所有task依次执行

触发器:跟tasks平齐 如过变标签里执行了某个task,则执行某个handler,notify调用此handler的name为触发。

57.分布式ELK平台、ES安装 、 扩展插件 、Kibana安装
01:ELK一整套解决方案。‘ Elasticsearch Logstash Kibana
Elasticsearch:负责日志检索和存储(NoSQL)
Logstash:负责日志的检索和分析、处理(Php)
Kibana:负责日志的可视化(Apache)

02:扩展插件
head插件:
它展现ES集群的拓扑结构,并且可以通过它老进行索引(index)和节点(Node)级别的操作.
他提供一组针对集群的查询API,并将结果以json和表格形式返回
它提供一些快捷菜单,用以展现集群的各种状态
kopf插件:
是一个Elasticsearch的一个集群管理工具
提供了对ES集群操作的API
bigdesk插件:
是一个Elasticsearch的一个集群监控工具
可以查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况、Http连接数等

58.Kibana使用 、Logstash配置扩展插件
01:Kibana 数据展示
02:Logstash 数据采集、加工处理即传输的工具
所有类型的数据集中处理
不同模式和模式数据的正常化
自定义日志格式的迅速扩展
为自定义数据源轻松添加插件
input-->filter-->output

03:Logstash配置扩展插件
codec,input file,sincedb_path(日志读取起始位置),syslog(获取系统日志),filter grok 解析各种非结构化的日志数据插件
www.jinbuguo.com(帮助文档汉化)

04:filebeat(c语言编写,安装在每台web服务器上)将web日志发送给logstash(的beats模块)

59.大数据、Hadoop 、 Hadoop安装与配置 、 HDFS
01:大数据运维:运维+大数据管理软件的技能
指无法在一定时间内用常规软件工具进行捕捉、管理和处理数据集合,需要新处理模式才具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
是指从各种各样类型的数据中,快速获得有价值的信息。

大数据的作用:
调整相关经营策略
预测相关发展趋势
大规模数据处理

大数据相关特性:
大体量:volume
多样性:variety
时效性:velocity
准确性:veracity
大价值:value

02:Hadoop
是一种分析和处理海量数据的软件平台,Java开发,提供分布式基础架构。
高可靠性、高扩展性、高校性、高容错性、低成本。

常用组件:
HDFS:分布式文件系统(核心组件,存储)
MapReduce0(分布式计算框架)(核心组件)
Yarn:集群资源管理系统(核心组件,集群资源管理系统)
Zookeeper:分布式写作服务
Hbase:分布式列存储数据库
Hive:基于Hadoop数据仓库
Sqoop:数据同步工具
Pig:基于Hadoop的数据流系统
Mahout:数据挖掘算法库
Flume:日志收集工具

03:HDFS(分布式文件系统)
Client:切分文件,访问HDFS,与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。

角色:
Namenode:Master主节点,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理所有客户端请求。

Secondarynode:主节点小秘,定期合并fsimage(数据块命名空间、存储信息)和fsedits(修改后的数据块:源数据+新数据,类似前端盘),推送给NameNode;紧急情况下,可辅助恢复NameNode。

Datanode:数据存储节点,存储世界的数据;汇报存储信息给NameNode。

Block:128MB,每块可以多个副本。

HDFS结构:(NameNode一般一台)
存数据:Client(数据切块)-> ..数据存哪..->NameNode-> ..DateNode..Client->DataNode(存储数据)
取数据:Client(数据切块)-> ..数据在哪..->NameNode-> ..DateNode..Client->DataNode(获取数据)

04:MapReduce结构 分布式计算框架
把一个复杂的问题,分解成若干个简单的问题,多台机器共同计算,最终合并汇总。
角色:
JobTracker:切分任务段,数据总监控、错误处理等(管理节点,一台)
TaskTracker:分单任务(多台,干活)
Map Task:解析每条数据记录,传递给用户编写的map()并执行,将输出结果写入本地磁盘。(如果map-only)作业,直接写入HDFS)
Reducer Task:从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行。

05:Yarn结构:Hadoop的一个通用资源管理系统
角色:
ResourceManager:Master,皇上,处理客户端请求,启动、监控ApplicationMaster,监控NodeManager,资源分配与调度。

NodeManager:钦差大臣,皇上安排的助手,每个结点上资源管理,处理ResourceManager的命令,处理来自ApplicationMaster的命令。(每个ApplicationMaster有多个Container在NodeMaster上运行)

ApplicationMaster:数据切分,为应用程序申请资源,并分配给内部任务,任务监控与容错(表示每个应用)。

Container:对任务运行环境的抽象,封装了CPU、内存等;多维资源以及环境变量、启动命令等任务运行相关的信息资源分配与调度。

06:Hadoop三种模式
单机模式:一台机器部署
伪分布式:所有的角色都安装在一台机器上,学习和测试(类似数据库的多实例)
完全分布式:多台机器部署

60.完全分布式 、 节点管理 、 NFS网关
01:Yarn:集群资源管理系统(核心组件,集群资源管理系统)
MapReduce结构 分布式计算框架
02:(NFS)节点管理 增加 删除 修复
03:Yarn节点管理(NodeManager) 增加 删除
04:NFS网关(HDFS client + NFS server)
访问HDFS文件系统必须是HDFS客户端
将HDFS文件系统mount到本地(使用NFSv3协议,任何机器直接能挂载)
外部客户端要访问 HDFS文件系统,通过NFS网关,采用NFS挂载的方式,NFS网关将NFS指令转化为HDFS客户端的指令,发给HDFS client,以HDFS客户端的方式访问后端HDFS文件系统,NFS网关起到代理转发的作用。

61.常用组件 、 Kafka集群 、 Hadoop高可用
01:Hadoop常用组件
是一种分析和处理海量数据的软件平台,Java开发,提供分布式基础架构。
高可靠性、高扩展性、高校性、高容错性、低成本。

常用组件:
HDFS:分布式文件系统(核心组件,存储)
MapReduce0(分布式计算框架)(核心组件)
Yarn:集群资源管理系统(核心组件,集群资源管理系统)
Zookeeper:分布式写作服务

数据、机器损坏了怎么办?NameNode、SecondaryNameNode、ResourceManage都是单点故障(里面都有数据、日志等),一旦损坏了可能导致数据全部丢失。

zookeeper:实时备份
分布式开放源码的应用程序协调服务,保证数据在集群键事务的一致性。应用于:
集群分布式锁(互斥锁、共享锁)、集群同一命名服务、分布式协调服务。

zookeeper:角色与选举
Leader:主(能都能写),接受所有Follower提案请求并统一协调发起提案投票,负责与所有Follower进行内部数据交换。
Follower:从(只能读,唯一),直接为客户端服务并参加与提案的投票,同时与Leader进行数据交换。
Observer:从,直接为客户端服务但并不参与提案的投票,同时也与Leader进行数据交换。
选举:n/2+1的机器选出Leader(超过半数),Leader死亡重新选举,剩余机器少于n/2+1则集群停止工作(集体挂起)。

zookeeper:工作原理
Client读操作:每台server的本地数据库副本直接响应;
Client写操作:统一转发给Leader,Leader发起vote,Leader收集vote结果,当结果过半时,Leader会给所有的server发送通知消息,会把该操作更新的内存中并对Client写请求做回应。
如果投票的Follower太多,信息太大,就降低了效率,Observer诞生了,Observer可以接受客户端的连接,并将写请求转发给Leader节点,但Observer不参与投票,仅仅等待投票结果。
高可用:停止Leader,查看服务器角色(选出新的Leader)

02:Kafka集群 消息队列 开发来用
Kafka:是LinkedIn开发的一个分布式的消息系统,使用Scala编写,是一种消息的中间件。

作用:解耦、冗余、提高扩展性、缓冲;保证顺序、灵活,削锋填谷;异步通信

消息队列:读增加缓存,写添加队列
程序链条A--发送消息-->B-执行-->C-->执行... 
A发送消息(A1,A2..)-->消息队列里,分条执行-->B-执行-->C-->执行...

Kafka角色:
Producer:生产者,负责发送消息
Consumer:消费者,负责读取处理消息
Topic:消息的类别,不同的消息放到不同的列别里
Parition:每个Topic包含一个或多个Parition
Broker:Kafka集群包含一个或多个服务器

Kafka通过Zookeeper管理集群配置,选举Leader.

03:Hadoop高可用 
NameNode的高可用(ZKFS,高可用软件):
1>.HDFS with NFS:新建NFS服务器,主备NameNode同时挂载(NFS瓶颈)
NFS高可用:
a.inotify+rsync :10G
b.drbd+heartbeat:300G
c.hdfs || ceph

2>.HDFS with QJM:不需要共享存储,但需要让每一个DN都知道两个NN的位置,并把块信息和心跳包发送给active和standby这两个NN。(配置复杂,数据传输量增大),数据存放在JournalNode(集群,相当于temp,公共存储,谁都能读和取)服务里,active宕机死掉,standby启用,两者都与一组称为JNS(Journal Nodes)的互相独立的进程保持通信.当Active Node上更新了namespace(文件映射块),它将记录修改日志发送给JNS多数派。Standby nodes将会从JNS中读取这些edits,并保持关注它们日志的变更。Standby Node将日志变更应用在自己的namespace中,当failover发生时,Standby将会提升自己为Active之前,确保能够从JNS中读取所有的edits,即在failover发生之前Standby持有的namespace应该与Active保持完全同步。
脑裂:split-brain,三节点通讯阻断,即集群中不同的DN看到了两个ActiveNN(只能有一个存活!,JNS规定,只允许一个活着的NN写入日志记录)
FailoverControl:状态检测,时时切换。

3>检测高可用:集群内存放文件,宕掉ActiveNN,查看数据分析及文件是否存在.

推荐阅读