YBC的云计算思维

计算机基础

一 计算机由5大单元组成

输入单元(鼠标 键盘)

存储单元(硬盘 内存)

逻辑单元(CPU)

控制单元(主板)

输出单元(显示器 音响 打印机)

CPU

CPU主要由控制单元、逻辑单元和存储单元三部分组成

① 超线程

超线程技术;指在一颗CPU 同时执行多个程序而共同分享一颗CPU 内的资源。真实在CPU 中仅仅多加了一块逻辑处理单元。

超线程的使用必须让主板、软件全部支持才可以进行使用

② 多核心技术

利用多核心的累加方式提高CPU 的速度。

SMP ( Symmetric Multi-Processing) ,对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU) ,各CPU之间共享内存子系统以及总线结构。

CPU功能:计算

CPU与硬盘运行速度差异大, 会导致CPU一直处于等待状态, 需要内存来协调;

内存功能:协调CPU和硬盘之间的差距

硬盘类型(3种):

IDE硬盘(老式台式机已淘汰)

SATA(PC)

Scsi

③ 缓存

就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

因为缓存往往使用的是RAM(断电即掉的非永久储存),所以在用完后还是会把文件送到硬盘存储器里永久存储。

④ CPU的主频

即CPU内核工作的时钟频率(CPU Clock Speed)。通常所说的某某CPU是多少兆赫的,而这个多少兆赫就是“CPU的主频”。主频越高,CPU的运算速度就越快。但主频不等于处理器一秒钟执行的指令条数,因为一条指令的执行可能需要多个指令周期。对于CPU,在有兼容性的前提下,主要看其速度,而主频越高,字节越长,CPU速度就越快。

⑤ 位宽

就是内存或显存一次能传输的数据量。简单地讲就是一次能传递的数据宽度,就像公路的车道宽度,双向四车道、双向六车道,当然车道越多一次能通过的汽车就越大,所以位宽越大,一次性能与的数据就越多,对显卡来说对性能的提高很明显。

显存位宽是显存在一个时钟周期内所能传送数据的位数,位数越大则瞬间所能传输的数据量越大,这是显存的重要参数之一。

内存

其作用是用于暂时存放CPU中的运算数据,以及与硬盘外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。

HBA卡

主机总线适配器(Host Bus Adapter, HBA)是一个在服务器和存储装置间提供输入/输出(1/0)处理和物理连接的电路板或集成电路适配器。

HBA卡能插入计算机、服务器或大型主机的板卡通过光纤信道或SCSI把计算机连接到存储器或存储器网。

RAID卡

RAID(管理本地磁盘,将本地磁盘做成磁盘阵列)是一种把多块独立的物理硬盘按不同方式组合起来形成一个逻辑硬盘从而提供比单个硬盘离着更高的性能和提供数据容错的技术。

RAID卡就是用来实现RAID功能的饭卡通常是由I/0处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。不同的RAID卡支持的RAID功能不同。

Biso

Bios(基本的输入输出系统):是存储在主板上固化的一块只读芯片上的小程序。BIOS : Basic In put Output System 是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

Bios功能:    加电自检程序:检查所有的硬件状况,收集硬件信息。

自启动程序

驱动程序(提供驱动)

单位换算

bit

1 Byte=8 bit

1 KB=1024 B

1 MB=1024 KB

1 GB =1024 MB

1 TB =1024 GB

1 PB=1024 TB

1 EB =1024PB

二进制十进制转化方法

二进制转十进制方法

1.从低位到高位依次表示2的次方数,上下按位相乘求和。

十进制转二进制方法

  1. 连续处于2求余数,将余数倒置。
  2. 从DHCP服务器自动获取

二 计算机网参及概念

1.获取网络参数的方式(2种)

优点:①方便管理;

②实现IP地址复用(主机拿着网卡Mac向DHCP获取网络参数);

Mac地址(物理地址)是唯一的,它固化在物理机芯片上。

缺点:经过DHCP服务器获取,时间长;

  1. 手动配置

优点:无需经过DHCP服务器,更直接;

缺点:容易发生错误,易冲突;

2.必备网络参数

1.IP地址:相当于一台主机在网络中的地址编号。(32bit的二进制)

2.子网:路由器的一个接口所连接的所有网络资源称为一个子网。(图示如下)

在子网内通信规则:同子网通信,不需要配置主机网关;异子网通信,主机必须配置网关。

3.子网掩码:(功能:主机利用子网掩码判断与对方是同子网还是异子网)

4.网关:主机出子网必经的路由器接口,网关属于子网内资源。

5.DNS服务器

1)URL:url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

2)静态解析文件hosts:记录常访问的全称域名。

上网时,先访问静态解析文件查找域名地址,找到后直接打开,找不到,通过DNS服务器动态解析。

位置:c/windows/system32/drivers/etc/hosts

不能访问谷歌原因:国家DNS服务器无谷歌域名解析。

访问谷歌的一种方法:

在hosts文件下,手动粘贴谷歌对应的IP地址  域名,保存后就可以访问谷歌了。

如何找谷歌对应的IP地址  域名:

百度搜索:谷歌hosts持续更新→个人图书馆比较全

www.baidu.com 是服务器在DNS中的命名方式,也叫全称域名,其中www是主机名,baidu.com是全称域名

http://  协议头

http://www.baidu.com.:80   叫做URL(统一资源定位器)

名称

功能

静态解析文件(hosts)

记录经常访问的全称域名

DNS服务器

动态解析

  1. 端口号(16bit的二进制):标识进程和服务。

总端口数:2^16-1=65535个(0不能标识端口)

分为:

1) 知名端口:1~1023,与常用的网络服务固定绑定服务端使用。

2) 动态端口:1024~65535,自定义程序和客户端使用。

url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

3.  DOS常用命令:

  1. ipconfig 查看简要的适配器网络配置信息;

Ipconfig  /all 查看详细的适配器网络配置信息;

  1. ping IP地址/FQDN 测试网络连通性;

(看TTL=数值,有数值可以通信

TTL是最小生存周期,但不是指时间,指与对方之间最多可以再放置几个路由器;

TTL在过一个路由器会在初值上减一,称为过一跳)

  1. Tracert  ip地址/FQDN 探测与对方之间经过的路由器(显示路由器的IP)
  2. Nslookup FQDN 找DNS做解析

或者 nslookup 回车

>域名(eg:www.baidu.com)

>域名(eg:www.163.com)

>exit 退出

  1. netstat  -n 查看当前正在通信的端口

netstat  -an  查看本机所有的打开窗口

  1. Cls 清屏

三 磁盘

磁盘基本知识

磁盘

磁盘

磁道,扇区,柱面

计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区。在传统的磁盘管理中,将一个硬盘分为两大类分区主分区扩展分区主分区是能够安装操作系统,能够进行计算机启动的分区,这样的分区可以直接格式化,然后安装系统,直接存放文件。

MBR分区表

传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容。由于MBR扇区只有64个字节用于分区表,所以只能记录4个分区的信息。这就是硬盘主分区数目不能超过4个的原因。后来为了支持更多的分区,引入了扩展分区逻辑分区的概念。但每个分区项仍用16个字节存储。

主分区数目不能超过4个的限制,很多时候,4个主分区并不能满足需要。另外最关键的是MBR分区方案无法支持超过2TB容量的磁盘。因为这一方案用4个字节存储分区的总扇区数,最大能表示2的32次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB。磁盘容量超过2TB以后,分区的起始位置也就无法表示了。在硬盘容量突飞猛进的今天,2TB的限制早已被突破。由此可见,MBR分区方案现在已经无法再满足需要了

GPT分区表

一种由基于 Itanium 计算机中的可扩展固件接口 (EFI) 使用的磁盘分区架构。与主启动记录(MBR) 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区,支持高达 18 千兆兆字节的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。  与支持最大卷为 2 TB (terabytes) 并且每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)的主启动记录 (MBR) 磁盘分区的样式相比,GUID 分区表 (GPT) 磁盘分区样式支持最大卷为 18 EB (exabytes,1EB=1024PB,1PB=1024TB,1TB=1024GB,1GB=1024MB,1MB=1024KB。18EB=19 327 352 832GB) 并且每磁盘最多有 128 个分区。与 MBR 分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT 分区磁盘有多余的主要及备份分区表来提高分区数据结构的完整性。

格式化:制作文件系统

格式化模型

物理磁道常见损坏:摔伤、强制关机

基本磁盘特点:

1) 分区划分好了之后,不允许扩容。

2) 分区的空间不能跳跃或跨盘。

3) 一块磁盘最多划分4个主分区。

要划分更多分区可以采用多主+1扩展分区。

注:一块盘上只能有一个扩展分区,一块盘的主分区+扩展分区≤4

.硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。 [1]

一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。 [1]

激活的主分区硬盘启动分区,他是独立的,也是硬盘的第一个分区,正常分的话就是C驱。 [1]

分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,那剩的部分就浪费了。 [1]

扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。 [1]

格式化

存储空间必须有文件系统才能存储数据

 

分配单元大小

(格式化的过程是在磁盘上划簇)

Windows:簇(磁盘分配给文件的最小单元)默认4k

Linux:块,与簇相同,叫法不同,默认4k

注: 磁盘以簇为单位,规律性的读取磁盘数据。

动态磁盘

1. 简单卷的数据空间来自于一块磁盘,相当于基本磁盘的基本分区可扩容。

2.跨区卷:卷的空间可以跨盘,至少需要从2块动态磁盘占用空间,支持扩容;写满一块磁盘的空间再占用下一块盘的空间,故没有性能提升

3.带区卷(相当于raid0)至少需要两块动态磁盘上占用大小相同的空间,不支持扩容;以条带化的方式进行并行读写;磁盘数量越多,读写速度越快,但是没有容错机制。

4.镜像卷(相当于raid1)需要在两块动态磁盘上占用大小相同的空间,两块空间互为镜像和互为备份;不支持扩容;不怕坏盘有容错能力

5.Raid5卷:至少在动态磁盘上占用大小相同的空间;不支持扩容;不仅能储存数据。允许坏一块盘,并且数据可以自动恢复原理;将3块盘的空间按照等大小的单元分成N多区块,轮流储存数据。轮流储存奇偶校验算法的校验值,当数据丢失,可以根据算法的逆运算将数据进行恢复

1 )将磁盘格式化(数据丢失)

2 )使用命令转化(数据不丢失

conuert 什么盘:/fs:ntfs可以吧FAT转换成NTFS(不丢失文件)

四 网络模型

协议和服务

(1)协议:网络通信时所遵守的规则和约定。

(2)服务:一种网络功能。

(3)主机(host):连接到网络的所有计算机统称主机。

主机分为服务器(server)和客户机(client)

(4)进程:应用程序是以进程的形式在CPU中被执行的,所以每种服务都有其自己的进程。

(5)端口:端口有65535 x 2个(进行TCP连接时有65535个,UDP有65535个)

C/S架构和B/S架构

Client/Server架构,即客户端/服务器架构。是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。(网游游戏)B/S架构:客户端基本上没有专门的应用程序,应用程序基本上都在服务器端。由于 客户端没有程序,应用程序的升级和维护都可以在服务器端完成,升级维护方便。(网页游戏)

1. 网络功能

信息传输,资源共享

2. 网络分类(广播,点对点网络等)

什么是单播、多播、广播

单播是客户端与服务器之间的点到点连接。”点到点”指每个客户端都从服务器接收远程流。仅当客户端发出请求时,服务器才发送单播流.

 多播也叫组播,是一种多地址的广播,发送和接受端是一对多的关系,服务器只向特定的一组用户发送一个数据包,组中的用户可以共享这个数据包,组外的用户是无法接受到的,多播需要全网内的路由器支持多播,否则许多用户是收不到多播数据的,在广域网实现比较困难

 广播也是一对多的关系,不同的是,广播把数据包的copy发给网络中所有用户,而有的用户此时并不需要数据包,这实际上将造成带宽资源的一定浪费,广播无法通过路由器,组播没有这个限制,只要加入组就能收到数据包,可以说融合了单播和广播的优点.

OSI七层结构----由tcp/IP协议栈来实现

层数

名称

功能

第7层

应用层

规定通信协议

第6层

表示层

  1. 将己方要发送的数据翻译成对方表示层能够识别的数据;
  2. 加密解密;
  3. 压缩解压缩(zip/rar)

第5层

会话层(查看速度和单双工模式)

  1. 与直连设备协商双工模式;
  2. 分割进程间数据

第4层

传输层

  1. 建立双方进程间的连接
  2. 封装单位:数据段
  3. 寻址方式:port(端口)
  4. 寻址目标:对方进程
  5. 连接方式:面向连接(TCP式的连接):保证通信质量;无连接(UDP式连接):保证通信速度

第3层

网络层(路由器看数据包中第三层信息)

  1. 通过IP地址在广域网内进行寻址,寻找对方所在的子网
  2. 封装单位:数据包
  3. 寻址方式:IP地址

4. 寻址目标:子网

第2层

数据链路层(交换机查看该层的封装信息)

  1. 通过mac地址在子网内寻找目标主机
  2. 封装单位:数据帧
  3. 寻址方式:mac地址
  4. 寻找目标 :主机

注:二层的功能只有在子网内有效,跨子网失效

第1层

物理层

  1. 通过传输介质发送bit流;
  2. 规定电器特性

单双工

半双工:能发能收,但收的时候,不允许发,发的时候不允许收(对讲机)

全双工:可以收发

单工(光纤):要么只能发送,要么只能接收。

五 网络协议

协议栈

协议栈(英语:Protocol stack),又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和上下两个其他协议模块通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。用户应用程序只是处理最上层的协议。(参见OSI模型)协议的作用:

1) 建立对等层之间的虚拟通信

2) 实现层次之间的无关性

安装协议位置:网卡→属性→安装→协议

常用协议栈:

1) TCP/IP:工业标准、开放式协议,Internet网络的标准

2) IPX/SPX:Novell开发的netware操作系统使用的协议

3) NetBIOS/NetBEUI:较小的协议栈,应用于IBM和早期的Windows

4) AppleTalk:Apple公司的Mac OS采用的网络协议

一. 应用层相关协议

http:超文本传输协议(传输过程中用户名与密码为明文)TCP:80

https: http + ssl (安全套阶层协议)(传输过程中用户名与密码加密传输)TCP:443

使用https,先向CA机构申请,CA颁发证书,浏览器会自动帮用户验证网站的证书。

Eg:证书位置:IE浏览器→打开www.baidu.com→Alt键(下拉菜单栏)→文件→属性→证书

使用https,先向CA机构申请,CA颁发证书,浏览器会自动帮用户验证网站的证书。

Eg:证书位置:IE浏览器→打开www.baidu.com→Alt键(下拉菜单栏)→文件→属性→证书

第四层:应用层

1、网页浏览

1)DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)

功能:自动给客户端分配网络参数

端口:UDP67 (服务器端)  UDP68(客户端)

2)DNS(Domain Name System,域名系统)

功能:为客户端提供域名解析服务,将全称域名解析为IP地址

端口:UDP53(解析) TCP53(主辅数据更新)

注:hosts文件的功能:先于DNS为本机提供静态解析

3)HTTP (HyperText Transfer Protocol,超文本传输协议)

功能:提供网页浏览

端口:TCP80

4)HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,带有安全套接字的超文本传输协议)

功能:将在网络上传输的数据进行加密

端口:TCP443

2、邮件相关协议

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)

功能:邮件服务器通过SMTP协议将邮件发送给对方的邮件服务器

端口:TCP25

pop3(Post Office Protocol - Version 3,邮局协议)

功能:从邮件服务器群下载邮件到本地,比如Foxmail、Outlook进行下载时使用该协议

端口:TCP110

IMAP4(Internet Message Access Protocol 4,网络邮件访问协议)功能同pop3,端口TCP143

远程桌面  功能提供Windows的图形界面的远程连接   端口:TCP3389

Telnet  功能:字符界面的远程连接,采用明文传输,不安全端口:TCP23  打开方式右键管理 服务和应用 服务 telnet右键属性,禁用改成手动或自动 在DOS窗口输入telent 加ip  y  longin:administrator   pasword:密码

SSH ( Secure Shell,仅支持Linux系统)

功能:带有安全外壳的远程连接协议,加密传输,安全端口TCP22

文件和目录共享

FTP(File Transfer Protocol,文件传输协议)

功能:上传和下载文件,并且支持加密传输数据

端口:TCP21(建立连接)   TCP:20(数据传输)

TFTP(Trivial File Transfer Protocol,简单文件传输协议)

功能:上传和下载文件,无安全加密和验证    端口:UDP69

NFS(Network File System,网络文件系统)

功能:实现Linux下的文件,文件夹共享       端口:TCP2049

其他协议

VPN(Virtual Private Network,虚拟专用网络)

功能:在公用网络搭建公司内部通信的专用网络  端口:厂商自定义

SNMP(Simple Network Management Protocol简单网络管理协议) 功能:用于同一管理连入一个网络的网络设备    端口:UDP161      UDP162

第三层 传输层

TCP(Transmission Control Protocol 传输控制协议):面向连接,保证通信质量

建立面向连接:三次握手(syn发送方请求发送数据,收信方不能拒绝,回复syn.ack确认,发送方ack确认然后发数据)

数据传输:简单确认,流量控制(滑动窗口),确认重传

断开连接:四步断开(fin ack fin ack)(传输完毕请求关闭 确认文件收到,请求关闭,确认关闭)

UDP(User Datagram Protocol,用户数据报协议):无连接,保证通信速度

注:一台计算机上可以使用的端口号65535*2

Tcp65535  udp65535

第二层 互联网络层

IP协议:网络协议  功能:寻址和路由:分段和重组(MTP)

ICMP协议(Internet Control Message Protocol,网络控制信息协议):网络信息协议   功能:探测网络状况。比如ping,tracert都使用ICMP

ARP协议(Address Resolution Protocol,地址解析协议):地址解析协议  命令arp-a查看缓存过的arp协议  功能:将ip地址解析成mac地址,用于封装通信。

同子网:发送ARP广播,通过对方的ip地址获取对方的mac地址。

异子网:发送ARP广播,通过网关的ip地址获取网关的mac地。

备注:数据链路层的功能只在子网内有效(广播)

RARP协议(Reverse Address Resolution Protocol,反ARP协议,对应DHCP服务中IP地址租约)   功能:DHCP专用协议,用自己的mac获取主机上网需要的一个ip地址

二. 传输层相关协议

编号

协议名称

如何保证通信质量

1

tcp :面向连接,保证通信质量

  1. 建立连接,三次握手

2.数据传输,确认重传,流量控制/滑动窗口(接收方的接受能力)

3.断开连接,四步断开

2

Udp: 无连接,保证通信速度

1. 三次握手 -- 建立连接

seq:数据段段号 -- 为了做确认;ack:请求下一个数据段段位;ctl:标记位

2. 滑动窗口 -- 数据传输,确认重传,流量控制

3. 四步断开:断开连接

4. Tcp段格式

5. udp无连接

  1. 特性:保证通信速度,但连接不可靠,因为它不与对方进行协商并连接,也不给数据段标号,也不关心数据段是否到达接收方;
  2. UDP段结构

6. 对比TCP与UDP

特性

TCP

UDP

连接方式

面向连接

无连接

负载

传输数据段时给段标号

×

发送方确认接收方是否收到数据段

×

传输可靠

×

窗口技术和流量控制

×

三. 网络层相关协议

编号

协议名称

1

IP协议

通过IP地址在广域网内进行寻址,实现网络层的主要功能

2

ICMP网络控制信息协议

可以理解为用来探测网络状态命令集合,例如:ping  trancert  netstat

3

ARP协议

同子网通信,通过对方的IP地址向网络中发送ARP广播,获取对方的MAC,用来完成封装通信

异子网通信,通过网关的IP地址向网络中发送ARP广播获取网关的MAC

arp -a ----查看本机的ARP缓存

4

RARP协议(反ARP协议)

是DHCP专用协议

通过自己的mac地址向网络中发送广播,来获取自己网络通信所需要的IP地址

1. ARP

ARP缓存 -- 记录Mac,下次直接访问

命令 arp -a  -- 查看本机的ARP缓冲

2.通信过程

  1. 判断与对方是同子网还是异子网:

将对方的IP地址与本机的子网掩码进行与运算(网段)

  1. 同子网:发送ARP广播获取对方的Mac

异子网:发送ARP广播获取网关的Mac

  1. 封装通信

六 IP地址

一. IP地址格式

二. IP地址分类

三. 配置IP地址的规则:

1、IP地址转换成二进制以后主机位不能全为0或全为1;

2、IP地址转换成二进制以后网络位不能全为0或全为1;

3、D类和E类地址不能给计算机配置;

4、127整段不允许给计算机配置,用来测试探测tcp\ip协议;

A类

网络位                 主机位(24bit)

XXXXXXXX.        XXXXXXXX.XXXXXXXX.XXXXXXXX

0XXXXXXX.        XXXXXXXX.XXXXXXXX.XXXXXXXX

引导位

最小值  00000001.        00000000.00000000.00000001

1    .         0      .   0    .    1      最小IP地址

最大值  01111111.        11111111.11111111.11111110

127(但127不能用)

所以最大值为: 01111110.         11111111.11111111.11111110

126  .            255  .    255 .    254    最大IP地址

总结:A类地址中可用的网络地址数(子网数)由网络位的组合数决定,2的7次方—2=126

A类地址中一个子网中能分配的IP地址数量(主机数量)由主机的组合数决定2的24次方—2=1677万(因为不能全为1或全为0)

