赞
踩
本文按照老师ppt,不完全遵从书的章节顺序及内容,仅供参考
云计算是一种无处不在、便捷且按需对一个共享的可配置计算资源(包括网络、服务器、存储、应用和服务)进行网络访问的模式,它能够通过最少量的管理以及与服务提供商的互动实现计算资源的迅速供给和释放
1.弹性伸缩
2.快速部署
3.资源抽象
4.按用量收费
5.宽带访问
(1)公共云
(2)私有云(或称专属云)
(3)社区云
(4)混合云
(5)行业云
(6)其他云类型
(1)基础设施即服务(Infrastructure as a Service,IaaS)
付费的虚拟主机、内部云平台
(2)平台即服务(Platform as a Service,PaaS)
Tomcat 服务器
(3)软件即服务(Software as a Service,SaaS)
在两个或多个软件互相共享信息,这 些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行
数据库事务正常执行的四个原则
原子性(Atomicity)
事务里的所有操作要么全部做完,要么都不做
一致性(Consistency)
数据库要一直处于一致 的状态
独立性(Isolation)
并发的事务之间不会互相影响
持久性(Durability)
一旦事务提交后,它所做的修改将会永久保存在数据库上
一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
基本可用(Basically Available)
分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用
软状态( Soft State)
允许系统存在中间状态,而该中间状态不会影响系统整体可用性
允许不同节点间副本同步的延时
最终一致性(Eventual Consistency)
系统中的所有数据副本经过一定时间后,最终能够达到一致的状态
DNS系统
假如A先写入了一个值到存储系统,存储系统保证后续A、 B、C的读取操作都将返回最新值
假如A先写入了一个值到存储系统,存储系统不能保证后续A、B、C的读取操作能读取到最新值
结构化存储
关系型数据库
非结构化存储
HDFS
半结构化存储
NoSQL
In-memory 存储
Redis
NewSQL
Spanner
1.服务器虚拟化
2.网络虚拟化
3.桌面虚拟化
4.软件定义的存储
(1)全虚拟化
使用VMM二进制翻译客户操作系统的请求
虚拟化软件层将操作系统的 指令翻译并将结果缓存供之后使用,而用户级指令无须修改就可以运行,具有和物理机一样的执行速度
(2)半虚拟化 (类虚拟化)
(3)硬件辅助虚拟化(完全虚拟化)
KVM的运行需要主机是x86架构且硬件支持虚拟化技
能在不改变Linux或Windows镜像的情况下同时运行多个虚拟机,并为每一个虚拟机配置个性化硬件环境
check [-f fmt] filename
对磁盘镜像文件进行一致性检查,查找镜像文件中的错误
参数-f fmt是指定文件的格式,filename是磁盘镜像文件的名称(包括路径)。
create [-f fmt] [-o options] filename [size]
创建一个格式为fmt大小为size文件名为filename的镜像文件。
根据文件格式fmt的不同,还可以添加一个或多个选项(options)来附加对该文件的各种功能设置,可以使用“-o ?”来查询某种格式文件支持那些选项,在“-o”选项中各个选项用逗号来分隔。
size选项用于指定镜像文件的大小,其默认单位是字节(bytes)
例:qemu-img create -f raw windows 4G
convert [-c] [-f fmt] [-O output_fmt] [-o options] filename% [filename2 […]] output_filename
将fmt格式的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件
例:qemu-img convert my-vmware.vmdk my-kvm.img
info [-f fmt] filename
展示filename镜像文件的信息
例:qemu-img info rhel6u3.img
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
“-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜像文件使用某个快照,“-c snapshot”是创建一个快照,“-d”是删除一个快照。
rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令。使用“-b backing_file”中指定的文件作为后端镜像,后端镜像也被转化为“-F backing_fmt”中指定的后端镜像格式
qemu-kvm [options] [disk_image]
opions 是各种选项、参数,disk_image 是客户机的磁盘镜像文件(默认被挂载为第一个 IDE 磁盘设备)
指定cpu模型,默认的为qemu64
设置客户机内存大小为 megs MB。默认单位:MB,可设置 GB
指定IDE磁盘,后面可以跟磁盘镜像文件
使用指定file作为CD-ROM镜像,需要注意的是-cdrom和-hdc不能同时使用:将file指定为/dev/cdrom可以直接使用物理光驱
定义启动设备的引导次序,每种设备使用一个字符表示:不同的架构所支持的设备及其表示字符不尽相同,由软盘(a)、硬盘©或CD-ROM(d)启动,n-p表示网络适配器,默认为硬盘设备。
例如:-boot order=dc,once=d
指定VNC管理地址
默认情况下,qemu使用SDL显示VGA输出:使用-vnc选线,可以让qemu监听在vnc上,并将VGA输出重定向到VNC会话,使用此选项时,必须使用-k选项指定键盘布局类型,其有许多子选项,具体参考qemu-kvm的手册
display:
1)host:N
172.16.100.7:1,监听于172.16.100.7主机的5900+N的端口上
2)unix:/path/to/socket_file
3)none
options:
password:连接时需要验证密码:设定密码通过monitor接口使用change
reverse:“反向”连接至某处于监听状态的vncview上:
用于配置网络信息,如配置IP地址、VLAN信息、 MAC地址信息等
nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]:
/lib/libexec/qemu-kvm -vnc :3 -cdrom win98.iso -m 256 -boot d windows
win98.iso已经预先上传至该目录
该文件作为CD-ROM镜像
安装过程通过vnc viewer远程控制(5900+?端口)
内存256Mb
CD-ROM启动
<domain type='kvm'> //虚拟机管理程序为kvm <name>windows</name> //虚拟机名字 <uuid>76468be4-d974-3d5e-095a-68a520cc6219</uuid> //全球唯一标识符,uuidgen生成 <memory>262144</memory> //可以分配到的最大内存 <currentMemory>262144</currentMemory> //实际分配到的内存 <vcpu>1</vcpu> //最多分配CPU个数 <os> <type arch='x86_64' machine='pc'>hvm</type> //x86_64架构,pc类型的机器,pv是半虚拟化,hvm是全虚拟化 <boot dev='cdrom'/> //fd(软盘)、hd(硬盘)、cdrom(只读光盘)、network,它经常被用来指定下一次启动 </os> <features> <acpi/> <apic/> </features> <clock offset='localtime'/> //UTC:当引导时客户端时钟同步到UTC时钟 //localtime:当引导时客户端时钟同步到主机时钟所在的时区 <on_poweroff>destroy</on_poweroff> //当客户端请求poweroff时执行特定的动作 <on_reboot>restart</on_reboot> //当客户端请求reboot时执行特定的动作 <on_crash>restart</on_crash> //当客户端崩溃时执行的动作 //destory:domain将会被完全终止,domain的所有资源会被释放 //restart:domain会被终止,然后以相同的配置重新启动 //preserver:domain会被终止,它的资源会被保留用来分析 //rename-restart:domain会被终止,然后以一个新名字被重新启动 <devices> <emulator>/usr/libexec/qemu-kvm</emulator> //指定模拟设备二进制文件的全路径 <disk type='file' device='disk'> //硬盘 <driver name='qemu' type='qcow2' cache='none'/> //name属性选择一个主要的后端驱动的名称,可选type参数可以指定一个子类型,cache属性控制cache机制 <source file='/var/lib/libvirt/images/win'/>//在disk的type是file时,file属性指定一个合格的全路径文件映像作为客户端的磁盘 <target dev='hda' bus='ide'/> //dev属性表明本地磁盘在客户端上的实际名称,bus属性指定了哪种类型的磁盘被模拟 </disk> <disk type='file' device='cdrom'> //光盘 <driver name='qemu' type='raw'/> <source file='/home/ISOs/WindowsXP_SP2.iso'/> <target dev='hdc' bus='ide'/> <readonly/> //指定客户端不能修改设备 </disk> <controller type='pci' index='0' model='pci-root'/> //控制器 <input type='mouse' bus='ps2'/> <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'/> //本机ip,端口号5900 </devices> </domain>
virsh define windows.xml
virsh start windows
应用程序不可能导致系统死机,驱动程序可能
分布式存储系统是将为数众 多的普通计算机或服务器通过网络进行连接,同时对 外提供一个整体的存储服务。
通过将磁盘存储系统和服务器 直接相连的方式提供一个易扩 展、高可靠的存储环境,高可 靠的光纤通道交换机和光纤通 道网络协议保证各个设备间链 接的可靠性和高效性。设备间 的连接接口主要是采用FC或者 SCSI
通过基于TCP/IP的各种上层 应用在各工作站和服务器之 间进行文件访问,直接在工 作站客户端和NAS文件共享 设备之间建立连接,NAS隐 藏了文件系统的底层实现, 注重上层的文件服务实现, 具有良好的扩展性
Ceph是一个统一的、分布式的存储系统。
① 统一:意味着Ceph可以以一套存储系统同时提供“对象 存储”“块存储”和“文件系统”三种功能,以满足不同 应用的需求。
② 分布式:意味着无中心结构和系统规模的无限(至少理 论上没有限制)扩展。在实践当中,Ceph可以被部署于成 千上万台服务器上。
设计思路
充分发挥存储设备自身的计算能力
去除所有的中心点
SDN并不会为网络引入新的网络功能,SDN的主要功能是解决如何让网络的控制逻辑更好地控制网络中交换机和路由器的行为
利用虚拟化技术,将网络节点阶层的功能,分割成几个功能区块,分别以软件方式实现,不再局限于硬件架构
(1)SAN和NAS的区别是什么
1.结构不同,NAS有自己的文件系统管理
2.目标不同,NAS是将目光集中在应用、用户和文件以及它们共享的数据上。SAN是将目光集中在磁盘、磁带以及联接它们的可靠的基础结构。
(2)在云计算服务的供应关系中,云服务供应商的客户被 称为租户
(3)两种不同的云计算服务架构便是“单租户 架构”(Single-Tenancy)和“多租户架构”(Multi- Tenancy)
(1)向身份端点(Identity endpoint)请求一个认证令牌。在 该请求中包括一个凭证。
(2)如果请求成功,服务器会返回一个认证令牌。
(3)发送API请求,并在X-Auth-Token头部包括上一步返回 的认证令牌。可以一直使用这个令牌发送API请求,直到服务 完成该请求,或者出现未授权(401)的错误。
(4)如果遇到未授权(401)的错误,则重新请求另一个令牌。
curl -v -s -X POST $OS_AUTH_URL/auth/tokens?nocatalog -H
"Content-Type: application/json" -d '{ "auth": { "identity": { "methods":
["password"],"password": {"user": {"domain": {"name":
"'"$OS_USER_DOMAIN_NAME"'"},"name": "'"$OS_USERNAME"'",
"password": "'"$OS_PASSWORD"'"} } }, "scope": { "project": { "domain":
{ "name": "'"$OS_PROJECT_DOMAIN_NAME"'" }, "name":
"'"$OS_PROJECT_NAME"'" } } }}' | python -m json.tool
(1)导出OS_TOKEN环境变量,将其值设为令牌ID(上例中XSubject-Token值)。默认令牌每一小时过期,可以配置不同的生存期。
(2)设置OS_PROJECT_NAME环境变量,例如: export OS_PROJECT_NAME=demo
(3)设置OS_COMPUTE_API环境变量,
例如:export OS_COMPUTE_API=http://172.20.2.227:8774/v2.1/
(4)使用Compute API列出实例类型,例如: curl -s -H “X-Auth-Token: $OS_TOKEN” $OS_COMPUTE_API/flavors | python -m json.tool
(5)通过-X来指定请求时的HTTP方法
(6)通过-H来添加Header信息,后面同样是跟键值对,不过不需要大括号
一份代码库与多份部署
显式声明依赖关系
在环境中存储配置
把后端服务当作附加资源
严格分离构建和运行
以一个或多个无状态进程运行应用
通过端口绑定提供服务
通过进程模型进行扩展
快速启动和优雅终止可最大化健壮性
尽可能保持开发与预发布线上环境相同
把日志当作事件流
后台管理任务当作一次性进程运行
◦ Container Service
◦ X Service
◦ Web Service
◦ SOAP是针对RPC的一种通用解决方案,而RESTful是面向远 程资源操作的解决方案。
◦ RESTful的操作限于对资源的CRUD操作,有局限性,而 SOAP可以自定义操作方法。
◦ RESTful从根本上保证服务是无状态的,而SOAP并未限制服 务的模式(可以是stateless或者stateful)。
◦ RESTful以HTTP作为应用协议(不同HTTP请求方法对应CRUD操作),而不仅仅是传输协议,因而通信开销最小。
◦ 简化部署:应用打包成单一地址访问、Registry存储、通过 单一命令就可以部署完成的组件
◦ 快速启动:容器技术对操作系统的资源进行抽象而非对硬 件资源进虚拟化,打包好的服务可以快速启动
◦ 服务组合:采用容器的方式进行部署,整个系统会变得易于组合
◦ 易于迁移:允许用户对工作负载进行迁移,避免局限于单 一的平台提供商
(1)sa-webapp
# Base images 基础镜像 FROM centos #MAINTAINER 维护者信息 MAINTAINER tianfeiyu #ENV 设置环境变量 ENV PATH /usr/local/nginx/sbin:$PATH #COPY :复制本地主机的 (为 Dockerfile 所在目录的相对路径)到容器中的 COPY sa /app #ADD 文件放在当前目录下,拷过去会自动解压(相当于 COPY,但是比 COPY 功能更强大) ADD nginx-1.8.0.tar.gz /usr/local/ ADD epel-release-latest-7.noarch.rpm /usr/local/ #RUN 执行以下命令 RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all RUN useradd -s /sbin/nologin -M www #WORKDIR 相当于cd WORKDIR /usr/local/nginx-1.8.0 #VOLUME:挂载目录 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install RUN echo "daemon off;" >> /etc/nginx.conf #字符串写入文件 #EXPOSE 映射端口 EXPOSE 80 #CMD 运行以下命令 CMD ["nginx"]
◦ 让用户控制容器启动和停止的时间、将其组合到集群中, 以及协调应用组合的流程。
◦ 允许用户指导容器部署与自动更新、运行状况监控以及故 障转移等。
(1)sa-frontend-pod.yaml
apiVersion: v1
kind: Pod # 1 指定想创建的 Kubernetes 资源的类型,这里是 Pod
metadata:
name: sa-frontend # 2定义该资源的名字,在这里命名为 sa-frontend
labels:
app: sa-frontend
spec: # 3 定义了资源应有的状态,Pod Spec 中最重要的属性是容器的数组
containers:
- image: xieqian02/sa-frontend # 4希望在本 Pod 中启动的容器的映像
name: sa-frontend # 5 Pod 中容器的名字
ports:
- containerPort: 80 # 6是指容器监听的端口号
(2)deployment
apiVersion: apps/v1 #指定api版本标签 kind: Deployment #定义资源的类型/角色,deployment为控制器 metadata: #定义资源的元数据信息 name: nginx-test #定义资源的名称,在同一个namespace空间中必须是唯一的 labels: #定义资源标签 app: nginx spec: replicas: 3 #定义副本数量 selector: #定义选择器 matchLabels: #匹配上面的标签 app: nginx #匹配模板名称 template: #定义模板 metadata: labels: app: nginx spec: containers: #定义容器信息 - name: nginx #容器名,与标签名要相同 image: nginx:1.15.4 #容器使用的镜像以及版本 ports: - containerPort: 80 #定义容器的对外端口
(3)service
apiVersion: v1
kind: Service # 指明资源类型是 service
metadata:
name: httpd-svc # service 的名字是 httpd-svc
labels:
name: httpd-svc
spec:
ports: # 将 service 8080 端口映射到 pod 的 80 端口,使用 TCP 协议
- port: 8080
targetPort: 80
protocol: TCP
selector:
run: httpd # 指明哪些 label 的 pod 作为 service 的后端
未完待续
这个和机器学习一起更,肝不动了
直接肝完后面
完结撒花✿✿ヽ(°▽°)ノ✿
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。