B类

网络位                         主机位(16bit)

XXXXXXXX.XXXXXXXX    .     XXXXXXXX.XXXXXXXX

10XXXXXX.XXXXXXXX    .     XXXXXXXX.XXXXXXXX

引导位

最小值  10000000.00000000    .      00000000.00000001

128   .   0                 0    .   1      最小IP地址

最大值  10111111.11111111    .      11111111.11111110

191   .   255              255  .   254     最大IP地址

总结:B类地址中可用的网络地址数量(子网数量)2的14次方=16383

B类地址中每个子网中能够分配的IP地址数(主机数)2的16次方-2=65534

 

 

C类

网络位                      主机位(8bit)

XXXXXXXX.XXXXXXXX.XXXXXXXX     .     XXXXXXXX

110XXXXX.XXXXXXXX.XXXXXXXX     .     XXXXXXXX

引导位

最小值  11000000.00000000.00000000      .     00000001

192   .   0    .   0          .         1      最小IP地址

最大值  11011111.11111111.11111111      .     11111110

223   .   255  .  255         .        254     最大IP地址

总结:C类地址中可用的网络地址数量(子网数量)2的21次方

C类地址中每个子网中能够分配的IP地址数(主机数)2的8次方-2=254

:IP地址中网络位不变,主机位全为0,为该计算机所在的网段。

IP地址中网络位不变,主机位全为1,为该计算机所在的广播地址,当计算机发送广播时,在第三层封装中为广播地址。

四. 网IP和公网IP

专网IP(不允许在英特网中使用)

公网IP(供Internet使用)

1.VLSM(可变长子网掩码)

将IP地址中主机位借给网络位使用,子网掩码中1的位数增加,主机位的长度缩短,以减少子网中的主机数量,减少浪费。子网掩码借位例如:192.168.50.1要100个主机

100<2的7次方,那么最后七位都为0,掩码为255.255.255.128

网络地址为192.168.50.0   广播为192.168.50.127

网络地址  198.168.50.00000001 广播  192.168.50.11111111

192.168.50.10000000       广播地址为127 因为主机位为后七位不能全为0或1所以可用地址为1到126  2的7次方减2,或者广播地址减1

某公司分配到一个ip地址为223.121.254.0/23,根据该公司的部门划分为4个子网,每个子网能容纳125台主机

1111111.11111111.11111111.10000000

子网掩码255.255.255.128               0.0

125<2的7次方所以掩码后画7个0     0.1

有128减2台主机                     1.0

1.1

254.1-254.126   网络地址223.121.254.0       广播地址223.121.254.127

254.129-254.254 网络地址223.121.254.128     广播地址223.121.254.255

255.1-255.126            223.121.255.0               223.121.254.127

255.129-255.254          223.121.255.128             223.121.254.255

借位借两位就是2的2次方个子网,借三位就是2的三次方个子网

2.CIDR(无类间路由)------将多个子网聚合成一个超网

将网络位借给主机位使用,将主机位长度变长,这样的话在该子网中能够容纳主机的数量增多;减少浪费;减轻路由器的压力。

案例:

机房现在有1000台主机,分别在4个子网,每个子网分配了一个c 类的地址段,每个子网250 台,但现在要求将1000台主机放在同一个子网内,分配B类仍然造成大量浪费。

解决:  将4个子网进行聚合

2的10次方=1024

原来四个子网:

192.168.4.0

192.168.5.0

192.168.6.0

192.168.7.0

192.168.4.0         192.168.  000001  00.  0

192.168.5.0         192.168.  000001  01.  0

192.168.6.0         192.168.  000001  10.  0

192.168.7.0         192.168.  000001  11.  0

超网的掩码   11111111.11111111.111111   00.00000000

255  .   255  .   252    .    0

网段        192.168.000001  00. 00000000

192.168.  4      .   0

广播   192.168.000001  11.11111111

192.168.   7      .  255

地址范围

192.168.000001   00.00000001         192.168.4.1

192.168.000001   11.11111110         192.168.7.254

 注意:

1. CIDR标记地址

C类: 192.168.10.1/24

B类: 192.168.10.1/16

2.有类/无类软件(设备)

有类软件(设备):该设备配置IP地址和子网掩码时只能按照A/B/C三类设置,不允许使用VLSM和CIDR;

无类软件(设备):该设备配置IP地址和子网掩码时无需按照A/B/C三类划分,允许使用VLSM和CIDR;

七 网络互连设备

网络传输介质

1. 同轴电缆

(1)同轴电缆分类

细缆:10Base 2

细缆:10Base 5

10 -- 带宽10Mbps

Base -- 信号类型      Base基带传输:数字信号

Broad宽带传输:模拟信号

5 -- 介质类型

5:同轴粗缆

2:同轴细缆

TX:双绞线

F:光纤

(2)相同点与不同点

2. 双绞线

(1)非屏蔽双绞线UTP(常用)

(2)屏蔽双绞线STP

(3)线序的标准

T568B(记),T568A(1/3对调,2/6对调)

1

2

3

4

5

6

7

8

T568B

橙白

绿白

蓝白

绿

棕白

T568A

绿白

绿

橙白

蓝白

棕白

(4)设备分类:第一大类:路由器  PC

第二大类:交换机 集线器Hub

同类设备相连--用交叉线

异类设备相连--用直连线

3. 光纤

(1)组成:玻璃内芯、反射层、塑料保护套

(2)类型:单模光纤、多模光纤

(3)通信:单攻,有接线器 -- 发送器、接收器

(4)优点:速度快、损耗小、不接受电信号干扰

缺点:贵、芯易碎

计算机的分类

  1. 个人PC机(笔记本、台式机)

Windows:个人桌面版操作系统win7/8/10、XP

Linux:ubantu、mint、Fedora

  1. X86服务器

Windows:服务器版操作系统Windows Server2003/2008/2012/2014

Linux:centos、redhat

CISC:复杂指令集计算机

  1. 小型机服务器

IBM的power系列(80%):AIX

惠普HP(20%):HPUnix

RISC:精简指令集计算机

  1. 大型机服务器

注释:网卡

Mac地址 -- 存储在固话在网卡上的只读存储器中,全球唯一

计算机使用:48bit二进制数来封装Mac地址

用户看到的是:12个16进制数(0-9、A-F)

注意:Mac可以临时修改

互联设备

1. 中继器和集线器

(1)都是物理层设备

(2)集线器特点

1) 物理层设备

2) 不识别主机

3) 10Mbps

4) 不隔绝冲突

5) 不隔绝广播

2. 广播域和冲突域

1) 冲突域:一台计算机向外发送数据,另外一台也向外发送,二者的数据在网络上发生冲突,就称二者在同一个冲突域里。

2) 广播域:一台计算机向网络中发送广播,广播能够到达的范围称为广播域。

3. 交换机

(1)工作原理:通过Mac地址表在子网内转发数据

(2)switch收到数据帧先看数据帧的源mac,mac地址表中无马上记录,再看目的mac;若有目的mac记录,按记录转发,若无则泛洪(临时性广播)。

(3)内部结构:网状连接节点制,可实现高速并发传输

(4)特点:

1) 数据链路层设备

2) 识别主机

3) 100Mbps

4) 隔绝冲突

5) 不隔绝广播

4. 生成树协议STP

1) 功能:避免交换机环路

2) 网桥里只可运行一个,交换机可运行多个

5. 可管理交换机和不可管理交换机

可管理交换机:三层交换(有路由功能的交换机)

1) 可以划分VLAN

2) 1个VLAN是access口,转发VLAN数据配置为trunk口

6. 路由器

(1)工作原理:根据路由表转发数据,实现跨子网通信

(2)路由器表建立方法:

手动添加:静态路由,适用于网络拓扑变化不大且相对简单的

自动建立:动态路由,可以在路由器上运行路由协议

(3)路由协议

让相邻路由器周期性交换路由表相互学习

选择最佳路径

rip:距离矢量选择协议(看跳数)

ospf:链路状态选择协议(综合,看条数、带宽)

(4)路由器特点:

1) 第三层网络层的设备

2) 隔绝冲突

3) 隔绝广播

  Trunk和access模式

交换机和交换机之间大部分实施了trunk,PC和交换机的连接接口大部分使用的access。

access属于独占模式,只允许一个VLAN的数据通过;trunk属于共享模式,允许多个VLAN数据通过。

什么是PVID?

PVID(port VLAN ID):范围为1-4094

在任何设备上将VLAN ID作为识别流量的重要工具。

注意是同一个交换机上。在流量的入方向增加PVID,在流量access接口的出方向去掉PVID,还原成原始的以太帧。

trunk模式工作原理

trunk模式就是共享模式,称为干道链路,trunk允许多个VLAN流量通过。

原理:当trunk端口收到帧时,如果该帧不包含tag,将打上端口的PVID(vlan 1),如果该帧中包含tag(例VLAN 20),则不改变。

当trunk端口发送帧时,该帧的VLAN ID在trunk的允许列表中,若与端口的PVID相同时,则剥离tag发送,若与端口的PVID不同时,则直接发送(vlan 20,已打tag)。

路由协议OSPF

路由协议概念

开放式最短路径优先OSPF(Open Shorest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议。

RIP是一种基于距离矢量算法的路由协议,存在着收敛慢、易产生路由环路、可扩展性等问题,目前已经逐渐被OSPF取代。

OSPF

特点

1.天生无环的协议(loop free,指在同一个区域内部)实现路由器最短路径

OSPF划分区域(层次化,区域0-骨干区域):

类似于中央-》省-》区-》县-》乡;公司中高管-》中层-》team leader-》职员

2.收敛快:当网络发生变化时,网络上所有设备都知道发生了变化,并完成了相应的计算,比如增加了路由或撤销了路由

3.支持多种认证方式(不认证、明文认证、MD5认证)

OSPF的原理

首先相互之间建立好邻居关系,相互认识了就是建立的邻居关系,到了新宿舍一定要搞好关系;然后进行LSA(link state advertise链路状态通告)泛洪,将会形成一个LSDB(链路状态数据库),这个数据库是非常重要的;从数据库的条目中通过SPF算法选出一跳最佳路径

Linux

LVM

全称“逻辑卷管理器”,来源于IBM的AIX系统。使用LVM可以更方便灵活的管理磁盘。

一.LVM中基本概念

1.PV:物理卷,在Linux系统中可以是一整块磁盘或一个分区

2.VG:卷组,由一块或多块PV组成

3.PE:PV加入VG时,所有的PV会被划分为等大的块,每个块称为PE

4.LE:LE与PE等大,一一映射

5.LV:逻辑卷,由多个LE组成

CentOS 7启动过程

1.POST (加电自检) ,主板上的BIOS芯片

2通过BIOS系统中的开启启动项, 读取MBR

MBR : Master Boot Record ,主引导记录

3.加载OSLoader ( CentOS7中grub2 )

4.显示grub2菜单

5.grub2程序加载Linux内核( vmlinuz )和initramfs

6.grub2程序将控制权交给内核( kernel )

7.kernel初始化所有硬件设备,启动系统最高进程(systemd ) , udev将设备识别为设备文件存放至/dev下

8.systemd进程初始化系统所高服务,读取/etc/fstab

9.挂载文件系统

10启动系统所需的所有服务

NFS

1、NFS:网络文件系统,用于linux和Unix系统实现目录共享,也可作为共享存储

2、端口:tcp 2049

3、工作原理:

1.C/S架构

2.客户端以挂载方式使用共享存储

3.RPC服务(TCP/UDP:111)和nfs服务(TCP/UDP:2049)

服务器首先启动RPC服务,其次启动nfs服务,向RPC服务注册自己使用的通信端口。客户端连接nfs服务时,首先客户端的RPC服务会连接服务器的RPC服务,获取nfs服务的端口,然后客户端向nfs服务器的端口进行连接,建立连接后,实现数据传输

SSH

1、secure shell:安全外壳,用于远程连接

2、端口:tcp 22

3、两种登录方式:

1.基于口令的登录方式

a.client向server发送连接请求

b.server向client发送一个公钥

c.client使用公钥将server的密码用户名加密后传输到server

d.server使用私钥解密,对比用户名和密码,一致即可登录

2.基于秘钥对的登录方式

a.client生成一对密钥对,将公钥上传到server

b.server用收到的公钥加密随机产生的字符,发送到client

c.client使用私钥解密,将解密后的数据传输到server

d.server收到后,对比加密前的数据,一致即可登录

NTP

1、NTP:网络时间协议,时间同步

2、端口:UDP:123

3、工作过程:client连接到server的udp:123端口,请求时间同步;server回复client调用时间,client根据调用时间调整时间

DHCP

1、功能:为客户端分配网络参数

2、端口:UDP 67(server)      UDP 68(client)

3、DHCP租约请求(四步通信)

 1.网络中有DHCP服务器且正常运行   

client向网络中发送广播(封装自己MAC)discover;DHCP server收到广播回复offer,询问是否使用自己分配的IP;client收到回复request,确认使用;server向client发送网络参数。全部过程中全部以广播的形式发送。

2.DHCP server没有或不可用,client会一直发送discover,时间间隔1s,2s,4s,8s,16s若还是无回复,自己分配169.254.0.0/16地址,每隔五分钟发送一次discover。

4、租约更新

1.无重连

50%    client向server发送request,server回复ack,租约时间重置

无回复继续使用

87.5%  client向server发送request,server回复ack,租约时间重置

无回复继续使用

100%   client向网络中发送广播获取新的IP,四步通信过程

2.有重连

若租期到期,向网络中发送广播重新获取IP,四步通信过程

若租期未到期,client判断是否迁移子网(ping 网关)

迁移子网,向网络中发送广播获取新的IP

未迁移子网,client继续用原有IP

DNS

1、DNS:域名解析

2、端口:UDP53:提供解析

TCP53:主辅数据更新

3、URL:统一资源定位器

4、DNS空间结构

1、根域:在DNS域名空间中,根域只有一个,它没有上级域,用"."来表示。

2、顶级域:根域之下的第一级域就是顶级域。

3、子域:除了顶级域和根域之外,其他域都为子域。

注:子域可以分为很多层,离顶级域(一级子域)越近,级别也就越高,如二级子域、三级子域等

5、解析类型:正向解析:FQDN--->IP(正向区域,以域名命名)

反向解析:IP----->FQDN(反向区域,以网段命名)

6、查询方式:递归查询:发送一个解析请求,dns服务器提供最终解析结果

迭代查询:发送解析请求,dns返回一个指针,让客户端向其他dns查询

7、dns服务器类型

1、hint:线索服务器:指定根服务的问题,通过hint来联系到根并刷新根服务器列表

2、master:主服务器:能够提供域名解析服务器

3、slave:辅服务器:主域的冗余,每个主域可以有一个到多个slave服务器。slave的数据直接通过master服务器进行复制,更新。

4、forward:转发服务器:将本地网络中所需要解析的请求转发至指定的DNS服务器

FTP

1、文件传输协议

2、传输方式:ASCII码传输:网页文件

二进制传输:可执行文件、图片、压缩文件

3、端口:TCP20(数据传输)、TCP21(建立连接)

4、ftp两种工作模式

主动模式:客户端通过任意端口连接ftp的数据端口20进行数据传输

a.client的2000(大于1024的端口)到ftp server 的21端口,请求连接

b.client发送port+监听端口(2001,大于1024)到ftp server的21 端口

c.三次握手,建立连接

d.client 2001和server 20进行数据传输

被动模式:客户端通过任意端口连接ftp的任意大于1024的端口进行数据传输

a.client的2000(大于1024的端口)到ftp server 的21端口,请求连接

b.client发送pasv+监听端口(2001)到ftp server 的21端口

c.server发送port+监听端口(3000,大于1024)到client的2001

d.三次握手,建立连接

e.client 2001和server 3000进行数据传输

5、ftp三种登录方式

匿名账号:ftp(匿名用户)

实体账号:server上创建的用户名

虚拟账号:客户端使用虚拟账号登录ftp server,虚拟账号仅限登录ftp,在server创建实体账号,将虚拟账号映射到实体账号,虚拟账号登录目录为实体账号家目录。

注:设置虚拟账号后实体用户全部限制登录

虚拟账号的权限同匿名用户

登录出现问题,查看/var/log/secure日志

iptables

1、防火墙分类:

物理结构:硬件防火墙

软件防火墙

防护方式:包过滤防火墙

代理防火墙

状态监测防火墙

2、iptables的表和链(四表五链)

1.表:提供特定功能

filter:实现包过滤功能,过滤包中的IP地址、port、协议、标记位

nat:实现网络地址转换,nat代理和端口映射,内网和外网的互相访问

mangle:重构和跟踪处理数据包

raw

2.链:数据包的传播路径,每条链包含多条规则,根据数据包的传播路径使用不同的链中的规则对数据包进行审核。

INPUT链:当数据的接收方为本设备时,审核相应接口的INPUT链

OUTPUT链:当数据的发送方为本设备时,审核相应接口的OUTPUT链

FORWARD链:当本设备负责转发数据时,审核离发送方近口的FORWARD链

POSTROUTING链:NAT代理

PREROUTING链:端口映射

3、组成部分

内核空间:netfilter用于存储规则和genuine规则对数据包进行过滤

用户空间:iptables用于编写策略和规则

集群

1、cluster(集群):至少两台计算机组成的群体

节点:集群里单一的计算机称为一个节点

2、集群分类:

1.高可用集群(HAC)

a.解决的问题:防止单点故障,保证系统或服务不间断的对外提供

b.软件:Keepalived、heartbeat、HAproxy

c.高可用层级:物理层高可用、虚拟化层高可用、OS层高可用、应用层高可用

d.高可用级别:99%、99.9%、99.99%、99.999%(平均无故障运行时间/运行总时间)

2.负载均衡集群(LBC)

a.解决的问题:减轻单一节点的负载,将负载根据一定的策略分配到集群的所有节点

b.实现:硬件负载均衡器:F5

软件:LVS,第四层的负载均衡

3.高性能集群(HPC)

a.解决的问题:整合集群中节点的计算资源,形成超越单台机器计算能力的强力系统

b.软件:mpich

1 科学集群

科学集群是并行计算的基础。通常,科学集群涉及为集群开发的并行应用程序,以解决复杂的科学问题。科学集群对外就好像一个超级计算机,这种超级计算机内部由十至上万个独立处理器组成,并且在公共消息传递层上进行通信以运行并行应用程序。

2 负载均衡集群

负载均衡集群为企业需求提供了更实用的系统。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序的大量用户提供服务。每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。对于网络流量负载,当网络服务程序接受了高入网流量,以致无法迅速处理,这时,网络流量就会发送给在其它节点上运行的网络服务程序。同时,还可以根据每个节点上不同的可用资源或网络的特殊环境来进行优化。与科学计算集群一样,负载均衡集群也在多节点之间分发计算处理负载。它们之间的最大区别在于缺少跨节点运行的单并行程序。大多数情况下,负载均衡集群中的每个节点都是运行单独软件的独立系统。

但是,不管是在节点之间进行直接通信,还是通过中央负载均衡服务器来控制每个节点的负载,在节点之间都有一种公共关系。通常,使用特定的算法来分发该负载。

3 高可用性集群

当集群中的一个系统发生故障时,集群软件迅速做出反应,将该系统的任务分配到集群中其它正在工作的系统上执行。考虑到计算机硬件和软件的易错性,高可用性集群的主要目的是为了使集群的整体服务尽可能可用。如果高可用性集群中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像。当它代替主节点时,它可以完全接管其身份,因此使系统环境对于用户是一致的。

高可用性集群使服务器系统的运行速度和响应速度尽可能快。它们经常利用在多台机器上运行的冗余节点和服务,用来相互跟踪。如果某个节点失败,它的替补者将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,集群永远不会停机。

在实际的使用中,集群的这三种类型相互交融,如高可用性集群也可以在其节点之间均衡用户负载。同样,也可以从要编写应用程序的集群中找到一个并行集群,它可以在节点之间执行负载均衡。从这个意义上讲,这种集群类别的划分是一个相对的概念,不是绝对的。

3、串行和并行

1.串行:单个计算机(单个独立处理单元)执行软件操作

2.并行:同时使用多种计算机资源解决计算机问题的过程

ISCSI

1、存储分类:

内置存储

外挂存储:直连式存储(DAS)

网络存储:网络附加存储(NAS):网络上的文件系统

存储区域网络(SAN):网络上的磁盘(光纤)

存储的属性

Ø 存储的属性由capacity(容量)和performance(性能)两个方面来度量。

Ø 容量:就是能够存储数据的多少(gigabit)

Ø 性能:可以从三个方面进行测量

1.bandwidth(MB per second or MBps)

2.throughput(I/O persecond or IOps)

3.latency(in milliseconds)

Ø 另外还需考虑存储的安全性,可靠性

联网存储的类型:

Ø 光纤通道 (FC)存储器

FC 存储区域网络 (SAN) :FC SAN 是一种将主机连接到高性能存储设备的专用高速网

络。该网络使用光纤通道协议,将 SCSI 流量从虚拟机传输到 FC SAN 设备。

Ø Internet SCSI (iSCSI)存储器

iSCSI 将 SCSI 存储器流量打包在 TCP/IP 协议中,使其通过标准TCP/IP 网络(而不是专

用 FC 网络)传输

Ø 网络附加存储 (NAS)

在通过标准 TCP/IP 网络访问的远程文件服务器上存储虚拟机文件

Ø 共享串行连接的 SCSI (SAS)

在可向多个主机提供共享访问的直接连接的 SAS 存储系统上存储虚拟机。这种类型的

访问允许多个主机访问LUN 上的同一个 VMFS 数据存储。

直连存储(Direct-attached Storage)

直连式存储依赖服务器主机操作系统进行数据的IO读写和存储维护管理,数据备份和恢复要求占用服务器主机资源(包括CPU、系统IO等),数据流需要回流主机再到服务器连接着的磁带机(库),数据备份通常占用服务器主机资源20-30%,因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行,以免影响正常业务系统的运行。直连式存储的数据量越大,备份和恢复的时间就越长,对服务器硬件的依赖性和影响就越大。

直连式存储与服务器主机之间的连接通常采用SCSI连接,带宽为10MB/s、20MB/s、40MB/s、80MB/s等,随着服务器CPU的处理能力越来越强,存储硬盘空间越来越大,阵列的硬盘数量越来越多,SCSI通道将会成为IO瓶颈;服务器主机SCSI ID资源有限,能够建立的SCSI通道连接有限。

无论直连式存储还是服务器主机的扩展,从一台服务器扩展为多台服务器组成的群集(Cluster),或存储阵列容量的扩展,都会造成业务系统的停机,从而给企业带来经济损失,对于银行、电信、传媒等行业7×24小时服务的关键业务系统,这是不可接受的。并且直连式存储或服务器主机的升级扩展,只能由原设备厂商提供,往往受原设备厂商限制。

NAS(Network Attached Storage:网络附属存储)

按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。

优点:

NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内。   NAS设备的物理位置同样是灵活的。它们可放置在工作组内,靠近数据中心的应用服务器,或者也可放在其他地点,通过物理链路与网络连接起来。无需应用服务器的干预,NAS设备允许用户在网络上存取数据,这样既可减小CPU的开销,也能显著改善网络的性能。

局限:

NAS没有解决与文件服务器相关的一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。

由于存储数据通过普通数据网络传输,因此易受网络上其它流量的影响。当网络上有其它大数据流量时会严重影响系统性能;由于存储数据通过普通数据网络传输,因此容易产生数据泄漏等安全问题;   存储只能以文件方式访问,而不能像普通文件系统一样直接访问物理数据块,因此会在某些情况下严重影响系统效率,比如大型数据库就不能使用NAS。

SAN

存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。

2、SCSI和ISCSI

SCSI:小型计算机系统接口

SCSI协议:服务器域SCSI设备数据传输使用的协议

ISCSI:存储技术,Internet SCSI

可以实现TCP/IP协议运行上运行scsi协议,或通过IP网络传输scsi指令集

3、工作原理:

Rsync

是一个远程数据同步工具,可通过网络快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快

Rsync本来是用于替代rcp的一个工具,Rsync可以通过rsh或ssh使用,也能以daemon模式去运行

在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。连接时,Rsync

server会检查口令是否相符,若通过口令查验,则可以开始进行文件传输。第一次连通完成时,会把整份

文件传输一次,以后则就只需进行增量备份

1、远程数据同步协议,通过网络同步多台主机间的文件

使用“Rsync算法”使本地和远程两个主机之间的文件同步,至同步两个文件之间不同部分,速度快

2、端口:873

3、工作原理:以daemon运行时,server打开873端口,等待client连接。连接时,server检查口令是否一致,一致开始文件传输,第一次同步会把整份文件传输一次,以后只传输不同部分。

4、特点:保持文件原有权限、时间、软硬链接等

不需要特殊权限

可以镜像保存整个目录树和文件系统

可以使用rsh、ssh等方式传输,也可通过直接的socket连接

支持匿名传输

Rsync特点

1.可以镜像保存整个目录树和文件系统;

2.可以保持原来文件的权限、时间、软硬链接等;

3.无须特殊权限即可安装;

4.优化的流程,文件传输效率高;

5.可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;

6.支持匿名传输

Apache

httpd服务

发布站点:

Linux:Apache  Nginx  Tomcat  Weblogic

Windows:IIS(网站.FTP站点)

可以文件传输的服务

FTP  NFS  SSH  Rsync

一、Apache的三种工作模式(如何响应客户端)

Prefork MPM 

prefork模式(默认模式)是很古老但是非常稳定的模式。使用的是多个子进程,Apache在启动之初,控制进程会建立若干个子进程,然后等待请求进来,并且总是视图保持一些备用的子进程。为了不在请求到来时再生成子进程,所以要根据需求不断的创建新的子进程,最大可以达到每秒32个直到满足需求为止。之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程中只有一个线程,在一个时间点内,只能处理一个请求。

在Unix系统中,父进程通常以root身份运行以便邦定80端口,而 Apache产生的子进程通常以一个低特权的用户运行。User和Group指令用于配置子进程的低特权用户。运行子进程的用户必须要对他所服务的内容有读取的权限,但是对服务内容之外的其他资源必须拥有尽可能少的权限。

优点:成熟,兼容所有新老模块。进程之间完全独立,使得它非常稳定。同时,不需要担心线程安全的问题。(我们常用的mod_php,PHP的拓展不需要支持线程安全)

缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。

Worker MPM 

:worker模式和prefork模式相比,worker模式使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些。

另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。由于用到多进程多线程,需要考虑到线程的安全了,在使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等待到超时才会被释放(该问题在prefork模式下也存在)。

Apache总是试图维持一个备用(spare)或是空闲的服务线程池。这样,客户端无须等待新线程或新进程的建立即可得到处理。在Unix中,为了能够绑定80端口,父进程一般都是以root身份启动,随后,Apache以较低权限的用户建立子进程和线程。User和Group指令用于配置Apache子进程的权限。虽然子进程必须对其提供的内容拥有读权限,但应该尽可能给予他较少的特权。另外,除非使用了suexec ,否则,这些指令配置的权限将被CGI脚本所继承。

不管是Worker模式或是Prefork 模式,Apache总是试图保持一些备用的(spare)或者是空闲的子进程(空闲的服务线程池)用于迎接即将到来的请求。这样客户端就不需要在得到服务前等候子进程的产生。

优点:占据更少的内存,高并发下表现更优秀。

缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)。

keep-alive

在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。

使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。

但是,keep-alive并不是免费的午餐,长时间的tcp连接容易导致系统资源无效占用。配置不当的keep-alive,有时比重复利用连接带来的损失还更大。所以,正确地设置keep-alive timeout时间非常重要。

Event MPM

:event是Apache最新的工作模式,它和worker模式很像,不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题(某些线程因为被keep-alive,挂在那里等待,中间几乎没有请求过来,一直等到超时)。

在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这样,一个线程就能处理几个请求了,实现了异步非阻塞。这增强了在高并发场景下的请求处理。

event工作模式在遇到某些不兼容的模块时,会失效,将会回退到worker模式,一个工作线程处理一个请求。官方自带的模块,全部是支持event工作模式的。

nginx

nginx服务

一、网站的两种架构

LNMP:Linux Nginx mysql PHP

LAMP:Linux Apache mysql PHP

二、网站的分类

动态网站:可以根据用户的选择从数据库中调用数据,生成不同的页面

静态网站:html

三、虚拟主机

在一台物理服务器上架设多个站点,每个站点称为一个虚拟主机

虚拟主机技术:

1、基于FQDN:多个站点使用同一个IP地址,同一个端口,客户端使用不同的FQDN访问,需要使用DNS解析,常用技术

2、基于端口:多个站点使用同一个IP地址,不同的站点启用不同的监听端口,客户端访问需要在IP或者FQDN后自行输入端口号

3、基于IP地址:多个站点都启用80端口监听不同站点,使用不同的IP地址进行分区

四、实验

1、使用Nginx发布静态页面

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

Tomcat

中间件:指的是一类的软件,常用于中间件Tomcat,Rabbitmg,Memcached。weblogic等

1.为不同的应用程序提供数据的连接与传输

2.为上层应用程序提供运行与开发环境

功能:轻量级的web服务器,可以处理HTML的静态页面请求,也能处理用户的动态页面请求

web型中间件

中间件的分类

web型中间件:Tomcat ,weblogic

消息型中间件:rabbitmq(客户端读取消息但不知道提供信息的服务器是谁)

缓存中间件:memcached(减轻数据库的压力)

PXE

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。

kickstart

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。

3、PXE+Kickstart的系统需求和安装过程

1)系统需求

1. 网卡必须支持PXE引导;

2. 客户端需要有与Kickstart 通信的IP地址,这里一般都是通过DHCP自动分配IP地址来实现;

3. 提供引导所需的文件,内核文件,内核镜像文件等,此时一般通过tftp-server等实现;

4. kickstart文件,它主要实现自动化安装的过程,比如配置主机名、添加用户、安装系统后相关操作;

5. 提供安装源,一般就是NFS/ftp/httpd等;

2)安装过程

1 .  PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;

2 .  DHCP 服务器返回分配给客户机的IP * 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;

3.   PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;

4.  PXE Client 取得pxelinux.0 文件后之执行该文件;

5.   根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;

6.   进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

3)操作时需要注意

1. 生成kickstart文件时,需要安装通过yum -y install system-config-kickstart 安装此软件包,安装的软件包之前,首先需要repo文件中第一行写成[development],括号中建议填写development,填写其他内容会导致后面system-config-kickstart命令生成kickstart文件文件时无法选择软件包

2. 客户端的内存需要调整大一点,2G,否则会出现内容空间不足导致不能进行安装

PHP

(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言语法吸收了C语言JavaPerl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了CJavaPerl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密优化代码运行,使代码运行更快。

CDN

CDN(Content Delivery Network,内容分发网络),即全网内容加速服务。为了尽可能的避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定,由此,诞生了

CDN 加速服务。

网站的传统访问过程

1. 用户在浏览器中输入目标网站的 URL

2. 浏览器向域名解析服务器(DNS,Domain Name System,域名系统,是因特网上域名和 IP 地

址相互映射的一个分布式数据库)发出解析请求,获得此域名对应的 IP 地址

3.浏览器得到这个 IP 地址,向其对应的服务器发出访问请求

4.目标服务器对此作出响应,将数据回传至用户浏览器并显示出来

CDN 如何加速

与传统访问方式不同,CDN 网络则是在用户和服务器之间增加 Cache 层,将用户的访问请求引导到

Cache 节点而不是目标服务器站点,要实现这一目的,主要是通过接管 DNS 实现。

cdn访问过程

1.用户在浏览器中输入目标域名

2. 浏览器向本地域名解析系统(Local DNS)发出解析请求

3. 经过 DNS 递归查询,请求被转移至 CDN供应商 DNS(GSLB,Global Server Load Balance,全

局负载均衡)系统,此时还没有产生 Cache

4.GSLB 返回最佳 CDN 接入节点的 IP,同时 Local DNS 缓存此接入节点(在此过程中,会根据客户

端的 IP 地址,地理位置,入网类型电信还是网通,返回最佳接入节点)

5.用户对此 CDN 接入节点发起请求,CDN 网络经过内部路由,并转发请求至源服务器

6. 源服务器返回响应的数据,CDN 节点将数据返回至 CDN 接入节点

7.CDN 接入节点将数据返回给用户,同时缓存数据

CDN 节点缓存了数据,任何用户再次请求这一份数据时,CDN 缓存会直接返回,并不需要再由源服

务器进行处理,这大大的加快了数据往返的速度,对于静态资源的加速尤为显著。即便请求动态资源,

比如动态页面,其中也是有许多的静态资源是不会经常改变的,只要控制好缓存机制,也会有明显的加

速效果。

cdn架构

一般,CDN 网络主要由中心节点、边缘节点两部分构成。最简单的 CDN 网络只需一台负责全局负载均衡的 DNS 和各节点一台 Cache 即可运行。 DNS 支持根据用户源 IP 地址解析不同的 IP,实现就近访问。为了保证高可用性,CDN 网管中心需要监控各节点的流量、健康状况。当一个节点的单台 Cache 承载数量不够时,才需要多台 Cache,多台 Cache 同时工作时,才需要负载均衡器,使 Cache 群协同工作

CDN 中心节点:

包括 CDN 网管中心和全局负载均衡 DNS 重定向解析系统,负责整个 CDN 网络的分发及管理。

CDN 网管中心:

是整个 CDN 能够正常运转的基础保证,它不仅能对整个 CDN 网络中的各个子系统和设备进行实时监控,对各种故障产生相应的告警,还可以实时监测到系统中总的流量和各节点的流量,并保存在系统数据库中,使网管人员能够方便地进行进一步分析。一套完善的网管系统,允许用户按需对系统配置进行修改。

全局负载均衡 DNS:

通过一组预先定义好的策略,将当时最接近用户的 Cache 节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在各地的所有 CDN 节点保持持续通信,搜集各节点的通信状态,确保不会将用户的请求分发到不可用、或不健康的 Cache 节点上。

CDN 边缘节点:

主要指异地分发节点,由负载均衡设备(如果缓存也需要集群的话)、高速缓存服务器两部分组成。负载均衡设备负责每个节点中各个 Cache 的负载均衡,保证节点的工作效率;同时还负责收集节点与周围环境的信息,保持与全局负载均衡 DNS 的通信,实现整个系统的负载均衡。

高速缓存服务器(Cache):

负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。通过全局负载均衡 DNS 的控制,用户的请求被透明地指向离他最近的节点,节点中 Cache 服务器就像网站的原始服务器一样,响应终端用户的请求。因其距离用户更近,故其响应时间才更快。

SDDC软件定义数据中心

SDDC (Software Defined Data Center软件定义的数据中心),是对数据中心所有的物理、硬件的资源进行虚拟化、软件化的一种技术。

定义

SDDC依赖于虚拟化和云计算技术, SDDC的目标是虚拟化数据中心的一切物理资源,通过虚拟化的技术,构建一个由虚拟资源组成的资源池,不仅是对服务器进行虚拟化,还包括存储虚拟化和网络虚拟化等。不仅可以简化服务器更改、存储更改、网络配置的难度,更使得对服务器、存储、网络的管理和配置操作具备可重复性和持续性。

1、SDDC软件定义数据中心

SDC:软件定义计算,将物理节点的计算资源进行整个行程计算资源池,再对上层VM动态分配,关键技术服务器虚拟化,KVM、VMware

SDS:软件定义存储,将硬件存储资源整合起来,并通过软件来定义这些资源,形成统一的分布式的共享存储,可以应用于异构环境。比如Ceph

SDN:软件定义网络,主要通过软件定义数据的转发等网络功能,主要采用overlay技术。

云操作系统:SDDC的大脑,负责将计算、存储、网络资源依据策略进行自动化调度与统一管理、编排和监控,同时根据用户需求形成不同的服务并提供计费等功能

IT基础设施:主要包括服务器、存储、网络等硬件设备。主要使用x86架构服务器。

2、什么是分布式存储

消除传统存储中心化的结构,将数据分不到集群中所有的物理节点上

3、块存储、文件系统存储、对象存储

块存储:提供硬盘给客户端使用,客户端根据需求自己制作文件系统使用,文件系统结构在Client维护,共享性差,但是性能好

文件系统存储:通过网络提供Client文件系统使用,Client只需要挂载即可使用,文件系统结构在存储端维护,共享性好,但是性能差

对象存储:Client通过应用接口使用对象存储,实质上是将元数据与实际数据节点进行剥离,并且数据分布式存储,共享性好且性能好

Ceph

1、SDDC:软件数据定义中心

1.SDC:软件定义计算

通过虚拟化软件将物理服务器的计算资源整合成计算资源池,再进行动态的分配和管理,主要技术是服务器虚拟化,例如KVM、VMware

2.SDS:软件定义存储

将硬件存储资源整合起来,通过软件来定义这些资源,用户能够根据策略来配置和使用存储服务,并将他们不熟在一系列有供应商优化商用硬件乃至云中的多种硬盘

例:Ceph、VSAN

3.SDN:软件定义网络

通过软件定义二三层网络,主要使用overlay技术

例:VMware NSX

4.云操作系统:SDDC的大脑,负责将计算、存储、网络资源依据策略进行自动化调度域统一管理、编辑和监控,同时根据用户需求形成不同的服务器并提供计费等功能。例OpenStack

5.IT基础设施:主要包括服务器、存储、网络的硬件设备。x86架构服务器产业链较为成熟,在服务器市场处于主流地位,其用于云计算底层基础设施的可行性已被一杯行业所证明,但取代小型机尚需

SDC:软件定义计算,将物理节点的计算资源进行整个行程计算资源池,再对上层VM动态分配,关键技术服务器虚拟化,KVM、VMware

SDS:软件定义存储,将硬件存储资源整合起来,并通过软件来定义这些资源,形成统一的分布式的共享存储,可以应用于异构环境。比如Ceph

SDN:软件定义网络,主要通过软件定义数据的转发等网络功能,主要采用overlay技术。

云操作系统:SDDC的大脑,负责将计算、存储、网络资源依据策略进行自动化调度与统一管理、编排和监控,同时根据用户需求形成不同的服务并提供计费等功能

IT基础设施:主要包括服务器、存储、网络等硬件设备。主要使用x86架构服务器

Ceph是什么

ceph是软件定义的,统一的、分布式的存储解决方案

统一的:ceph提供对象存储、文件系统存储、块存储

分布式:不管使用ceph的哪一种存储方式,在集群底层全部以对象的方式向OSD进行分布式存储

Ceph关键组件

OSD:对象存储设备,一个物理节点上的一个守护进程,一个OSD进程对应物理节点上的一块硬盘,用于对数据的存取

MDS:元数据服务器,只有需要Ceph文件系统存储是才需要搭建MDS,用于存储元数据,对象存储与块存储不需要

Monitor:监视器,监控整个集群的健康状况,并维护各个组件的map图。当Client访问ceph存储首先与Monitor通信,获取集群相关信息,通过内部算法确定要访问的OSD,其后Client直接与OSD进行交互。

Ceph工作原理(寻址流程)

三次映射

file--->object,将实际的file进行切块,变成RADOS能识别的对象

object--->PG映射, 多对一的映射,oid与mask(pool中PG数-1)进行hash运算,算出该对应映射pgid

PG---->OSD映射,多对多映射,将pgid带入crush算法,返回该对象存储的实际OSD节点

mySQL

数据库

是一个以某种有组织的方式存储的数据集合。(类似一个存储文件的文件柜,是存放数据的物理位置,不管数据是什么也不管数据的组织方式)

DB与DBMS

1.DB(DataBase):数据库,存储已经组织好的数据的容器

2.DBMS(DataBase Manage System):通过数据库管理系统,对数据库及数据库中的数据进行操

注:我们平时所说的Oracle、Mysql、MariaDB指的都是数据库管理系统(DBMS)

数据库中的文件以表的形式存在,表是一种结构化的文件。

注:一个数据库中,表的名字是唯一的

但不同的库可以创建同一表名的表

模式

关于数据库和表的布局及特性信息。表具有一些特性,这些特性定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息

表的结构

1.框架(Schema):关于数据库和表布局以及属性信息。

2.列(column):表中的一个字段,表由一列或多列构成,列中存储 表的一部分信息。每一列存储一条特定信息。

注:数据库中每一列都有相应的数据类型,数据类型定义了该列可以存储哪种类型的数据。

3.行(row):表中的一条记录(行=记录)

注:NULL:空值

4.主键(primary key):唯一标识表中每一行的列或者多列的集合(一般主键设为id)

注:任意两行不具有相同的主键值(主键列中的每行数据不能相同)

主键列不能包含空值(NULL)值也不允许修改和更新

SQL语句

1.定义:结构化查询语言(Structured Query Language)

2.分类:

1)数据查询语言(DQL:Data Query Language):

功能:从数据库中查询相关信息或记录

主要的关键字:SELECT,WHERE,ORDER BY,GROUP BY和HAVING

2)数据操作语言(DML:Data Manipulation Language):

功能:对数据库中的表的内容进行相关操作

主要的关键字:INSERT,UPDATE和DELETE

3)事务处理语言(TPL):

功能:对事务进行相关操作

主要的关键字:BEGIN,TRANSACTION,COMMIT和ROLLBACK。

4)数据控制语言(DCL):

功能:对权限进行相关操作

主要的关键字:GRANT或REVOKE

5)数据定义语言(DDL):

功能:对数据库、表等进行相关操作

主要的关键字:CREATE和DROP

6)指针控制语言(CCL):

功能:对指针进行相关操作

主要的关键字:DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT

关系型数据库和非关系型数据库

1.关系型数据库:按照关系模型来组织存储数据

如:Oracle MySQL MariaDB DB

2.非关系型数据库:NoSQL(Not only SQL)

如:mongoDB

非关系型数据库的优势:1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,

而且不需要经过SQL层的解析,所以性能非常高。2. 可扩展性同样也是因为基于键值对,数据之间没有

耦合性,所以非常容易水平扩展

关系型数据库的优势:1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据

查询。2. 事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库,对方的优势就

是自己的弱势,反之亦然。

结构化数据、半结构化数据和非结构化数据

结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子:

id name age gender 1 lyh 12 male 2 liangyh 13 female 3 liang 18 male

所以,结构化的数据的存储和排列是很有规律的,这对查询和修改等操作很有帮助。但是,显然,它的扩展性不好(比如,我希望增加一个字段,怎么办。)。 半结构化数据

半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。

半结构化数据,属于同一类实体可以有不同的属性,即使他们被组合在一起,这些属性的顺序并不重要。

常见的半结构数据有XML和JSON,对于对于两个XML文件,第一个可能有

<person> <name>A</name> <age>13</age> <gender>female</gender> </person>

第二个可能为:

<person> <name>B</name> <gender>male</gender> </person>

从上面的例子中,属性的顺序是不重要的,不同的半结构化数据的属性的个数是不一定一样的。有些人说半结构化数据是以树或者图的数据结构存储的数据,怎么理解呢。上面的例子中,<person>标签是树的根节点,<name>和<gender>标签是子节点。通过这样的数据格式,可以自由地表达很多有用的信息,包括自我描述信息(元数据)。所以,半结构化数据的扩展性是很好的。 非结构化数据

顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。

关系型数据库适合存储结构化数据,比如:用户的账号、地址:

(1)这些数据通常需要做结构化查询,比如说Join,这个时候,关系型数据库就要胜出一筹。

(2)这些数据的规模、增长的速度通常是可以预期的。

(3)事务性、一致性,适合存储比较复杂的数据。

NoSql适合存储非结构化数据,比如:文章、评论:

  1)这些数据通常用于模糊处理,如全文搜索、机器学习

  2)这些数据是海量的,而且增长的速度是难以预期的,

  3)根据数据的特点,NoSQL数据库通常具有无限(至少接近)伸缩性

4)按key获取数据效率很高,但是对join或其他结构化查询的支持就比较差

视图

1.视图的定义

视图是一个虚拟表,其内容由查询定义。

2.视图的优点

1)视点集中

2)简化操作

3)定制数据

4)分隔合并数据

5)安全性好

3.语法格式及限定条件

1)语法格式:create view 视图名 as select语句;

2)限定条件:

像表一样,视图命名必须唯一

创建视图没有数量限制

创建视图必须有安全访问权限(由数据库管理员授予)

视图可以嵌套,即可以建立一个视图,该视图可以使用基于其他视图返回数据的查询

视图不可以建立索引,触发器

事务

1.相关概念

1)事务(transaction):一组SQL语句

2)回滚(rollback):撤销指定SQL语句的处理过程

3)提交(Commit):将还未保存的数据库语句写入数据库表

4)保存点 (Savepoint):事务集中的一个临时占位符,可进行回滚(与撤销整个事务不同)

2.事务的特性(ACID)

A.原子性:要么全部执行,要么全不执行

C.一致性:事务的相关操作,需要保持数据的一致

I.隔离性:事务与事务间互相隔离

D.持久性:事务一旦提交,数据立即生效

字符集与排序规则

1.基本概念

1)字符集(Character set):单词和符号的集合。

2)编码(Encoding):字符集成员的内部表示。

3)排序规则(Collation):规定字符如何比较的指令。

注:不同的排序规则不仅影响排序(使用ORDER BY对数据排序),也会影响搜索(如where语句在

查找CAR时是否能找到car);在MariaDB中,执行常规的的数据库活动(select 、insert等)没有太多担

心的必要。需要担心的是在服务器、数据库、表的层级上决定使用哪种字符集和排序规则

日志与备份

1.相关文件

1)配置文件:/etc/my.cnf

2)数据库文件:/var/lib/mysql

3)日志文件:/var/log/mysqld.log

2.MySQL日志文件

MySQL日志包括:通用日志,错误日志、慢查询日志、二进制日志

MySQL-Galera

Galera Cluster是在名为wsrep(集合写入式复制,Write Set Replication)的更通用的API基础之

上开发而成的。

wsrep API是个独立的开源项目,由Codership发起,它在数据库服务器和数据复制插件之间定义了

一个接口。

MySQL-wsrep是MySQL的一个补丁,它在数据库服务器中实现了wsrep API接口。安装这个补丁之

后,MySQL就可以启动wsrep的插件,例如Galera。Galera是wsrep提供者,实现了同步多主节点数据

复制功能。

Galera Cluster拥有以下特性:

真正的多主架构,任何节点都可以进行读写

同步复制,各节点间无延迟且节点宕机不会导致数据丢失

紧密耦合,所有节点均保持相同状态,节点间无不同数据

无需主从切换操作或使用VIP

热Standby,在Failover过程中无停机时间(由于不需要Failover)

自动节点配置,无需手工备份当前数据库并拷贝至新节点

支持InnoDB存储引擎

对应于透明,无需更改应用或是进行极小的更改

无需进行读写分离

vmware

虚拟化

就是将上一层对下一层的依赖撤销;换句话说,就是将本层的依赖从底层中抽离出来,因此我们定义"虚拟化"的正规说法,可以为"虚拟化,就是不断抽离依赖的过程"

虚拟机

虚拟机是一个由VMkernel控制的软件构造体。所有虚拟机配置信息、状态信息和数据都封

装在存储在数据存储中的一组离散文件中。这使虚拟机具有可移动性, 并且易于备份或克隆。

vSphere核心功能组件

VMware ESXi :vmware服务器虚拟化Hypervisor程序(云操作系统)

VMware VCenter :虚拟化管理组件服务器

VMware Web Client:虚拟化管理组件Web Client端(B/S)

VMware Client : 虚拟化管理组件Windows Client 端(C/S)

VMware Update Managemlent:虚拟化平台升级管理组件

VMware Data Protection(VDP): 虚拟机备份

VMware Distributed Power Management(DPM):分布式电源管理

vMotion 、HA 、FT 、DRS等组件功能

VMware vSphere 6组件

VMware ESXi

vSphere 早期版本存在ESX ,

ESX: 虚拟机平台管理程序, ESX包含了一个VMware Kernel (虚拟化管理内核)和一个命令行式的Service Console (服务控制台) (vSphere 4.1将是最后一个包含ESX版本的平台,其后续版本仅将包含ESXi )

ESXi (又名vSphere Hypervisor) 基本功能同ESX ,但ESXi仅保留管理内核(VMKerr旧1) 而不再包含服务

控制台(用vCLI 或PowerCLI 替代其大部分功能) ,所以体积很小,可安装在嵌入式设备如U 盘上。

VMware vCenter Server

虚拟化平台管理中心控制系统,有windows和linux版,

vSphere Update Manager

vSphere环境升级

VMware vSphere Client和vSphere Web Client

vSphere客户端

vRealize Orchestrator (原名vCenter Orchestrator)

自动化引擎,建立工作流的工具

VMware Data Protection

数据保护

vSphere with Operations Management (单独购买或购买套件)

监控和管理的工具

vSphere vSMP(虚拟多核心CPU)

一台虚拟机使用多颗物理cpu的技术

vMotion (热迁移)

迁移内存  虚拟机在开机过程中从这台机器迁移到另一台机器

Storage vMotion(冷迁移)

迁移存储  虚拟机在关机状态将这台共享存储迁移到另一台存储

vSphere DRS(分布式资源调度)

VMware的分布式资源调度(Distributed Resource Scheduler,DRS)

动态地分配和平衡计算容量,将硬件资源聚集到逻辑资源池中。

可以持续不断地监控资源池的利用率,智能分配资源,

允许用户自己定义规则和方案来决定虚拟机共享资源的方式及 它们之间优先权的判断根据

Vmware DRS

利用Vmotion技术,在一个大的资源池,整理物理机的资源 合理分配给每一台vm的资源,达到理论的最优.智能调优

存储IO控制与网络IO控制

控制存储网络输入输出,不造成拥堵

配置文件驱动的存储

vSphere HA

可为虚拟机提供高可用性的功能。

master主机与slave主机

slave主机发生故障,分配到资源少的主机启动。 master主机故障,降级为slave,然后选举一个master。

vSphere FT

是更高级的HA,实现毫秒的检测,能够更快速的同步。

VADP与VDP

VADP 是一组应用编程接口(API),备份供应商可以利用这组API实现增强的虚拟化环境备份功能。VADP 还支持文件级备份与恢复等功能;支持增量、差别和全映像备份;原生整合备份软件;支持多种存储协议。

VDR 适用于 vSphere5,但不适用于 vSphere5.1及后续版本,然后由 VDP 替代。

VSAN

是一种虚拟化技术,把一个物理交换机虚拟成多个逻辑交换机。通常以vSphere内核为基础进行开发、可扩展的分布式存储架构。

vSphere复制

Flash Read Cache(闪存读取缓存)

将固态当成缓存层,数据从硬盘到内存,缓解数据的差

虚拟机和物理机对比

物理机

难以移动或复制

受制于一组特定的硬件组件

生命周期通常较短

需要人工操作来升级硬件

虚拟机

易于移动和复制:封装在文件中不依赖于物理硬件

易于管理:与其他虚拟机相互隔离不受硬件变化的影响,能够支持旧版应用程序,可实现服务器整合

ESXi架构和组件

ESXi是组成vSphere基础架构核心的虚拟化管理器,可直接安装在物理服务器之上,并允许多个虚拟机运行于虚拟化层之上。每个虚拟机与其他虚拟机共享相同的物理资源,并且它们可以同时运行。与其他虚拟化管理程序不同,ESXi的所有管理功能都可以通过远程管理工具提供。由于没有底层操作系统,安装空间占用量可缩减至150 MB 以下。

ESXi 体系结构独立于任何通用操作系统运行,可提高安全性、增强可靠性并简化管理。紧凑型体系结构设计旨在直接集成到针对虚拟化进行优化的服务器硬件中,从而实现快速安装、配置和部署。

VMkernel

VMkernel 是虚拟化的核心和推动力,由VMware 开发并提供与其他操作系统提供的功能类似的某些功能,如进程创建和控制、信令、文件系统和进程线程。VMkernel控制和管理服务器的实际资源,它用资源管理器排定VMJI顶序,为它们动态分配CPU 时间、内存和磁盘及网络访问。它还包含了物理服务器各种组件的设备

驱动器一一例如,网卡和磁盘控制卡、VMFS文件系统和虚拟交换机。VMkernel 专用于支持运行多个虚拟机及提供如下核心功能:

资源调度

I/0 控制

设备驱动程序

VMkernel 可将虚拟机的设备映射到主机的物理设备。

虚拟机监视器VMM

每个ESXi 主机的关键组件是一个称为VMM 的进程。对于每个己开启的虚拟机1 将在

VMkernel 中运行一个VMM 。虚拟机开始运行时, 控制权将转交给VMM , 然后由VMM 依次

执行虚拟机发出的指令。VMlkernel 将设置系统状态, 以便VMM 可以直接在硬件上运行。然而,

虚拟机中的操作系统并不了解此次控制权转交, 而会认为自己是在硬件上运行。

VMM 使虚拟机可以像物理机一样运行,而同时仍与主机和其他虚拟机保持隔离。因此, 如

果单台虚拟机崩溃,主机本身以及主机上的其他虚拟机将不受任何影响。

Vmware Tools

VMware Tools 是一套实用程序,能够提高虚拟机的客户操作系统的性能,并改善对虚拟机的管理。在客户操作系统中安装VMwa re Tools 十分必要。虽然客户操作系统可以在未安装VMware Tools 的情况下运行,但是您将无法使用某些重要功能并失去一些便利性。VMware Tools 服务是一项在客户操作系统内执行各种功能的服务。该服务在客户操作系统启动时自动启动。

该服务可执行的功能包括:

》将消息从ESXi 主机传送到客户操作系统。

》向ESXi 主机发送心跳信号,使其知道客户操作系统正在运行。

〉实现客户操作系统与主机操作系统之间的时间同步。

》在虚拟机中运行脚本并执行命令。

vCenter Server部署方式

vSphere的两个核心组件是ESXi和vCenter Server 0 ESXi是用于创建和运行虚拟设备的虚拟化平台,vCenter Server是一种服务, 充当连接到网络的ESXi主机的中心管理员。

vCenter Server可用于将多个主机的资源加入池中并管理这些资源。

Platform Services Controller基础架构服务组

vCenter Single Sign-On

vCenter Single Sign-On 身份验证服务为vSphere 软件组件提供了安全身份验证服务。

〉使用vCenter Single Sign-On I vSphere 组件可通过安全的令牌交换机制相互通信, 而无需每个组件使用目录服务(如Active Directory) 分别对用户进行身份验证。

vCenter Single Sign-On 可构建内部安全域(vsphere. local ) I vSphere 解决方案和组件将在安装或升级期间在该

域中进行注册,从而提供基础架构资源。

vCenter Single Sign - On 可以通过其自己的内部用户和组对用户进行身份验证。

vCenter Single Sign-On可以连接到受信任的外部目录服务(Microsoft Active Directory) 。然后,可以在vSphere 环境中为经过身份验证的用户分配基于注册的解决方案的权限或角色。

对于vCenter Server 5.1.x 及更高版本I vCenter Single Sign-On 是可用且必需的。

vSphere许可证服务

vSphere 许可证服务为连接到单个Platform Services Controller 或多个链接的Platform Services Controller 的所有vCenter Server 系统提供公共许可证清单和管理功能。

VMware 证书颁发机构

默认情况下VMware 证书颁发机构(VMCA) 将使用以VMCA 作为根证书颁发机构的签名证书置备每个ESXi 主机。所有ESXi证书都存储在本地主机上。

vCenter Lookup Service

~ vCenter Lookup Service 是vCenter Single Sign On 的一个组件。Lookup Service 会注册vSphe re 组件的位置,以便它们安全地找到彼此并相互进行通信。

~ vCenter Single Sign-On 安装程序也将VMware Lookup Service 部署在主机上。Lookup Service 使vSphere 的不同组件以安全的方式找到彼此

具有嵌入式Platform Services Controller的vCenter Server

具有嵌入式Platform Services Controller的vCenter Server是vCenter Server 和Platform Services Controller 部署在单个虚拟机或物理服务器上。

安装具有嵌入式Platform Services Controller 的vCenter Server 具有以下优势:

~ vCenter Server 与Platform Services Controller 并非通过网络连接,且由于vCenter Server 与Platform Services Control ler 之间的连接和名称解析问题I vCenter Server 不容易出现故障。

〉如果在Windows 虚拟机或物理服务器上安装vCenter Server,则需要较少的Windows 许可证。

〉您将需要管理较少的虚拟机或物理服务器。

〉无需负载平衡器即可在Platform Services Controller 上分布负载。

安装具有嵌入式Platform Services Controller的vCenter Server 具有以下缺点:

》每个产品具有一个Platform Services Controller,这可能已超出所需量。这将消耗更多资源。

〉该模型适合小型环境。

具有外部Platform ServicesController 的vCenter Server

具有外部Platform Services Controller 的vCenter Server是指vCenter Server 和Platform Services Controller 部署在不同的虚拟机或物理服务器上。可以在多个vCenter Server实例之间共享Platform Services Controller 。可以安装一个Platform Services Controller,然后安装多个vCenter Server 实例并将其注册到Platform Services Controller中。随后,可以安装另一个Platform Services Controller,将其配置为复制第一Platform Services Controller的数据,然后安装vCenter Server 实例并将其注册到第二个Platform Services Controller 中。

安装具有外部Platform Services Controller的vCenter Server 具有以下优势:

Platform Services Controller 中的组合服务消耗较少的资源,可减少内存占用量和维护。

您的环境中可以包含多个vCenter Server 实例。

安装具有外部Platform Services Controller 的vCenter Server 具有以下缺点:

vCenter Server 与Pl atform Services Controller 通过网络建立连接, 容易产生连接和名称解析问题。

如果在Windows 虚拟机或物理服务器上安装vCenter Server I 则需要较多的Microsoft Windows 许可证。

您需要管理较多虚拟机或物理服务器。

具有外部Platform Service Controller 的vCenter Server 混合系统平台

安装在Windows 上的vCenter Server 实例可以注册到Windows 上安装 Platform Services Controller 中或Platform Services Controller 设备中。

vCenter Server Appliance 可以注册到Windows 上安装的Platform Services Controller中或Platform Services Controller 设备中。

vCenter Server 和vCenter Server App liance 可以注册到域中的同一个Platform Services Controller中。

具有许多可复制其基础架构数据的Platform Services Control ler 可确保系统的高可用性。

如果最初向其注册vCenter Server 实例或vCenter Server Appliance的Platform Services

Controller 停止响应, 您可以将vCenter Server 或vCenter Server Appliance 重新指向域中的其他外部Platform Services Controller

网络概念概述

》物理网络

为了使物理机之间能够收发数据,在物理机间建立的网络。VMware ESXi 运行于物理机之上。

》虚拟网络

在单台物理机上运行的虚拟机之间为了互相发送和接收数据而相互逻辑连接所形成的网络。

虚拟机可连接到已创建的虚拟网络。

物理和虚拟交换机

》物理以太网交换机

管理物理网络上计算机之间的网络流量。一台交换机可具有多个端口,每个端口都可与网络上的一台计算机或其他交换机连接。可按某种方式对每个端口的行为进行配置,具体取决于其所连接的计算机的需求。交换机将会了解到连接其端口的主机,并使用该信息向正确的物理机转发流量。交换机是物理网络的核心。可将多个交换机连接在一起,以形成较大的网络

~ vSphere 标准交换机

其运行方式与物理以太网交换机十分相似。它检测与其虚拟端口进行逻辑连接的虚拟机,并使用该信息向正确的虚拟机转发流量。可使用物理以太网适配器(也称为上行链路适配器)将虚拟网络连接至物理网络,以将vSphere 标准交换机连接到物理交换机。此类型的连接类似于将物理交换机连接在一起以创建较大型的网络。即使vSphere 标准交换机的运行方式与物理交换机十分相似,但它不具备物理交换机所拥有的一些高级功能。

多虚拟网络支持两种类型的虚拟交换机

vNetwork 标准交换机:

》单个主机的虚拟交换机配置

〉要在多台主机上进行同样的配置,才能保证虚拟机的迁移网络一致,保证迁移后虚拟机可用。

vNetwork 分布式交换机:

〉这种虚拟交换机可在跨多个主机迁移虚拟机时为虚拟机提供一致的网络配置

》一次性部署,在所管理的主机上分布式生成网络配置。

》横跨多个主机

虚拟交换机和物理交换机的区别

虚拟交换机和物理的以太网交换机十分相似,能够提供很多物理交换机相同

的功能,它们的不同点有以下几点

1 标准的虚拟交换机不支持动DTP (动态trunk 协商协议)直接是Trunk,不会根据物理网卡协商是否Trunk链路

2 标准交换机不支持LACP(链路聚合控制协议) ,不支持port channel.

3. 所有虚拟交换机不运行生成树(ST时, 自身就能够避环路,虚拟交换机之间不会相连

4 不进行MAC地址学习

5 不会将来自Uplink的数据包转发到另外的Uplink

负载均衡策略

基于源虚拟端口的路由

虚拟交换机可根据vSphere 标准交换机或vSphere Oistributed Switch 上的虚拟机端口10 选择上行链路。

ESXi 主机上运行的每个虚拟机在虚拟交换机上都有一个关联的虚拟端口10 。要计算虚拟机的上行链路,虚拟交换机将使用虚拟机端口10 和网卡组中的上行链路数目。虚拟交换机为虚拟机选择上行链路后,只要该虚拟机在相同的端口上运行,就会始终通过此虚拟机的同一上行链路转发流量。除非在网卡组中添加或移除上行链路, 否则虚拟交换机仅计算虚拟机上行链路一次。

当虚拟机在同一主机上运行时,虚拟机的端口I D 固定不变。如果迁移或删除除虚拟机,或者关闭虚拟机电源,则此虚拟机在虚拟交换机上的端口10 将变为空闲状态。虚拟交换机将停止向比端口发送流量,这会减少其关联的上行链路的总流量。如果打开虚拟机电源或迁移虚拟机,贝Ij虚拟机可能会出现在不同的端口上并使用与新端口关联的上行链路。

描述

优势

• 当组中虚拟网卡数大于物理网卡数时, 流旦分布均匀。

• 资源消耗低. 在大多数情况下. 虚拟交换机仅计算虚拟机上行链路一次。

• 无需在物理交换机上进行更改。

劣势

• 虚拟交换机无法识别上行链路的流量负载. 且不会对很少使用的上行链路的流量进行负载平衡

• 虚拟机可用的带宽受限于与相关端口id关联的上行链路速度. 除非该虚拟机具有多个虚拟网卡

基于源MAC哈希的路由

虚拟交换机可基于虚拟机MAC 地址选择虚拟机的上行链路。要计算虚拟机的上行

链路, 虚拟交换机将使用虚拟机MAC 地址和网卡组中的上行链路数目。

优势

• 与基于源虚拟端口的路由相比, 可更均匀地分布流量,因为虚拟交换机会计算每个数据包的上行链路

• 虚拟机会使用相同的上行链路. 因为MAC 地址是静态地址。启动或关闭虚拟机不会更改虚拟机使用的上行链路。

• 无需在物理交换机上进行更改

劣势

• 可用于虚拟机的命宽受限于与相关端口id关联的上行链路速度, 除非该由拟机使用多个源MAC 地址。

• 资源消耗比基于源虚拟端口的路山更高. 因为虚拟交换机会计算每个数据包的上行链路。

• 虚拟交换机元法识别上行链路的负载. 因此上情连路可能会过载

基于IP哈希的路由

虚拟交换机可根据每个数据包的源和目标IP 地址选择虚拟机的上行链路。

基于IP 哈希的路由配置要求

1. ESXi主机支持单个物理交换机或堆枝交换机上的IP哈希成组。

2. ESXi 主机仅支持静态模式下的802.3ad 链路聚合。只能将静态以太通道与vSphere 标准交换机配合使用, 不支持LACP。要使用LACP ,必须具有vSphere Distributed Switch 5.1 及更高版本或Cicso Nexus1000V。如果启用IP哈希负载平衡但无802 . 3ad 链路聚合(或者相反) ,则可能会遇到网络中断。

3 外部物理交换机必须上配置以太通道(port channel )

4 必须使用"仅链路状态"作为网络故障检测方法,并使用IP哈希负载平衡。

5 必须在"活动故障切换"列表中设置组的所有上行链路。备用"和"未使用"列表必须为空。

6 以太通道中的端口数必须与组中的上行链路数相同。

优势

• 与基于源虚拟端口的路由和基于源MAC 晗椅的路由相比,可更均匀地分布负载。因为虚拟交换机会计算每个数据包的上行链路。

• 与多个IP J也如l:通信的虚拟机可能实现更高的吞吐量。

劣势

• 与其他负载平衡算法相比,资源消耗最高。

• 虚拟交换机无法识别上行链路的实际负载

• 需要在物理网络上进行更改。

• 故障排除较为复杂

ESXi 四大高级内存控制技术

1.page sharing (透明的页面共享)

透明页共享仅允许存储一次具有相同内容的页面

透明页共享(Transparent Page Sharing,TPS)技术允许同一块内存页在虚拟机之间进行共享,以减少所需的内存页总量。内存块比较首先通过计算哈希,哈希一致再进行完整页比较,当确定页面完全相同时,VMX将会透明地重映射虚拟机的内存页面,以便共享相同的物理内存页。通常情况下,ESXi工作在4 KB内存页面上,透明页共享会应用在所有内存页面上。但是在某些具有硬件支持的特殊情况下,VMX会使用2 MB内存大页面,ESXi不会共享这些大页面。

VMware vSphere⑧中有3 层内存。

》客户os 虚拟内存,该内存由操作系统提供给应用程序。

〉客户os 物理内存,该内存由VMkernel 提供给虚拟机。

》由VMkernel 管理的主机物理内存,可向虚拟机提供可编址的连续内存空间。

2. Ballooning (气球,内存回收}前提是不能满负荷运行

~ ESXi 主机可以从虚拟机中回收内存

内存膨胀(Ballooning)是ESXi主机回收虚拟机空闲内存的技术。膨胀技术实现需要安装在客户机操作系统上的内存虚拟增长驱动程序(vmmemctl,VMware工具的组成部分)支持。当ESXi主机运行的物理内存压力过大时,VMX会控制驱动程序向客户机操作系统请求内存,操作系统分配给驱动程序的内存最终将通过VMX提供给其它虚拟机使用;当ESXi主机的内存压力缓解时,驱动程序就会释放内存,把内存返还给客户机操作系统。由于其工作过程与气球相似,内存虚拟增长驱动程序在某些文献中也被称为“气球驱动程序”。

》内存虚拟增长驱动程序(vmmemctl) 与服务器协作回收客户机操作系统认为最不重要的页面

》需要虚拟机安装VMTooIs

3.Swapping (交换文件)

a) 客户机(VM) 交换文件

b)主机(ESXi) 交换

交换(Swapping)也是ESXi主机回收虚拟机空闲内存的技术。这里介绍的交换技术不同于客户机操作系统上的常规交换,而是特指ESXi主机上利用交换文件(*.vswp)实现的交换。通常情况,只有当vmmemctl驱动程序不可用或未响应时,ESXi主机才会使用交换技术从虚拟机中强制回收内存。由于交换不考虑客户机操作系统是否使用这些页面,且磁盘比内存的响应时间慢上千倍,因此采用交换技术将显著影响客户机操作系统的性能。

》由于访问压缩的内存比访问交换到磁盘的内存更快, 因此通过ESXi 中的内存压缩可以使内存过载,但不会显著影响性能。

》当需要交换虚拟页面时, ESXi 会首先尝试压缩虚拟页面。可压缩至2 KB 或更小的页面存储在虚拟机的压缩缓存中,从而增加主机内存的容量。

4.Memory Compression (内存压缩}

~ ESXi 提供内存压缩缓存,可在内存过载使用时改进虚拟机性能。默认情况下已启用了内存压缩。当主机内存过载时, ESXi 会压缩虚拟页面并将其存储在内存中。

内存压缩(Memory Compression)可在ESXi主机使用交换技术时,减少必须交换到磁盘的页面数量,从而改进虚拟机性能。当需要交换页面时,ESXi会首先尝试压缩虚拟页面,将压缩至2 KB甚至更小的页面存储在虚拟机的压缩缓存中。由于访问压缩缓存比访问交换文件更快,因此利用内存压缩技术,不会显著影响虚拟机性能。

〉内存的回收机制通过将数据移出内存并写入后台存储实现。从后台存储访问数据的速度比从内存访问数据的速度慢,因此一定要仔细选择存储交换数据的位置。建议使用SSD

〉如非必要,系统不会使用VMkernel交换空间,因为这种方式的性能很差

〉交换文件的大小等于己分配内存和预留内存的容量差

注意:在现实中(尽管不需要),设备模拟发生在使用 QEMU 的空间,因此后端驱动程序与

hypervisor 的用户空间交互,以通过 QEMU 为 I/O 提供便利。QEMU 是一个系统模

拟器,它不仅提供来宾操作系统虚拟化平台,还提供整个系统(PCI 主机控制器、磁盘、

网络、视频硬件、USB 控制器和其他硬件元素)的模拟。

注意:在现实中(尽管不需要),设备模拟发生在使用 QEMU 的空间,因此后端驱动程序与

hypervisor 的用户空间交互,以通过 QEMU 为 I/O 提供便利。QEMU 是一个系统模

拟器,它不仅提供来宾操作系统虚拟化平台,还提供整个系统(PCI 主机控制器、磁盘、

网络、视频硬件、USB 控制器和其他硬件元素)的模拟。

VM CPU介绍

内存有虚拟内存,然而CPU却无法设置虚拟CPU ,即无法用其他资源来顶替CPU ,CPU 的调度只能使用物理CPU 的核心或者线程(如果虚拟机开启了CPU 的超线程)

多CPU调度介绍:

CPU是通过时间片的来分配的计算能力的,即每一个CPU的核心或者线程都是通过时间片来分配给虚拟机使用那么虚拟机向主机申请CPU调度时间片时,和要申请的CPU时间片的个数有关。

单个CPU的虚拟机更容易申请到CPU时间片,多个CPU的虚拟机需要同时申请到多个时间片才可以。

如果不是虚拟机必须使用多个vCPU ,建议在开始创建VM 的时候,都使用一个vCPU 。

资源池介绍

〉资源池是一个逻辑抽象概念,用于分层管理CPU 和内存资源,可以基于资源池做资源分配和权限控制。

》每个独立主机和每个启用了DRS的群集都具有一个(不可见的)根资源池,此资源池对该主机或群集的资源进行分组

〉用户可以创建根资源池的子资源池,也可以创建用户创建的任何子资源池的子资源池。每个子资源池都拥有部分父级资源,然而子资源池也可以具有各自的子资源池层次结构每个层次结构代表更小部分的计算容量。一个资源池可包含多个子资源池和/或虚拟机。处于较高级别的资源池称为父资源池。处于同一级别的资源池和虚拟机称为同级。群集本身表示根资源池。如果不创建子资源池,则只存在根资源池

vAPP介绍

vApps可以将一组具有某种关联关系的虚拟机集中进行管理,使得某些顺序操作或者关联操作可以按照预先设置好的规则进行通过vSphere vApp 可以对多个彼此交互操作的虚拟机和软件应用程序进行打包, 这些虚拟机和软件应用程序可以作为一个单元进行管理,并以OVF 格式进行分发。一个vApp 可以包含一个或多个虚拟机,但对该vApp 执行的任何操作(如克隆或关闭电源)都会影响vApp容器中的所有虚拟机。可以使用vApp 执行资源管理和其他某些管理活动,例如, 同时为多个虚拟机打开电源。可以将vApp 视为虚拟机容器,您可以对该容器执行操作。创建vApp 后,可以将其添加到文件夹、独立主机、资源池、为DRS 启用的群集或另一个vApp中。

I/0控制介绍

网络I/0控制介绍

》网络I/0控制利用网络资源池来控制网络资源的使用率

》能够控制出向的流量和入向的流量

》只有在分布式交换机上才能进行网络I/0控制

》要新建网络资源池,需要先设置系统虚拟机流量的预留

存储I/0控制介绍

通过vSphere Storage I/0 Control ,可以优化群集范围内的存储I/0 ,从而可更好地让存储进行工作负载整合。Storage I/0 Control 可以像CPU和内存一样来设置限制和预留以处理存储I/0 资源。也可以控制在I/0 拥堵期间分配给虚拟机的存储I/0 量,从而确保更重要的虚拟机优先于重要性较低的虚拟机获得I/0 资源分配。当对数据存储启用Storage I/0 Control 时, ESXi 会开始监控主机与该数据存储通信时主机的设备滞后时间。当设备滞后时间超出|哥值时I 数据存储会被视为己出现拥堵I 访问该数据存储的每个虚拟机都会按其份额比率分配相应的I/0 资源。还可以可以按虚拟机设置份额,并且可以根据需要调整每个虚拟机的份额。

存储I/0控制前提条件

1 必须在数据存储器上启用存储I/0控制

2 启用了Storage I/0 Control 的数据存储必须由单个vCenter Server 系统管理

3 光纤通道连接、iSCSI 连接和NFS 连接的存储上都可支持Storage I/0 Control 。裸设备映射(RDM) 不支持。VSAN不支持。

4 Storage I/0 Control 不支持具有多个数据区的数据存储,即VMFS必须只由一个LUN组成。就是说不支持扩展过的VMFS

vMotion原理介绍

vMotion是vSphere一个十分重要功能, 可以实现开机的虚拟机在两台ES系主机之间在线迁移,切不会影响业务。以下原因可能是要进行vMotion 的主要原因:

平衡平均CPU 负载或预留。

平衡平均内存负载或预留。

满足资源池预留。

满足关联性规则。

主机正在进入维护模式或待机模式。

vMotion的要求:

5.5之前需要有共享存储支持,之后的版本可以没有共享存储

必须制定vmotion Vmkernel ,并且有相同的标准交换机配置和分布式交换机配置,即两台ESXi 主机网络一直。

CPU必须是同一厂商同一家族的CPU

EVC技术介绍

ESXi并不对CPU进行虚拟如果把一个VM从一个安装i5 CPU 的服务器,迁移( vMotion )到另外一个安装i7 CPU 的服务器上,会出现兼容性问题。所以VMware提出了EVC (EnhancedvMotion Compatibility) 技术, 它使用CPU Mask技术来模拟CPU , 例如:多个ESXi主机安装了不同型号的Intel CPU ,我们可以使用EVC技术,把这些CPU都模拟成为一个固定的Intel i5 CPU型号。这样在这些主机之间,就可以使用vMotion技术来迁移VM了。

注意:如果在某一个ESXi主机内,存在开机状态的VM ,那么这个ESXi不能启用EVC技术。后续要介绍的FT技术,必须在Cluster上启用EVC技术。

DRS的三种自动化级别

1.手动(开机的部署, 在线迁移都是手动操作)

2.半自动(开机的部署自动完成, 在线迁移需要手动操作)

3.全自动(开机的部署, 在线迁移都是自动完成)

 ESXi 故障

~ ESXi 主机故障重启别的主机

VMware vSphere Agent 通过管理网络进行心跳检测每秒一次

当主机出现故障时,其他正常的主机会接管故障主机的上的虚拟机,保证虚拟机可用性

》客户0S 故障重启本机

HA也可以检测虚拟机的工作状态,默认该功能是禁用的。主机通过Vmtoo l s和虚拟机进行

通讯,当虚拟操作系统出现故障时,重启虚拟机。

》应用程序故障重启本机

HA也可以通过VMtools 来监控部分支持VMware 应用程序监控的应用程序, 当应用程序

出现故障时重启虚拟机

vSphere High Availability原理

VMware vSphere High Availabil i ty (HA) 可为虚拟机中运行的应用提供易于使用、经济高效的高可用性。一旦物理服务器出现故障, VMware HA可在具有备用容量的其他生产服务器中自动重新启动受影响的虚拟机。若操作系统出现故障, vSphere HA会在同一台物理服务器上重新启动受影响的虚拟机。

vSphere HA利用配置为群集的多台ESXi 主机,为虚拟机中运行的应用程序提供快速中断恢复和具有成本效益的高可用性

FDM: vSphere5 以后采用FDM (Fault Domain Manager) 实现高可用功能, FDM好处如下:

- 采用master/slave架构,而不是pnrr町y/secondary架构,可以支持更多的集群主机

- 同时使用管理网络和存储设备进行通讯来提供心跳机制

- 可以监控网络分区和网络隔离故障,从而采取相关响应, 最大限度提高虚拟机可用性

Master的作用

1. Master监控slave主机,当slave主机出现故障时重启虚拟机

2. Master监控所有被保护虚拟机的电源状态,如果被保护的虚拟机出现故障,它将重启这个虚拟机

3. Master管理在Cluster内部的主机清单,并且对添加和删除Cluster 内部的主机进行管理

4. Master管理被保护虚拟机的清单,在每一次用户发起开关机操作时,更新这个清单, vCenter会要求Master保护或者不保护某些虚拟机

5. Master缓存Cluster配置, Master通知和提醒slave主机, Cluster配置的修改

6. Master发送心跳信息给slave主机,让slave主机知道master的存在

7. Master报告状态信息给vCenter , vCenter正常情况下只和master通讯

Slave的作用

1. Slave主机监视本地运行的虚拟机状态,把这些虚拟机运行状态的显著变化发送给Master

2. Slave监控Master的健康状态,如果IMaster出现故障, Slave将会参与Master的选举

3. Slave运用vSphere HA特性,这些特性不需要Master的协调。这些特性包括" VM Health Monitorin

主机故障分类

vSphere HA 群集的首选主机负责检测从属主机的故障。根据检测到的故障类型,在主机上运行的虚拟机可能需要进行故障切换。首选主机通信通过每秒交换一次网络检测信号来完成群集中从属主机的活跃度监控。当首选主机停止从从属主机接收这些检测信号时, 它会在声明该主机已出现故障之前检查主机活跃

度。首选主机执行的活跃度检查是要确定从属主机是否在与数据存储心跳之一交换检测信号。而且,首选主机还检查主机是否对发送至其管理I P 地址的ICMP ping 进行响应在vSphere HA 群集中,检测三种类型的主机故障:

〉主机故障-主机停止运行

如果首选主机无法直接与从属主机上的代理进行通信, 而且从属主机不会对I CMP ping 进行响应, 也收不到存储检测型号, 则认为主机出现故障

〉网络隔离·主机与网络隔离

当主机仍在运行但无法再监视来自管理网络上任何vSphere H A 代理的流量时,会发生主机网络隔离。如果主机停止监视此流量, 则它会尝试plng 群集隔离地址, 如果仍然失败,主机将声明自己已与网络隔离。

》网络分区-主机失去与首选主机的网络连接

集群中的部分主机可能无法通过管理网络与其他主机进行通信。一个群集中可能会出现多个分区。

已分区的群集会导致虚拟机保护和群集管理功能降级。请尽快更正己分区的群集。

什么是Fault Tolerance (FT) ?

FT:

·容错系统的设计目标是:当出现计划外中断时,某个备份虚拟机可以立即接管任务,确保不出现服务中断。(备份虚拟机也称为辅助虚拟机。)

·提供比vSphere HA 级别更高的业务连续性

·实现应用程序的零停机和零数据丢失FT 可用于任何需要始终可用的应用程序。

FT 可与DRS 结合使用:

·首次就将容错虚拟机放置在较好的位置可获得更好的容错效果, 并且它们包含在集群的负载平衡计算中。

Fault Tolerance的原理

· 为虚拟机启用VMware Fault Tolerance 时,该组件会为原始实例创建一个

在另- 台物理服务器上运行的实时影子实例。

· 通过VMware vLockstep 技术,上述两个实例可保持虚拟锁步。该技术可

记录原始实例执行的非确定性事件〈键盘,鼠标,网络, 磁带: I/0 ) ,并通

过千兆位以太网将其传输到辅助虚拟机进行重放。只奋原始实例才能执行写入操作。

· 两个虚拟机会播放完全相同的事件集, 因为它们在任何给定时间的事件输

入集都是相同的。

· 两个虚拟机会持续彼此检测心跳信号F 如果有一个失去心跳信号F 则另一

个将立即接管相应操作。该虚拟机的心跳频率非常高,时间间隔以毫秒计,

因此故障切换可即时完成F 而不会丢失数据或状态。

kvm

云计算概念

1、概念

(1)维基百科

云计算是一种通过因特网以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。

(2)美国国家标准与技术研究院(NIST)

云计算是一种按使用量付费的模式,这种模式提供可用的/便捷的/按需要的网络访问,

进入可配置的计算资源共享池(资源包括网络/服务器/存储/应用软件和服务),这些资源

能够被快速提供,只需要投入很少的管理工作或与服务供应商进行很少的交互。

云计算模式

(1)SaaS(Software as a Service)软件即服务

是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器

上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定

购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。

把服务器平台作为一种服务提供的商业模式。通过网络进行程序提供的服务称

之为SaaS(Software as a Service),而云计算时代相应的服务器平台或者开发环境作

为服务进行提供就成为了PaaS(Platform as a Service)。所谓PaaS实际上是指将软件

研发的平台(计世资讯定义为业务基础平台)作为一种服务,以SaaS的模式提交给用

户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快SaaS的发展,

尤其是加快SaaS应用的开发速度。

(3)IaaS(Infrastructure as a Service)基础设施即服务

消费者通过Internet 可以从完善的计算机基础设施获得服务。这类服务称为基础

设施即服务。基于 Internet 的服务(如存储和数据库)是 IaaS的一部分。IaaS通常分

为三两种用法:公有云、私有云和混合云。Internet上其他类型的服务包括平台即服务

(Platform as a Service,PaaS)和软件即服务(Software as a Service,SaaS)。

PaaS提供了用户可以访问的完整或部分的应用程序开发,SaaS则提供了完整的可直接

使用的应用程序,比如通过 Internet管理企业资源。

(3)PAAS(Platform as a Service)平台即服务

vcpu

在kvm环境中每个客户机都是一个标准的linux进程,而每一个vcpu在宿主机中是QEMU进程派生的一个普通线程

在普通的Linux系统中,进程一般有两种执行模式:内核模式和用户模式。而在KVM环境中,增加了第三种模式:客户模式。vCPU在三种执行模式下的不同分工如下:

(1)用户模式(User Mode) 主要处理I/O的模拟和管理,由QEMU的代码实现。

(2)内核模式(Kernel Mode) 主要处理特别需要高性能和安全相关的指令,如处理客户模式到内核模式的转换,处理客户模式下的I/O指令或其他特权指令引起的退出(VM-Exit),处理影子内存管理(shadow MMU)。

(3)客户模式(Guest Mode) 主要执行Guest中的大部分指令,I/O和一些特权指令除外(它们会引起VM-Exit,被hypervisor截获并模拟)。

SMP(Symmetric Multi-Processor,对称多处理器)系统

在SMP系统中,多个程序(进程)可以做到真正的并行执行,而且单个进程的多个线程也可以得到并行执行,这极大地提高了计算机系统并行处理能力和整体性能。

进程的处理器亲和性和vCPU的绑定 通常在SMP系统中,Linux内核的进程调度器根据自有的调度策略将系统中的一个进程调度到某个CPU上执行。一个进程在前一个执行时间是在cpuM(M为系统中的某CPU的ID)上运行,而在后一个执行时间是在cpuN(N为系统中另一CPU的ID)上运行。这样的情况在Linux中是很可能发生的,因为Linux对进程执行的调度采用时间片法则(即用完自己的时间片立即暂停执行),而在默认情况下,一个普通进程或线程的处理器亲和性体现在所有可用的CPU上,进程或线程有可能在这些CPU之中的任何一个(包括超线程)上执行。

进程的处理器亲和性(Processor Affinity),即CPU的绑定设置,是指将进程绑定到特定的一个或多个CPU上去执行,而不允许将进程调度到其他的CPU上。

CPU overcommit(超配)

KVM 允许 overcommit,这个特性使得虚机能够充分利用宿主机的 CPU 资源,

但前提是在同一时刻,不是所有的虚机都满负荷运行。 当然,如果每个虚机都很忙,

反而会影响整体性能,所以在使用 overcommit 的时候,需要对虚机的负载情况有所

了解,需要测试。

使用文件作为磁盘镜像的优点

†存储方便,在一个物理存储设备上可以存放多个镜像文件

†可移动性,可以方便地将镜像文件移动到另外一个本地或远程的物理存储系统中去

†易用性,管理多个文件比管理多个磁盘/分区/逻辑分区等都要方便

†可复制性,可以方便地将一个镜像复制或修改,从而供另一个新客户机使用

†稀疏文件节省磁盘空间,仅占用实际写入数据的空间

†网络远程访问,镜像文件方便地存储在网络连接的远程文件系统中

4缺点:

1明文传输,没有认证机制,安全性无法保障。

2NFS网络附加存储传输速度慢。

3容易发生单点故障。

4维护比较繁琐。

使用网桥模式

在QEMU/KVM的网络使用中,网桥(bridge)模式可以让客户机和宿主机共享一个物理网络设备连接网络,客户机有自己的独立IP地址,可以直接连接与宿主机一模一样的网络,客户机可以访问外部网络,外部网络也可以直接访问客户机(就像访问普通物理主机一样)。即使宿主机只有一个网卡设备,使用bridge模式也可知让多个客户机与宿主机共享网络设备,bridge模式使用非常方便,应用也非常广泛。

使用NAT模式

NAT(Network Addresss Translation,网络地址转换),属于广域网接入技术的一种,它将内网地址转化为外网的合法IP地址,它被广泛应用于各种类型的Internet接入方式和各种类型的网络之中。NAT将来自内网IP数据包的包头中的源IP地址转换为一个外网的IP地址。众所周知,IPv4的地址资源已几近枯竭,而NAT使内网的多个主机可以共用一个IP地址接入网络,这样有助于节约IP地址资源,这也是NAT最主要的作用。另外,通过NAT访问外部网络的内部主机,其内部IP对外是不可见的,这就隐藏了NAT内部网络拓扑结构和IP信息

内存的EPT与VPID功能简介

EPT(Extended Page Tables,扩展页表),它是针对内存管理单元(MMU)

的虚拟化扩展。EPT降低了内存虚拟化的难度(与影子页表相比),也提升了内存虚

拟化的性能。

在硬件EPT特性加入之前,影子页表(Shadow Page Tables)是从软件上维护了

从客户机虚拟地址(Guest Virtual Address,GVA)到宿主机物理地址(Host Physi

cal Address,HPA)之间的映射,每一份客户机操作系统的页表也对应一份影子页表。

有了影子页表,在普通的内存访问时都可实现从GVA到HPA的直接转换,从而避免了两

次地址转换(客户机虚拟地址到客户机物理地址,客户机物理地址到宿主机物理地

址)。Hypervisor将影子页表载入到物理上的内存管理单元(Memory Management

Unit,MMU)中进行地址翻译。

KSM

是"Kernel SamePage Merging"的缩写,中文可称为“内核同页合并”。KSM允许内核在两个或多个进程(包括虚拟客户机)之间共享完全相同的内存页。KSM让内核扫描检查正在运行中的程序并比较它们的内存,如果发现他们有内存区域或内存页是完全相同的,就将多个相同的内存合并为一个单一的内存页,并将其标识为“写时复制”。这样可以起到节省系统内存使用量的作用。之后,如果有进程试图去修改被标识为“写时复制”的合并的内存页时,就为该进程复制出一个新的内存页供其使用。

1)在KSM的帮助下,相同的内存页被合并了,减少了客户机的内存使用量,一方面,内存中的内容更容易被保存到CPU的缓存当中;另一方面,有更多的内存可用于缓存一些磁盘中的数据。因此,不管是内存的缓存命中率(CPU缓存命中率),还是磁盘数据的缓存命中率(在内存中命中磁盘数据缓存的命中率)都会提高,从而提高了KVM客户机中操作系统或应用程序的运行速度。

VPID(Virtual-Processor Identifier)技术

用于支持虚拟化环境。VPID是一个16位的域,用于唯一标识一个VCPU,每个TLB表项与一个VPID相关联。当进行虚拟地址到物理地址转换的时候,只有一个TLB表项对应的VPID与当前正在运行的虚拟机的

VCPU的VPID相同的时候,才可以用该TLB表项把虚拟地址转换为物理地址。利用VPID可以区分一个TLB表项属于哪个VCPU,从而在虚拟机 切换的时候可以保留TLB中已经有的表项,减少了无用的TLB刷新。

SR-IOV (Single Root I/O Virtualization and Sharing)

SR-IOV技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准

允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外

设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。

SR-IOV 规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到 I/O

设备。

SR-IOV规范的目标是在绕过虚拟机参与数据迁移过程中实施标准化,为每个虚拟机提供

独立内存空间、中断和Direct Memory Access (DMA)流。SR-IOV架构的设计允许一个I/O设

备支持多个虚拟功能,同时将每个功能的硬件成本降至最低。SRIOV引入了两个新的功能类型:

†PF (Physical Function)物理功能

PF 是全功能的 PCIe 功能,可以像其他任何 PCIe 设备一样进行发现、管理和处理。

PF拥有完全配置资源,可以用于配置或控制 PCIe 设备。

†VF (Virtual Function)虚拟功能

这是一些“精简”的PCIe功能,包括数据迁移必需的资源,以及经过谨慎精简的配

置资源集,理论上一块SR-IOV网卡最大的VF支持数量是256个,但是实际的数量要比这个

数量少很多,因为SR-IOV网卡本身需要消耗一些基本的资源。分身的卡(VF)可以当正常卡用,只具有物理功能;母卡(PF)具有管理VF的权利,也具有物理功能

1、优点

• 真正实现设备共享

• 接近于原生系统的高性能,优于软件模拟和virtio

• 相对于VT-d,可以用更少的设备支持更多的客户机

2、缺点

• 设备依赖,部分PCI-E支持

• 不方便动态迁移客户机

QEMU模拟I/O设备的基本原理和优缺点

(1)基本原理

使用QEMU模拟I/O的情况下,当客户机中的设备驱动程序(device driver)发起

I/O操作请求之时,KVM模块中的I/O操作捕获代码会拦截这次I/O请求,然后经过处理

后将本次I/O请求的信息存放到I/O共享页,并通知用户控件的QEMU程序。QEMU模拟

程序获得I/O操作的具体信息之后,交由硬件模拟代码来模拟出本次的I/O操作,完成之

后,将结果放回到I/O共享页,并通知KVM模块中的I/O操作捕获代码。最后,由KVM

模块中的捕获代码读取I/O共享页中的操作结果,并把结果返回到客户机中。当然,这个

操作过程中客户机作为一个QEMU进程在等待I/O时也可能被阻塞。另外,当客户机通过

DMA(Direct Memory Access)访问大块I/O之时,QEMU模拟程序将不会把操作结果

放到I/O共享页中,而是通过内存映射的方式将结果直接写到客户机的内存中去,然后通

过KVM模块告诉客户机DMA操作已经完成。

(2)优点

可以通过软件模拟出各种各样的硬件设备,包括一些不常用的或者很老很经典的设备(如RTL8139的网卡),而且它不用修改客户机操作系统,就可以实现模拟设备在客户机中正常工作。在KVM客户机中使用这种方式,对于解决手上没有足够设备的软件开发及调 试有非常大的好处。

(3)缺点

每次I/O操作的路径比较长,有较多的VMEntry、VMExit发生,需要多次上下文切换

(context switch),也需要多次数据复制,所以它的性能较差。

半虚拟化virtio的基本原理和优缺点

(1)基本原理

其中前端驱动(frondend,如virtio-blk、virtio-net等)是在客户机中存在的驱动程

序模块,而后端处理程序(backend)是在QEMU中实现的。在这前后端驱动之间,还

定义了两层来支持客户机与QEMU之间的通信。其中,“virtio”这一层是虚拟队列接口,

它在概念上将前端驱动程序附加到后端处理程序。一个前端驱动程序可以使用0个或多个

队列,具体数量取决于需求。例如,virtio-net网络驱动程序使用两个虚拟队列(一个用

于接收,另一个用于发送),而virtio-blk块驱动程序仅使用一个虚拟队列。虚拟队列实

际上被实现为跨越客户机操作系统和hypervisor的衔接点,但它可以通过任意方式实现,

前提是客户机操作系统和virtio后端程序都遵循一定的标准,以相互匹配的方式实现它。

而virtio-ring实现了环形缓冲区(ring buffer),用于保存前端驱动和后端处理程序执行的信息,

并且它可以一次性保存前端驱动的多次I/O请求,并且交由后端驱动去批量处理,最后实际调

用宿主机中设备驱动实现物理上的I/O操作,这样做就可以根据约定实现批量处理而不是客户

机中每次I/O请求都需要处理一次,从而提高客户机与hypervisor信息交换的效率。

(2)优点

Virtio半虚拟化驱动的方式,可以获得很好的I/O性能,其性能几乎可以达到和native(即:

非虚拟化环境中的原生系统)差不多的I/O性能。所以,在使用KVM之时,如果宿主机内核和

客户机都支持virtio的情况下,一般推荐使用virtio达到更好的性能。

(3)缺点

它必须要客户机安装特定的Virtio驱动使其知道是运行在虚拟化环境中,且按照Virtio的

规定格式进行数据传输,不过客户机中可能有一些老的Linux系统不支持virtio和主流的

Windows系统需要安装特定的驱动才支持Virtio。不过,较新的一些Linux发行版(如RHEL

6.3、Fedora 17等)默认都将virtio相关驱动编译为模块,可直接作为客户机使用virtio,而且

对于主流Windows系统都有对应的virtio驱动程序可供下载使用。

virtio是对半虚拟化hypervisor中的一组通用模拟设备的抽象.该设置还允许hypervisor

导出一组通用的模拟设备,并通过一个通用的应用程序接口(API)让它们变得可用.有了半虚拟化

hypervisor之后,来宾操作系统能够实现一组通用的接口,在一组后端驱动程序之后采用特定的

设备模拟.后端驱动程序不需要是通用的,因为它们只实现前端所需的行为.

注意:在现实中(尽管不需要),设备模拟发生在使用 QEMU 的空间,因此后端驱动程序与

hypervisor 的用户空间交互,以通过 QEMU 为 I/O 提供便利。QEMU 是一个系统模

拟器,它不仅提供来宾操作系统虚拟化平台,还提供整个系统(PCI 主机控制器、磁盘、

网络、视频硬件、USB 控制器和其他硬件元素)的模拟。

openstack

基础

IT系统架构的发展到目前为止大致可以分为3个阶段

物理机架构

这一阶段,应用部署和运行在物理机上。 比如企业要上一个ERP系统,如果规模不大,可以找3台物理机,分别部署Web服务器、应用服务器和数据库服务器。 如果规模大一点,各种服务器可以采用集群架构,但每个集群成员也还是直接部署在物理机上。早期的生产环境都是这种架构,一套应用一套服务器,通常系统的资源使用率都很低,达到20%的都是好的。

虚拟化架构

摩尔定律决定了物理服务器的计算能力越来越强,虚拟化技术的发展大大提高了物理服务器的资源使用率。 这个阶段,物理机上运行若干虚拟机,应用系统直接部署到虚拟机上。 虚拟化的好处还体现在减少了需要管理的物理机数量,同时节省了维护成本。

云计算架构

虚拟化提高了单台物理机的资源使用率,随着虚拟化技术的应用,IT环境中有越来越多的虚拟机,这时新的需求产生了: 如何对IT环境中的虚拟机进行统一和高效的管理。 有需求就有供给,云计算登上了历史舞台。

常见的云平台

vCloud Director

VMware vCloud™ Director 使客户能够按需交付基础架构,以便终端用户能以最大 的敏捷性使用虚拟资源。扩展模块、API 和开放式跨云标准使 vCloud Director客户可以与现有管理系统集成,并提供在不同云环境之间迁移工作负载的灵活性。通过内置的安全性和基于角色的访问控制,可以在共享基础架构上整合数据中心和部署工作负载。

CloudStack

CloudStack是一个开源的具有高可用性及扩展性的云计算平台。支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等。同时CloudStack是一个开源云计算解决方案。可以加速高伸缩性的公共和私有云(IaaS)的部署、管理、配置。使用CloudStack作为基础,数据中心操作者可以快速方便的通过现存基础架构创建云服务。

OpenStack

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模 扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础 设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。OpenStack项目的首要任务是简化云 的部署过程并为其带来良好的可扩展性

云平台的架构

IaaS(Infrastructure as a Service)openstack

提供的服务是虚拟机。 IaaS 负责管理虚机的生命周期,包括创建、修改、备份、启停、销毁等。 使用者从云平台得到的是一个已经安装好镜像(操作系统+其他预装软件)的虚拟机。 使用者需要关心虚机的类型(OS)和配置(CPU、内存、磁盘),并且自己负责部署上层的中间件和应用。 IaaS 的使用者通常是数据中心的系统管理员。 典型的 IaaS 例子有 AWS、Rackspace、阿里云等。一、IaaS:基础设施即服务(个人比较习惯的):用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的资源

PaaS(Platform as a Service)

提供的服务是应用的运行环境和一系列中间件服务(比如数据库、消息队列等)。 使用者只需专注应用的开发,并将自己的应用和数据部署到PaaS环境中。 PaaS负责保证这些服务的可用性和性能。 PaaS的使用者通常是应用的开发人员。 典型的 PaaS 有 Heroku、Google App Engine、IBM BlueMix 等。二、PaaS:平台即服务:将软件研发平台作为一种服务, 如Eclipse/Java编程平台,服务商提供编程接口/运行平台等

SaaS(Software as a Service)

提供的是应用服务。 使用者只需要登录并使用应用,无需关心应用使用什么技术实现,也不需要关系应用部署在哪里。 SaaS的使用者通常是应用的最终用户。 典型的 SaaS 有 Google Gmail、Sales三、SaaS:软件即服务  :将软件作为一种服务通过网络提供给用户,如web的电子邮件、HR系统、订单管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于web的软件,来管理企业经营活动

Database Service(Trove)

1 为用户在Openstack的环境提供可扩展和可靠的关系型和非关系型数据库引擎服务。

2 主要用于帮助用户在复杂管理时进行资源的隔离,方便进行自动化管理操作。

Orchestration Service(Heat)

1 部署编排服务

2 提供了一种通过模板定义的协同部署方式。

3 模板驱动的引擎,允许应用开发人员使用提供的模板语言描述云环境架构,并且以自动化的方式进行部署云计算资源。

云环境部署方法

  1. all in one:把所有组件部署在同一设备上 2.devstack:通过应答文件(自己设置)来自定义部署云环境
  2. kolla:基于容器部署云平台 4.fuel

云环境常见节点

控制节点:支持服务(DNS,NTP,数据库,中间件rabbitmq消息队列型中间件(为了实现组件内部相互通信,使用http或https协议),memcached缓存型中间件(加速数据库数据服务)}),Keystone,Glance,Horizon,<Nova,Cinder,Neutron中具有管控功能的子服务>

计算节点:Nova一个子服务,虚拟化层Hyoervisor,Neutron一个子服务

网络节点:Neutron一些子服务

存储节点:Cinder的相关子服务

云环境组网

管理网络(API网络):1.实现不同组件之间的通信  2.管理员可以通过该网络实现对整个云环境能的节点选项管理

VM网络(租户网络,私有网络,private网络):实现虚机之间的通信(万兆)

存储网络:(万兆,光纤)

前端存储网络:实现计算节点上虚机对存储上数据的访问。 后端存储网络:实现存储节点之间通信

公共网络(业务网络,public网络):实现虚机与外部网络的通信。(万兆)

IPMI网络:实现远程连接服务器的管理接口(千兆,由厂家决定)

bond(网卡绑定技术)七种模式

把多个物理网卡绑定成了一个逻辑网卡

功能

高可用,提高带宽

常用的有三种:

mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。

mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。

说明:

需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里optionsbond0 miimon=100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.从原理分析一下(bond运行在mode0下):

mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为 ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们的解 决办法是,两个网卡接入不同的交换机即可。

mode6模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址。

七种bond模式说明:

第一种模式:mod=0 ,即:(balance-rr)Round-robin policy(平衡轮循环策略)

特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降

第二种模式:mod=1,即: (active-backup)Active-backup policy(主-备份策略)

特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N

第三种模式:mod=2,即:(balance-xor)XOR policy(平衡策略)

特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址)% slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

第四种模式:mod=3,即:broadcast(广播策略)

特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

第五种模式:mod=4,即:(802.3ad)IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 动态链接聚合)

特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的 是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应 性。

必要条件:

条件1:ethtool支持获取每个slave的速率和双工设定

条件2:switch(交换机)支持IEEE802.3ad Dynamic link aggregation

条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

第六种模式:mod=5,即:(balance-tlb)Adaptive transmit load balancing(适配器传输负载均衡)

特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

该模式的必要条件:ethtool支持获取每个slave的速率

第七种模式:mod=6,即:(balance-alb)Adaptive load balancing(适配器适应性负载均衡)

特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receiveload balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新(ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(roundrobin)在bond中最高速的slave上当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答 不会被switch(交换机)阻截。

Rabbitmq相关概念

端口号udp5672

管理插件udp15672

AMQP

全称高级消息队列协议。是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

Rabbitmq

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端

Rabbitmq功能

在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理(同步处理:要一直等待第一个执行完毕才执行下一个,异步处理执行完不用等待回复直接执行下一个),而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。

集群中节点的分配

集群的元数据:集群及节点的相关信息,存储在集群中的每一台节点上。

集群中节点的类型:disc节点:将元数据存储在磁盘上

ram节点:将元数据存储在内存中

注:ram节点的特点:速度较disc节点快,重启后内存中的数据将会丢失

集群中节点的分配:至少一个disc节点;如果是单节点系统,那么节点类型只能是disc。

当新节点加入到集群中,或者节点从集群中退出,需要通知集群中所有的disc节点。

Rabbitmq工作原理

Producer&Consumer

producer指的是消息生产者,consumer消息的消费者。

Queue

消息队列,具有缓存消息的能力。rabbitmq中,队列消息可以设置为持久化,临时或者自动删除。

1、设置为持久化的队列,queue中的消息会在server本地硬盘存储一份,防止数据丢失

2、设置为临时队列,queue中的数据在系统重启之后就会丢失

3、设置为自动删除的队列,当不存在用户连接到server,队列中的数据会被自动删除

Exchange

Exchange类似于数据通信网络中的交换机,提供消息路由策略。rabbitmq中,producer[prəˈdju:sə(r)] (生产者,制造者)不是通过信道直接将消息发送给queue,而是先发送给Exchange。一个Exchange可以和多个Queue进行绑定,producer在传递消息的时候,会传递一个ROUTING_KEY,Exchange会根据这个ROUTING_KEY按照特定的路由算法,将消息路由给指定的queue。和Queue一样,Exchange也可设置为持久化,临时或者自动删除。

通信过程

A生产消息,发送给服务器端的Exchange

Exchange收到消息,根据ROUTINKEY,将消息转发给匹配的Queue1

Queue1收到消息,将消息发送给订阅者C1

C1收到消息,发送ACK给队列确认收到消息

Queue1收到ACK,删除队列中缓存的此条消息

Memcached概念

1、Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

2、Memcached基于一个存储键/值对的hashmap(散列表)。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

3、Memcached 同时是一个开源的、高性能、具有分布式内存对象的缓存系统。它通过减轻数据库负载加速动态WEB应用。

4、缓存一般用来保存一些常用存取的对象或数据,通过缓存来存取对象或数据要比磁盘存取快。

5、Memcached是一种内存缓存,把经常需要存取的对象或数据缓存在内存中,内存中缓存的这些数据通过API的方式被存取,数据就像一张大的HASH表一样,以Key-value对的方式存在。

6、Memcached通过缓存经常被存取的对象或数据,来减轻数据库的压力,提高网站的响应速度,构建速度更快的可扩展的WEB应用。

Memcached与数据库写的流程

1、检查客户端请求的数据是否在Memcache中,如果存在,直接将请求的数据返回,不在对数据进行任何操作。

2、如果请求的数据不在Memcache中,就去数据库查询,把从数据库中获取的数据返回给客户端,同时把数据缓存一份Memcache中

3、每次更新数据库的同时更新Memcache中的数据库。确保数据信息一致性。

4、当分配给Memcache内存空间用完后,会使用LRU(least Recently Used,最近最少使用)策略加到其失效策略,失效的数据首先被替换掉,然后在替换掉最近未使用的数据。

Keystone

功能概述

1.管理用户及其权限

2.维护 OpenStack Services 的 Endpoint(终端)

3.Authentication [ɔ:ˌθentɪ'keɪʃn](认证)和 Authorization [ˌɔ:θərəˈzeɪʃn](授权)

User

User即用户,指的是使用openstack service的用户,可以是人,服务,系统,就是说只要是访问openstack service 的对象都可以称为User

Credentials [krəˈdenʃlz]资格证书

是用于确认用户身份的凭证。说白了就是“信物”,可以是:

 (1)用户名和密码

 (2)用户名跟API Kye(秘钥) 

 (3)一个keystone分配的身份的token 

注意:(1)用户第一次确认身份的方法 ;(2)用户已经确认身份后的方法 (token是有时间限制的)

Authentication:

  (1)用户身份验证的过程。keystone服务通过检查用户的Credentials [krəˈdenʃlz] (资格证书)来确定用户的身份

(2)第一次验证身份是使用用户名与密码或者用户名与API Key的形式。当用户的Credentials被验证后,keystone会给用户分配一个Authentication token 供该用户的后续请求操作

Token 令牌

 (1)是一串数字字符串,当用户访问资源时需要使用的东西,在keystone中主要是引入令牌机制来保护用户对资源的访问,同时引入PKI、PKIZ、fernet、UUID其中一个随机加密产生一串数字,对令牌加以保护

 (2)token并不是长久有效的,是有时效性的,在有效的时间内可以访问资源。

Role [roʊl](角色)

 (1)本身是一堆ACL集合,主要用于权限的划分。

 (2)可以给User指定Role,使user获得role对应的操作权限。

 (3)系统默认使用管理Role的角色 管理员用户:admin 普通用户:member(老版本) user(新版本)

Keystone 是借助 Role 来实现 Authorization 的,Keystone定义Role ,可以为 User 分配一个或多个 Role。

Policy [ˈpɑ:ləsi] (策略)

 (1)对于keystone service 来说,Policy就是一个JSON文件,rpm安装默认是在/etc/keystone/policy.json。通过配置这个文件,keystone实现了对User基于Role的权限管理(User <-- Role(ACL) <--Policy)

 (2)Policy就是用来控制User对Project(tenant)中资源的操作权限

Project项目(Tenant租户)

用于将 OpenStack 的资源(计算、存储和网络)进行分组和隔离。根据OpenStack 服务的对象不同,Project 可以是一个客户(公有云,也叫租户)、部门或者项目组(私有云)。

 (1)Project(Tenant)是一个人或服务所拥有的资源集合。不同的Project之间资源是隔离的,资源可以设置配额

 (2)Project(Tenant)中可以有多个User,每一个User会根据权限的划分来使用Project(Tenant)中的资源

 (3)User在使用Project(Tenant)的资源前,必须要与这个Project关联,并且制定User在Project下的Role,一个assignment[əˈsaɪnmənt](关联) 即:Project-User-Role

Service服务

   OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。每个 Service 都会提供若干个 Endpoint,User 通过 Endpoint 访问资源和执行操作。

Endpoint访问点

 (1)用来通过访问和定位某个openstack service的地址,通常是一个URL

 (2)不同的region/ri:dʒən/(范围)有不同的Endpoint(region使用与跨地域的云服务,比如像阿里云有华北,华东等等,)

 (3)任何服务都访问openstack service中的资源时,都要访问keystone

 (4)Endpoint分为三类:

     admin url —>管理员用户使用 Port:35357

     internal url —>openstack内部组件间互相通信 Port:5000    

public/pʌblɪk/(公众) url —> 其他用户访问地址 Port:5000

Service与Endpoint关系

 (1)在openstack中,每一个service中都有三种Endpoint:Admin、Public、Internal(创建完service后需要为其创建API Endpoint)

 (2)Admin使用者为管理员,能够修改User Project(Tenant)

 (3)public使用者为客户端,使用者在外网管理自己云服务器

 (4)internal使用者为内部组件间相互调用

 (5)三种Endpoint在网络上开放的权限也不同,Admin通常只能对内网开放,public [ˈpʌblɪk] (公众的)通常可以对外网开放,internal只能对有安装openstack服务的机器开放

Domain[doʊˈmeɪn](领域)

可以认为是 project,user,group 的 namespace(命名空间)。 一个 domain 内,这些元素的名称不可以重复,但是在两个不同的domain内,它们的名称可以重复。因此,在确定这些元素时,需要同时使用它们的名称和它们的 domain 的 id 或者 name。

Group

是一个 domain 部分 user 的集合,其目的是为了方便分配 role。给一个 group 分配role,结果会给 group 内的所有 users 分配这个 role。

keystone认证管理流程

用户user登录keystone系统(password或者token的方式),获取一个临时的token和catalog服务目录(记录所有的endponit点)。

user通过临时token获取自己的所有的project列表。

user选定一个project,然后指定project重新登录,获取一个正式的token在HTTP消息头中携带token,然后发送请求(如果用户知道project name或者project id可以直接第3步登录)。

消息到达endpoint之后,由服务端(nova)的keystone中间件(pipeline中的filter:authtoken)向keystone发送一个验证token的请求。(token类型:uuid需要在keystone验证token,pki类型的token本身是包含用户详细信息的加密串,可以在服务端完成验证)

keystone验证token成功之后,将token对应用户的详细信息,例如:role,username,userid等,返回给服务端(nova)。

服务端(nova)完成请求,例如:创建虚拟机。

服务端返回请求结果给user

Glance

功能总结

提供 REST API 让用户能够查询和获取 image 的元数据和 image 本身。

支持多种方式存储 image,包括普通的文件系统、Swift、Amazon S3 等。

对 Instance(实例) 执行 Snapshot 创建新的 image。

Glance服务架构

user通过REST API接口访问,API接口通过Authz中间件和Keystone验证,验证成功后访问域控若是上传先访问注册表层,通过DAL接口道数据库存储元数据,之后域控把请求发送给后端存储,后端存储去keystone验证请求,请求通过调用存储上传镜像,若是下载镜像就跳过注册表和存储元数据

A client ----任何使用Glance服务器的应用程序。

REST API ----Glance提供REST访问的API。主要用于接收和访问请求

Database Abstraction Layer (DAL) ----统一Glance和数据库之间的通信的应用程序编程接口(API)。

Glance Domain Controller ----域控制器,实现主要的中间件功能,如授权,通知,策略,数据库连接。

Glance Store ----用于组织Glance和各种数据存储之间的交互。

Registry Layer ----注册表层 用于通过使用单独的服务来组织域和DAL之间的安全通信的可选层。

Glance逻辑架构

glance-api

glance-api 是系统后台运行的服务进程。 对外提供 REST API,响应 image 查询、获取和存储的调用。

glance-api 不会真正处理请求。 如果操作是与 image metadata(元数据)相关,glance-api 会把请求转发给 glance-registry; 如果操作是与 image 自身存取相关,glance-api 会把请求转发给该 image 的 store backend。

在控制节点上可以查看 glance-api 进程

glance-registry

glance-registry 是系统后台运行的服务进程。 负责处理和存取 image 的 metadata(元数据),例如 image 的大小和类型。

在控制节点上可以查看 glance-registry 进程:

在控制节点执行命令:ps   -e  | grep  glance-registry

Database

Image 的 metadata 会保持到 database 中,默认是 MySQL。 在控制节点上可以查看 glance 的 database 信息:

store backend

Glance 自己并不存储 image。 真正的 image 是存放在 backend 中的。 Glance 支持多种 backend,包括:

A directory on a local file system(这是默认配置)

GridFS

Ceph RBD

Amazon S3

Sheepdog

OpenStack Block Storage (Cinder)

OpenStack Object Storage (Swift)

VMware ESX

具体使用哪种 backend,是在 /etc/glance/glance-api.conf 中配置的。在我们的 devstack 环境中,image 存放在控制节点本地目录 /opt/stack/data/glance/images/ 中.

Image的状态类型

Queued:没有上传Image数据,只SQL Database中存有该镜像的元数据(标识该镜像的ID)。此时的glance对镜像数据没有任何描述,其存储空间为0。

Saving:是镜像的原始数据在上传中的一种过度状态,它产生在镜像数据上传至glance的过程中,

Active:是当镜像成功上传完毕以后的一种状态,它表明glance中可用的镜像。

Killed:是出现在镜像上传失败或者镜像文件不可读的情况下,glance将镜像状态设置成Killed。

Deleted:表明一个镜像文件马上会被删除,只是当前glance仍然保留该镜像文件的相关信息和原始镜像数据。

Pending_delete:类似于deleted,虽然此时的镜像文件没有删除,但镜像文件不能恢复的。

先上传元数据,在上传镜像本身,镜像上传时可以直接删除,也可以在上传后不可读或失败设置为killed状态,然后删除。镜像上传成功会有三种方式,第一直接删除,第二数据库信息保留然后一段时间后删除磁盘数据,第三反激活镜像,使镜像达到未激活状态。

deactivated [di:'æktɪveɪtɪd] 镜像反激活状态,要使用需要重新激活

镜像文件的访问权限

Public [ˈpʌblɪk]  公共的:可以被所有的Tenant使用。

Private[ˈpraɪvɪt] 私有的/项目的(项目内所有人):只能被Image Owner所在的Tenant使用。

Shared[ʃerd]  共享的:一个非公共的Image可以共享给指定的Tenant,通过member*操作来实现。

Protected [prə'tektɪd] 受保护的:Protected Image不能被其他人删除。只能被创建者删除(可以是项目)

Nove

功能总结

提供 REST 风格的API 接口。

管理计算资源。

维护虚拟机的生命周期。

Nova 的架构比较复杂,包含很多组件。 这些组件以子服务(后台 deamon 进程)的形式运行,可以分为以下几类:

 API

# nova-api

接收和响应客户的 API 调用。 除了提供 OpenStack 自己的API,nova-api 还支持 Amazon EC2 API。 也就是说,如果客户以前使用 Amazon EC2,并且用 EC2 的 API 开发了些工具来管理虚机,那么如果现在要换成 OpenStack,这些工具可以无缝迁移到 OpenStack,因为 nova-api 兼容 EC2 API,无需做任何修改。

接收和响应api调用
  1. 检查客户端传入请求的合法性
  2. 调用Nova其他子服务处理该请求
  3. 对其子服务返回结果格式化并返还给客户

# nova-placement-api

服务跟踪每个提供商的库存和使用情况。

Compute Core核心计算

# nova-scheduler调度器

虚机调度服务,负责决定在哪个计算节点上运行虚机

retry firter过滤掉已经被过滤的计算节点,假如有三个节点第一次选择节点3,但节点3没起来,第二次就直接pass掉节点3

ram firter 根据flaver内存需求定义,过滤掉不满足虚机内存计算节点

core firter 过滤掉不满足cpu的

compute firter 过滤掉计算节点无法使用的

compute Capabilities firter 按照计算节点的属性过滤

# nova-compute计算

管理虚机的核心服务,通过调用 Hypervisor API (虚拟化层)实现虚机生命周期管理。

1.适用于XenServer / XCP的XenAPI

2.KVM或QEMU的libvirt

3.适用于VMware的VMwareAPI

定期汇报计算节点资源使用情况

# Hypervisor(管理程序)嗨per y zer

计算节点上跑的虚拟化管理程序,虚机管理最底层的程序。 不同虚拟化技术提供自己的 Hypervisor。 常用的 Hypervisor 有 KVM,Xen, VMWare 等

# nova-conductor[kənˈdʌktɚ]

nova-compute 经常需要更新数据库,比如更新虚机的状态。 出于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor。

1.提高了安全性  2.提高了伸缩性(实现异步处理)

Console Interface

# nova-console

用户可以通过多种方式访问虚机的控制台:

nova-novncproxy,基于 Web 浏览器的 VNC 访问。

nova-spicehtml5proxy,基于 HTML5 浏览器的 SPICE 访问。

nova-xvpnvncproxy,基于 Java 客户端的 VNC 访问。

# nova-console auth[kənˈsoʊl]奥斯 控制台授权

负责对访问虚机控制台请求提供 Token 认证。

# nova-cert

提供 x509 证书支持。用于生成eucabundle image的证书

Message Queue

在前面我们了解到 Nova 包含众多的子服务,这些子服务之间需要相互协调和通信。为解耦各个子服务,Nova 通过 Message Queue 作为子服务的信息中转站。 所以在架构图上我们看到了子服务之间没有直接的连线,是通过 Message Queue 联系的。

Database

Nova 会有一些数据需要存放到数据库中,一般使用 MySQL。数据库安装在控制节点上。 Nova 使用命名为 “nova” 的数据库。

nova核心组件处理流程

1.Nova-api把vm请求发给MQ,把vm元数据发给DB

2.Nova-Scheduler到MQ读取向DB请求vm元数据,

3.Nova-Scheduler调度,对所有计算节点筛选因为compute会实时向scheduler发送节点资源使用情况,通过元数据用firter过滤weight权重选择出一个Y节点,将消息返给MQ:

4.Y节点的Nova-Compute来MQ读取

5.Y节点的Nova-Compute通过MQ向Nova-Conductor发起请求,要获取元数据信息

6.Nova-Conductor从DB读取数据,通过MQ返回给Nova-compute

7.Y节点的Nove-Compute通过驱动driver到虚拟化层hypervision

Cinder

功能总结

1.是一个资源管理系统,负责向虚拟机提供持久化块存储资源。

2.它将不同的后端存储进行封装,向外提供同一的API接口。

3.它是以驱动的方式,结合不同后端存储的驱动,提供块存储服务。主要核心是对卷的管理,允许对卷、卷类型和卷快照进行处理。

openstack存储

Cinder组件

cinder-api

主要服务接口, 负责接受和处理外界的API请求,并将请求放入RabbitMQ队列,调用 cinder-volume, 交由后端执行。

cinder-volume

管理 volume 的服务,与 volume provider 协调工作,管理 volume 的生命周期。运行 cinder-volume 服务的节点被称作为存储节点,若干个这样的存储节点联合起来可以构成一个存储资源池。

Cinder-scheduler

scheduler 通过调度算法选择最合适的存储节点创建 volume。调度过程如下:

(1) 首先判断host的状态,只有service状态为up的host才会被考虑。

(2) 创建volume的时候,根据filter和weight算法选出最优的host来创建volume。

(3)迁移volume的时候,根据filter和weight算法来判断目的host是不是符合要求。

如果选出一个host,则使用RPC调用cinder-volume来执行volume操作。

volume [ˈvɑ:lju:m]体积,卷 provider[prəˈvaɪdɚ] 供应商

数据的存储设备,为 volume 提供物理存储空间。 cinder-volume 支持多种 volume provider,每种 volume provider 通过自己的 driver 与cinder-volume 协调工作。

Message Queue

Cinder 各个子服务通过消息队列实现进程间通信和相互协作。因为有了消息队列,子服务之间实现了解耦,这种松散的结构也是分布式系统的重要特征。

 Database Cinder

有一些数据需要存放到数据库中,一般使用 MySQL。数据库是安装在控制节点上的,比如在我们的实验环境中,可以访问名称为“cinder”的数据库。

Cinder部署

Cinder 的服务会部署在两类节点上,控制节点和存储节点。

OpenStack 是分布式系统,其每个子服务都可以部署在任何地方,只要网络能够连通。无论是哪个节点,只要上面运行了 cinder-volume,它就是一个存储节点,当然,该节点上也可以运行其他 OpenStack服务。

Cinder组件协调工作

①:客户(用户或nova-compute)向API发送请求(创建volume)把请求发送

②:DB存储volume的元数据

③:API把数据发给MQ,cinder-scheduler从MQ获取请求

④:cinder-scheduler从DB中获取volume元数据,根据调度算法选出存储节点

⑤:cinder-scheduler向MQ发送消息:存储节点A创建volume

⑥:存储节点A的cinder-volume获取消息(创建volume)

⑦:cinder-volume从DB中获取volume的元数据

⑧:cinder-volume通过driver在volume provider上创建volume

Neutron

Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 VPN 等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。

二层交换机 Switching

Nova 的 Instance 是通过虚拟交换机连接到虚拟二层网络的。Neutron 支持多种虚拟交换机,包括 Linux 原生的 Linux Bridge(不能实现GRE网络 )和 Open vSwitch。 Open vSwitch(OVS)(可以实现所有五种网络)是一个开源的虚拟交换机,它支持标准的管理接口和协议。

三层路由 Routing

Instance 可以配置不同网段的 IP,Neutron 的 router(虚拟路由器)实现 instance 跨网段通信。router 通过 IP forwarding,iptables 等技术来实现路由和 NAT。

负载均衡 Load Balance  [lod ˈbæləns] 在第四层实现负载均衡

Load-Balancing-as-a-Service(LBaaS),提供了将负载分发到多个 instance 的能力。LBaaS 支持多种负载均衡产品和方案,不同的实现以 Plugin 的形式集成到 Neutron,目前默认的 Plugin 是 HAProxy(HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性负载均衡,以及基于TCPHTTP的应用程序代理。)。我们会在后面章节学习 LBaaS 的使用和配置。

防火墙 Firewalling

Neutron 通过下面两种方式来保障 instance 和网络的安全性。

Security Group(安全组)

通过 iptables 限制进出 instance 的网络包。保护的对象:instance    设置在vm上

Firewall-as-a-Service

FWaaS,限制进出虚拟路由器(子网)的网络包,也是通过 iptables 实现。保护对象:子网

设置在虚拟路由器上

Network

network 是一个隔离的二层广播域。Neutron 支持多种类型的 network,包括 local, flat, VLAN, VxLAN 和 GRE。

Local [ˈloʊkl]网络 本地网络

local 网络与其他网络和节点隔离。local 网络中的 instance 只能与位于同一节点上同一网络的 instance 通信,local 网络主要用于单机测试。

Flat [flæt]  网络 缺点不可分割 不安全

flat 网络是无 vlan tagging 的网络。flat 网络中的 instance 能与位于同一网络的 instance 通信,并且可以跨多个节点。

VLAN 网络 最大只可划分4094个 2的12次方减去最大的和最小的

vlan 网络是通过vlan id来划分网络。vlan 是一个二层的广播域,同一 vlan 中的 instance 可以通信,不同 vlan 只能通过 router 通信。vlan 网络可跨节点,是应用最广泛的网络类型。

VXLAN 网络 网络划分2的24次方减2

vxlan 是基于隧道技术的 overlay 网络。vxlan 网络通过唯一的 segmentation ID(也叫 VNI)与其他 vxlan 网络区分。vxlan 中数据包会通过 VNI 封装成 UDP 包进行传输。因为二层的包通过封装在三层传输,能够克服 vlan 和物理网络基础设施的限制。

GRE 网络

GRE是与 vxlan 类似的一种 overlay 网络。主要区别在于使用 IP 包而非 UDP 进行封装。

注意:不同 network 之间在二层上是隔离的。

以 vlan 网络为例,network A 和 network B 会分配不同的 VLAN ID,这样就保证了 network A 中的广播包不会跑到 network B 中。当然,这里的隔离是指二层上的隔离,借助路由器不同 network 是可能在三层上通信的。

network 必须属于某个 Project( Tenant 租户),Project 中可以创建多个 network。 network 与 Project 之间是 多对1关系。

subnet子网

subnet 是一个 IPv4 或者 IPv6 地址段。instance 的 IP 从 subnet 中分配。每个 subnet 需要定义 IP 地址的范围和掩码。

Port(计算机与其他设备的)接口 

port 可以看做虚拟交换机上的一个端口。port 上定义了 MAC 地址和 IP 地址,当 instance 的虚拟网卡 VIF(Virtual Interface) 绑定到 port 时,port 会将 MAC 和 IP 分配给 VIF。虚机删除端口可以回收MAC和IP地址,并不是直接分配给虚机MAC和IP,而是端口定义的

subnet 与 port 是 1对多 关系。一个 port 必须属于某个 subnet;一个 subnet 可以有多个 port。

小结:

Project,Network,Subnet,Port 和 VIF 之间关系:

Project 1 : m Network 1 : m Subnet 1 : m Port 1 : 1 VIF m : 1 Instance

Neutron子服务

Neutron Server

对外提供 OpenStack 网络 API,接收请求,并调用 Plugin 处理请求。

Plugin ['plʌgɪn] (插件)

处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络状态, 并调用Agent 处理请求。

Agent [ˈeɪdʒənt] (代理)

处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。

Network provider

提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交换机。

Neutron Server接收到创建network的请求

Neutron Server接收到创建network的请求,通过Message Queue(RabbitMQ)通知已注册的Linux Bridge Plugin。 Plugin将要创建的network的信息(例如名称、VLAN ID等)保存到数据库中,并通过Message Queue通知运行在各节点上的Agent。 Agent收到消息后会在节点上的物理网卡(比如eth2)上创建VLAN设备(比如eth2.100),并创建bridge(比如brqXXX)桥接VLAN设备。

这里进行几点说明:

plugin 解决的是 What 的问题,即网络要配置成什么样子?而至于如何配置 How 的工作则交由 agent 完成。

plugin,agent 和 network provider 是配套使用的,比如: network provider 是 linux bridge,那么就得使用 linux bridge 的 plungin 和 agent;如果 network provider 换成了 OVS 或者物理交换机,plugin 和 agent 也得替换。

plugin 按照功能分为两类: core plugin 和 service plugin。core plugin 维护 Neutron 的 network, subnet 和 port 相关资源的信息,与 core plugin 对应的 agent 包括 linux bridge, OVS 等; service plugin 提供 routing, firewall, load balance 等服务,也有相应的 agent。

neutron部署方案

方案1:控制节点+计算节点 在这个部署方案中,OpenStack由控制节点和计算节点组成。

控制节点 部署的服务包括:neutron server、core plugin的agent和service plugin的agent。

计算节点 部署core plugin的agent,负责提供二层网络功能。 这里有两点需要说明:

(1)core plugin和service plugin已经集成到neutron server,不需要运行独立的plugin服务。

(2)控制节点和计算节点都需要部署core plugin的agent,因为通过该agent控制节点与计算节点才能建立二层连接。

(3)可以部署多个控制节点和计算节点。

方案2:控制节点+网络节点+计算节点 在这个部署方案中,OpenStack由控制节点、网络节点和计算节点组成。

控制节点 部署neutron server服务。

网络节点 部署的服务包括:core plugin的agent和service plugin的agent。

计算节点 部署core plugin的agent,负责提供二层网络功能。 这个方案的要点是将所有的agent从控制节点分离出来,部署到独立的网络节点上。控制节点只负责通过neutron server响应API请求。 由独立的网络节点实现数据的交换、路由以及load balance等高级网络服务。 可以通过增加网络节点承担更大的负载。 可以部署多个控制节点、网络节点和计算节点。 该方案特别适合规模较大的OpenStack环境。

Neutron server的分层结构

Core API

对外提供管理 network, subnet 和 port 的 RESTful API。

Extension API

对外提供管理 router, load balance, firewall 等资源 的 RESTful API。

Commnon Service

认证和校验 API 请求。

Neutron Core

Neutron server 的核心处理程序,通过调用相应的 Plugin 处理请求。辨别类别

Core Plugin API

定义了 Core Plgin 的抽象功能集合,Neutron Core 通过该 API 调用相应的 Core Plgin。

Extension Plugin API

定义了 Service Plgin 的抽象功能集合,Neutron Core 通过该 API 调用相应的 Service Plgin。

Core Plugin

实现了 Core Plugin API,在数据库中维护 network, subnet 和 port 的状态,并负责调用相应的 agent 在 network provider 上执行相关操作,比如创建 network。

Service Plugin

实现了 Extension Plugin API,在数据库中维护 router, load balance, security group 等资源的状态,并负责调用相应的 agent 在 network provider 上执行相关操作,比如创建 router。

Neutron Server 包括两部分:

1)  提供 API 服务。

2)  运行 Plugin。

Neutron如何支持各种network provider

先讨论一个简单的场景:在Neutorn中使用Linux Bridge这一种network provider。 根据Neutron Server的分层模型,我们需要实现两个东西:linux bridge core plugin和linux bridge agent。

linux bridge core plugin。  

  1. 与neutron server一起运行。
  2. 实现了core plugin API。
  3. 负责维护数据库信息。
  4. 通知linux bridge agent实现具体的网络功能。

linux bridge agent  

  1. 在计算节点和网络节点(或控制节点)上运行。  
  2. 接收来自plugin的请求。  
  3. 通过配置本节点上的linux bridge实现neutron网络功能,

network provider数量的增加两个突出的问题:

  1. 只能在OpenStack中使用一种core plugin,多种network provider无法共存。

Core plugin 负责管理和维护 Neutron 的 network, subnet 和 port 的状态信息,这些信息是全局的,只需要也只能由一个 core plugin 管理。只使用一个 core plugin 本身没有问题。但问题在于传统的 core plugin 与 core plugin agent 是一一对应的。也就是说,如果选择了linux bridge plugin,那么linux bridge agent将是唯一选择,就必须在OpenStack的所有节点上使用Linux Bridge作为虚拟交换机(即network provider)。

  1. 不同plugin之间存在大量重复代码,开发新的plugin工作量大。 下一节将深入讨论这两个问题的成因以

ML2能解决传统core plugin的问题

ML2作为新一代的core plugin,提供了一个框架,允许在OpenStack网络中同时使用多种Layer 2网络技术,不同的节点可以使用不同的网络实现机制ML2 不但支持异构部署方案,同时能够与现有的 agent 无缝集成:以前用的 agent 不需要变,只需要将 Neutron server 上的传统 core plugin 替换为 ML2。有了 ML2,要支持新的 network provider 就变得简单多了:无需从头开发 core plugin,只需要开发相应的 mechanism driver,大大减少了要编写和维护的代码。

ML2 对二层网络进行抽象和建模,引入了 type driver 和 mechanism driver。这两类 driver 解耦了 Neutron 所支持的网络类型(type)与访问这些网络类型的机制(mechanism),其结果就是使得 ML2 具有非常好的弹性,易于扩展,能够灵活支持多种 type 和 mechanism。

Type Driver

Neutron 支持的每一种网络类型都有一个对应的 ML2 type driver。

type driver 负责维护网络类型的状态,执行验证,创建网络等。

ML2 支持的网络类型包括 local, flat, vlan, vxlan 和 gre。

Mechansim Driver

Neutron 支持的每一种网络机制都有一个对应的 ML2 mechansim driver。

mechanism driver 负责获取由 type driver 维护的网络状态,并确保在相应的网络设备(物理或虚拟)上正确实现这些状态。

例:type driver 为 vlan,mechansim driver 为 linux bridge,我们要完成的操作是创建 network vlan100,那么:

(1)vlan type driver 会确保将 vlan100 的信息保存到 Neutron 数据库中,包括 network 的名称,vlan ID 等。

(2)linux bridge mechanism driver 会确保各节点上的 linux brige agent 在物理网卡上创建 ID 为 100 的 vlan 设备 和 brige 设备,并将两者进行桥接。

mechanism driver 有三种类型

Agent-based

包括 linux bridge, open vswitch 等。

Controller-based

包括 OpenDaylight, VMWare NSX 等。

基于物理交换机

包括 Cisco Nexus, Arista, Mellanox 等。

DHCP

dhcp agent 通过 dnsmasq 为 instance 提供 dhcp 服务。

Routing

L3 agent 可以为 project(租户)创建 router,提供 Neutron subnet 之间的路由服务。路由功能默认通过 IPtables 实现。

Firewall

L3 agent 可以在 router 上配置防火墙策略,提供网络安全防护。另一个与安全相关的功能是 Security Group,也是通过 IPtables 实现。 Firewall 与 Security Group 的区别在于:

(1)Firewall 安全策略位于 router,保护的是某个 project 的所有 network。

(2)Security Group 安全策略位于 instance,保护的是单个 instance。

Load Balance

Neutron 默认通过 HAProxy 为 project 中的多个 instance 提供 load balance 服务。

Neutron架构

Neutron 通过 plugin 和 agent 提供的网络服务。

plugin 位于 Neutron server,包括 core plugin 和 service plugin。

agent 位于各个节点,负责实现网络服务。

core plugin 提供 L2 功能,ML2 是推荐的 plugin。

使用最广泛的 L2 agent 是 linux bridage 和 open vswitch。

service plugin 和 agent 提供扩展功能,包括 dhcp, routing, load balance, firewall, vpn 等

openstack流程图

1.虚拟机启动过程如下:

2.界面或命令行通过RESTful API向keystone获取认证信息。

3.keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。

4.界面或命令行通过RESTful API向nova-api发送一个boot instance的请求(携带auth-token)。

5.nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。

6.keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。

7.通过认证后nova-api和数据库通讯。

8.初始化新建虚拟机的数据库记录。

9.nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)。

10.nova-scheduler进程侦听消息队列,获取nova-api的请求。

11.nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。

12.对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。

13.nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟机请求的消息。

14.nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。

15.nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。(Flavor)

16.nova-conductor从消息队队列中拿到nova-compute请求消息。

17.nova-conductor根据消息查询虚拟机对应的信息。

18.nova-conductor从数据库中获得虚拟机对应信息。

19.nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。

20.nova-compute从对应的消息队列中获取虚拟机信息消息。

21.nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需要镜像。

22.glance-api向keystone认证token是否有效,并返回验证结果。

23.token验证通过,nova-compute获得虚拟机镜像信息(URL)。

24.nova-compute通过keystone的RESTfull API拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的网络信息。

25.neutron-server向keystone认证token是否有效,并返回验证结果。

26.token验证通过,nova-compute获得虚拟机网络信息。

27.nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。

28.cinder-api向keystone认证token是否有效,并返回验证结果。

29.token验证通过,nova-compute获得虚拟机持久化存储信息。

30.nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。

监控部署 nagios报警 zabbix报警图形化 elk监控日志

Nagios 可以监控的功能有:

1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);

2、监控主机资源(处理器负荷、磁盘利用率等);

3、简单地插件设计使得用户可以方便地扩展自己服务的检测方法;

4、并行服务检查机制;

5、具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;

6、当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);

7、可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;

8、自动的日志滚动功能;

9、可以支持并实现对主机的冗余监控;

10、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等; [1]

11、可以通过手机查看系统监控信息;

12、可指定自定义的事件处理控制器

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat隶属于Beats。目前Beats包含四种工具:

  1. Packetbeat(搜集网络流量数据)
  2. Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
  3. Filebeat(搜集文件数据)
  4. Winlogbeat(搜集 Windows 事件日志数据)

openstack发布云主机

网址/dashboard

管理员创建外网 不指定网关以地址段第一个为网关

项目创建内网

身份管理创建项目写入有意义的信息

写项目配额

为项目创建用户

用项目里的用户登录后做的操作要在项目栏里

创建项目网络 把共享对号点掉

创建子网地址不能和外网冲突

创建路由选择外部网络,其他默认

然后点击路由名称 点击接口 添加接口

选择子网 ip是做网关用的可以不指定

创建安全组 管理规则 添加规则

定制tcp 方向入口 端口80 确认

可以继续定制别的入口网络端口例如https 443

计算 创建秘钥对 创建镜像

在创建实例 创建

源里选择镜像

选择创建的项目的网络

选择创建的安全组

创建完绑定浮动ip 从外网分配一个

Docker

容器是根据namespace和cgroups实现的。容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。

所有的容器共享同一个 Host OS(内核空间)

docker是容器(container)的一种封装技术

为什么需要容器?容器到底解决的是什么问题?

简要的答案是:容器使软件具备了超强的可移植能力。

Docker 的核心组件包括:

一.Docker 客户端-Client最常用的 Docker 客户端是 docker 命令。通过 docker 我们可以方便地在 Host 上构建和运行容器。docker 支持很多操作(子命令)

二.Docker 服务器 - Docker daemon Docker daemon 是服务器组件,以 Linux 后台服务的方式运行。Docker daemon 运行在 Docker host 上,负责创建、运行、监控容器,构建、存储镜像。

三.Docker 镜像 - Image 可将 Docker 镜像看着只读模板,通过它可以创建 Docker 容器。例如某个镜像可能包含一个 Ubuntu 操作系统、一个 Apache HTTP Server 以及用户开发的 Web 应用。

镜像有多种生成方法:

1、可以从无到有开始创建镜像

2、也可以下载并使用别人创建好的现成的镜像

3、还可以在现有镜像上创建新的镜像

我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作 Dockerfile,通过执行 docker build <docker-file> 命令可以构建出 Docker 镜像

四.Docker  镜像仓库 - Registry Registry 是存放 Docker 镜像的仓库,Registry 分私有和公有两种。

五.Docker 容器 - ContainerDocker 容器就是 Docker 镜像的运行实例。用户可以通过 CLI(docker)或是 API 启动、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。

Docker image

所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。

只有容器层是可写的,容器层下面的所有镜像层都是只读的。

简单地说,Docker image是用来启动容器的只读模板,是容器启动所需要的rootfs,类似于虚拟机所使用的镜像。

·Remote docker hub:集中存储镜像的Web服务器地址。该部分的存在使得可以区分从不同镜像库中拉取的镜像。若Docker的镜像表示中缺少该部分,说明使用的是默认镜像库,即Docker官方镜像库。

·Namespace:类似于Github中的命名空间,是一个用户或组织中所有镜像的集合。

·Repository:类似于Git仓库,一个仓库可以有多个镜像,不同镜像通过tag来区分。

·Tag:类似Git仓库中的tag,一般用来区分同一类镜像的不同版本。

·Layer:镜像由一系列层组成,每层都用64位的十六进制数表示,非常类似于Git仓库中的commit。

·Image ID:镜像最上层的layer ID就是该镜像的ID,Repo:tag提供了易于人类识别的名字,而ID便于脚本处理、操作镜像。

·Id:Image的ID。通过上面的讨论,可以看到image ID实际上只是最上层的layer ID,所以docker inspect也适用于任意一层layer。

·Parent:该layer的父层,可以递归地获得某个image的所有layer信息。 ·Comment:非常类似于Git的commit message,可以为该层做一些历史记录,方便其他人理解。

基础镜像 base镜像 1.从0开始创建  2.不依赖任何镜像

在base镜像层上在创建镜像,镜像上创建容器

Dockerfile

对于 Docker 用户来说,最好的情况是不需要自己创建镜像。几乎所有常用的数据库、中间件、应用软件等都有现成的 Docker 官方镜像或其他人和组织创建的镜像,我们只需要稍作配置就可以直接使用。使用现成镜像的好处除了省去自己做镜像的工作量外,更重要的是可以利用前人的经验。特别是使用那些官方镜像,因为 Docker 的工程师知道如何更好的在容器中运行软件。

当然,某些情况下我们也不得不自己构建镜像,比如:

1. 找不到现成的镜像,比如自己开发的应用程序。

2. 需要在镜像中加入特定的功能,比如官方镜像几乎都不提供 ssh。

Dockerfile的基本结构

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。’#’ 为 Dockerfile 中的注释。

Docker隔离资源

Linux 使用了六种 namespace,分别对应六种资源:Mount、UTS、IPC、PID、Network 和 User,下面我们分别讨论。

Mount namespace

让容器看上去拥有整个文件系统。容器有自己的 / 目录,可以执行 mount 和 umount 命令。当然我们知道这些操作只在当前容器中生效,不会影响到 host 和其他容器。

UTS namespace

简单的说,UTS namespace 让容器有自己的 hostname。 默认情况下,容器的 hostname 是它的短ID,可以通过 -h 或 --hostname 参数设置。

IPC namespace

IPC namespace 让容器拥有自己的共享内存和信号量(semaphore)来实现进程间通信,而不会与 host 和其他容器的 IPC 混在一起。

PID namespace

我们前面提到过,容器在 host 中以进程的形式运行。而PID namespace 就是实现容器进程的 PID 不同于 host 中对应进程的 PID,容器中 PID=1 的进程当然也不是 host 的 init 进程。也就是说:容器拥有自己独立的一套 PID。

Network namespace

Network namespace 让容器拥有自己独立的网卡、IP、路由等资源。

User namespace

User namespace 让容器能够管理自己的用户,host 不能看到容器中创建的用户。

storage driver

分层结构使镜像和容器的创建、共享以及分发变得非常高效,而这些都要归功于 Docker storage driver。正是 storage driver 实现了多层数据的堆叠并为用户提供一个单一的合并之后的统一视图。

Docker 支持多种 storage driver,有 AUFS、Device Mapper、Btrfs、OverlayFS、VFS 和 ZFS。

Data Volume    

Data Volume 本质上是 Docker Host 文件系统中的目录或文件,能够直接被 mount 到容器的文件系统中。Data Volume 有以下特点:

1、Data Volume 是目录或文件,而非没有格式化的磁盘(块设备)。

2、容器可以读写 volume 中的数据。

3、volume 数据可以被永久的保存,即使使用它的容器已经销毁。

在具体的使用上,docker 提供了两种类型的 volume:bind mount 和 docker managed volume。

volume container 是专门为其他容器提供 volume 的容器。

Bind mount 是将 host 上已存在的目录或文件 mount 到容器。

docker managed volume 与 bind mount 在使用上的最大区别是不需要指定 mount 源,指明 mount point 就行了。

docker自动创建网络

none 网络 就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定使用 none 网络。

host 网络 连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。

bridge网络 Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定--network,创建的容器默认都会挂到 docker0 上。可以容器与镜像,与外部互通

容器访问外部通过SNAT(伪装)

外部访问容器通过端口映射

虚拟化raid5或6单个lun(卷)小于等于2tb

数据库raid10单个lun小于等于500Gb 数据盘最多可以用11块 其中有三块仲裁盘

不然寻址时间几何增长

额外

raid10:4d+4d   d(数据盘)数据库小文件随机io,会多次写惩罚,如果有奇偶校验会被打乱

raid5:7d+1p    p(校验盘)大文件连续io写惩罚次数少,不会打乱奇偶校验

raid6:6d+2p

项目方案 背景,目标

文档参考依据  根据中标文件 合同  需求

文档试用范围

项目计划 工作任务分解 人员分配计划  里程碑计划(什么时间干到什么样)  详细项目计划 甘特图

风险分析  人员风险,技术风险

管理  沟通  干系人  合作伙伴

总体实施方案 拓扑图加说明 用visio画

详细实施方案

测试方案 功能验证 性能验证(测试并发用loadrunner软件)

运维工作步骤

环境巡检(温度,湿度,ups,电)

虚拟机资源的使用情况

资源池的使用情况 不足会导致虚拟机批量宕机

硬件 服务器  交换机(经常出问题一般为端口自适应) 存储   流入流出速率,状态指示灯

检测计划任务

如果出现告警 自己先有个初始判断,给相关领导发邮件(其中包含日志信息和相应的大概解决方案),然后给领导打电话,问是否同意按自己的方法解决,同意在解决  学会保护自己

记录 做告警故障记录什么时间发生 什么原因 由谁解决 解决时间

告警屏蔽,有些无关紧要的可以屏蔽

告警信息清除

负载均衡了解下F5  A10  深信服

基于bind的权威dns

变更目标 变更目的改ip地址段 升级内核等等   变更时间   变更人员(把相关人员都找过来,业务,数据库等等)

变更流程(由谁测试,由谁关机,由谁启动,细化到具体的人和时间)

变更测试

应急回退方案(如果未完成,怎么恢复状态,保障业务运行,变更前备份)

优化 io对齐

ybc云计算思维的更多相关文章

  1. RPAaaS是什么?为何能够推进RPA人人可用?

    RPAaaS是什么?为何能够推进RPA人人可用? 助力中小企业快速实现自动化,RPAaaS加速"RPA人人可用"时代到来 相对传统RPA拥有更多优势,PRAaaS为RPA行业带来更 ...

  2. Top100Summit全球案例研究峰会第一天总结——云计算和大数据

    很荣幸受邀参加Top100Summit全球软件案例研究峰会,这次的大会主题是<技术推动商业变革>,组委会从全国投稿的460多件案例中甄选出100件具有代表价值的案例,进行为期4天的分享,第 ...

  3. 王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程第14门课程:Android软硬整合设计与框架揭秘: HAL&Framework &Native Service &App&HTML5架构设计与实战开发

    掌握Android从底层开发到框架整合技术到上层App开发及HTML5的全部技术: 一次彻底的Android架构.思想和实战技术的洗礼: 彻底掌握Andorid HAL.Android Runtime ...

  4. 轮值CEO胡厚崑:到2025年所有的企业都将用到云(云的2.0时代,会有几千朵云几万朵云升起来,这将产生不同的技术模式、商业模式、思维模式)

    2016年09月04日 07:38 中国经营报   李凡 在全国工商联“2016年中国民营企业500强”排行榜上夺得头把交椅的华为,向外界描绘了面向未来进一步做大做强的路径. 华为创始人任正非于201 ...

  5. python socket编程---从使用Python开发一个Socket示例说到开发者的思维和习惯问题

    今天主要说的是一个开发者的思维和习惯问题. 思维包括编程的思维和解决一个具体问题的分析思维,分析思路,分析方法,甚至是分析工具. 无论是好习惯还是不好的习惯,都是在者一天一天的思维中形成的.那些不好的 ...

  6. openstack 5大组件之间的关系和基本架构思维导图

    云计算是一种按使用量付费的模式,这种模式提供可用的/便捷的/按需的网络访问,进入可配置的计算资源共享池(资源包括网络/服务器/存储/应用软件和服务),这些资源能够被快速提供,只需投入很少的管理工作或与 ...

  7. 5G的作业- 云计算

    作业命题:5G对于保险行业的影响,技术层面和业务模式层面 一.5G网络的特点: 5G网络主要有三大特点,极高的速率 enhanced mobile broadband (eMBB),极大的容量 Mas ...

  8. 国内云计算的缺失环节: GPU并行计算(转)

    [IT时代周刊编者按]云计算特有的优点和巨大的商业前景,让其成为了近年来的IT界最热门词汇之一.当然,这也与中国移动互联网的繁荣紧密相关,它们需要有相应的云计算服务作为支撑.但本文作者祁海江结合自身的 ...

  9. 从CPU/OS到虚拟机和云计算

      从CPU/OS到虚拟机和云计算  作者:张冬            关于软硬件谁为主导这个话题,套用一句谚语就是三十年河东三十年河西.风水轮流转.软件和硬件一定是相互促进.相互拆台又相互搭台的. ...

随机推荐

  1. .gitignore 配置后无效

    利用.gitignore过滤文件,如编译过程中的中间文件,等等,这些文件不需要被追踪管理. 现象: 在.gitignore添加file1文件,以过滤该文件,但是通过Git status查看仍显示fil ...

  2. Ruby已经慢慢走向衰退了,那些年代久远而且小众的语言没有翻身的可能性

    Ruby已经慢慢走向衰退了,现在WEB开发里,NODE.JS+前端各种框架是主流,PHP.ruby.Asp.net.python等语言在网站编程方面只会越来越少.数据领域方面,机器学习和人工智能中,p ...

  3. InnoExtractor可以解压一些安装文件,以获得其中的特殊文件

    you can use InnoExtractor unpack the installer file and get uniSimpleEnc.dcu file. https://www.board ...

  4. 记录一次PHP项目报502的问题

    问题描述 最近有台服务器偶尔会报502错误,虽然量不多,每天就几十个,但是也必须得找到原因,避免让小问题变成大问题. 排查过程 502错误的原因,一般是对用户访问请求的响应超时造成的,一开始以为是请求 ...

  5. python代码检查工具pylint 让你的python更规范

    1.pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅 ...

  6. Swagger API文档集中化注册管理

    接口文档是前后端开发对接时很重要的一个组件.手动编写接口文档既费时,又存在文档不能随代码及时更新的问题,因此产生了像swagger这样的自动生成接口文档的框架.swagger文档一般是随项目代码生成与 ...

  7. 自定义实现一个loghub(或kafka)的动态分片消费者负载均衡?

    一般地,像kafka之类的消息中间件,作为一个可以保持历史消息的组件,其消费模型一般是主动拉取方式.这是为了给消费者足够的自由,回滚或者前进. 然而,也正是由于将消费消息的权力交给了消费者,所以,消费 ...

  8. 【朝花夕拾】Android自定义View篇之(六)Android事件分发机制(中)从源码分析事件分发逻辑及经常遇到的一些“诡异”现象

    前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/11039252.html]谢谢! 在上一篇文章[[朝花夕拾]Android自定义View篇之(五 ...

  9. 向Rocket.Chat推送消息

    Rocket.Chat推送消息 Rocket.Chat是一个开源实时通讯平台, 支持Windows, Mac OS, Linux. 支持聊天, 文件上传, 视频通话, 语音通话功能. 向Rocket. ...

  10. python多线程爬取图片实例

    今天试着把前面那个爬取图片的爬虫改成了多线程爬取,虽然最后可以爬取存储图片了,但仍存在一些问题.网址还是那个网址https://www.quanjing.com/category/1286521/1. ...