云计算是一种采用按量付费的模式,基于虚拟化技术,将相应计算资源(如网络、存储等)池化后,提供便捷的、高可用的、高扩展性的、按需的服务(如计算、存储、应用程序和其他 IT 资源)。
VMware:
虚拟化平台产品:ESXi,管理工具:VMware vCenter套件(包括vCenter Server),VMware vCloud(主要管理公有云)。
RedHat:KVM,及基于KVM的虚拟化套件RHV
思杰:XEN
微软:
虚拟化平台产品:Virtual PC、Hyper-V,管理工具:System Center 2016.
Oracle:Oracle VM Server(集成XEN+Linux内核)
云计算:IT能力服务化,按需使用,按量计费,多租户隔离,是一个系统的轻量级管理控制面。
虚拟化:环境隔离,资源复用,降低隔离损耗,提升运行性能,提供高级虚拟化特性。
虚拟化是实现云计算的技术支撑之一,但并非云计算的核心关注点。
OpenStack、Apache CloudStack
由mysql的多主集群决定,通常情况下,openstack集群的数据库:mysql集群部署在controller节点。
软件定义网络(Software Defined Network, SDN ),指通过软件定义网络,是网络虚拟化的一种实现方式.
SDN的主要技术特点体现在3方面:
一个开源云操作系统内核,用于构建云平台,主要实现以下五个主要特点:
Domain:表示 project 和 user 的集合,在公有云或者私有云中常常表示一个客户
Group:一个domain 中的部分用户的集合
Project:IT基础设施资源的集合,比如虚机,卷,镜像等
Role:角色,表示一个 user 对一个 project resource 的权限
Token:一个 user 对于某个目标(project 或者 domain)的一个有限时间段内的身份令牌
虚拟机存储在计算节点的/var/lib/nova/instances目录。
因为Glance服务运行在控制节点上,所以Glance镜像都被存储在控制节点的/var/lib/glance/images目录。
openstack server create --flavor {flavor-name} --image {Image-Name-Or-Image-ID} --nic net-id={Network-ID} --security-group {Security_Group_ID} –key-name {Keypair-Name} <VM_Name>
# ip netns list
假设我们想在 qdhcp-a51635b1-d023-419a-93b5-39de47755d2d 网络命名空间中执行 ifconfig 命令,可以执行如下命令。
命令格式 : ip netns exec {network-space} <command>:
# ip netns exec qdhcp-a51635b1-d023-419a-93b5-39de47755d2d "ifconfig"
# openstack image create --disk-format qcow2 --container-format bare --public --file {Name-Cloud-Image}.qcow2 <Cloud-Image-Name> #上传
# glance image-download --file <Cloud-Image-Name> --progress <Image-ID> #下载
# nova reset-state --active {Instance_id}
# openstack ip floating list | grep None | head -10
# openstack server create --flavor m1.tiny --image cirros --nic net-id=e0be93b8-728b-4d4d-a272-7d672b2560a6 --security-group NonProd_SG --key-name linuxtec --availability-zone NonProduction:compute-02 nonprod_testvm
命令格式: openstack server list –all-projects –long -c Name -c Host | grep -i {Compute-Node-Name}:
# openstack server list --all-projects --long -c Name -c Host | grep -i compute-0-19
# openstack console log show {Instance-id}
# openstack console url show {Instance-id}
# openstack image list | grep -i cirros #获取镜像列表
| 89254d46-a54b-4bc8-8e4d-658287c7ee92 | cirros | active |
# cinder create --image-id 89254d46-a54b-4bc8-8e4d-658287c7ee92 --display-name cirros-bootable-vol 8 #使用cirros镜像创建8G启动卷
# openstack project list --long
OpenStack 服务端点被分为 3 类:
使用如下 OpenStack 命令来查看各种 OpenStack 服务端点:
# openstack catalog list
可通过以下命令来显示特定服务端点(比如说 keystone)列表:
# openstack catalog show keystone
# service nova-api restart
# service nova-cert restart
# service nova-conductor restart
# service nova-consoleauth restart
# service nova-scheduler restart
# neutron security-group-rule-create --protocol <tcp or udp> --port-range-min <port-number> --port-range-max <port-number> --direction <ingress or egress> --remote-ip-prefix <IP-address-or-range> Security-Group-Name
# ovs-vsctl show
集成桥(br-int)对来自和运行在计算节点上的实例的流量执行 VLAN 标记和取消标记。
数据包从实例的 n/w 接口发出使用虚拟接口 qvo 通过 Linux 桥(qbr)。qvb 接口是用来连接 Linux 桥的,qvo 接口是用来连接集成桥的。集成桥上的 qvo 端口有一个内部 VLAN 标签,这个标签是用于当数据包到达集成桥的时候贴到数据包头部的。
隧道桥(br-tun)根据 OpenFlow 规则将 VLAN 标记的流量从集成网桥转换为隧道 ID。
隧道桥允许不同网络的实例彼此进行通信。隧道有利于封装在非安全网络上传输的流量,它支持两层网络,即 GRE 和 VXLAN。
外部OVS网桥转发来往网络的流量,以允许外部访问实例。br-ex 连接物理接口比如 eth2,这样用户网络的浮动 IP 数据从物理网络接收并路由到用户网络端口。
OpenStack中有至少两种通信机制, RESTful API和RPC调用。
RESTFUL API是一套架构约束条件和原则
其他
RPC协议,即远程过程调用(Remote Procedure Call Protocol)
RPC采用AMQP协议实现进程间通信。openstack中采用rabbitmq和qpid。
AMQP:高级消息队列,基于消息的中间件提供的开放的应用层标准协议。能够有效地支持各种通信模型或者报文传送方面的应用。
Provider network:管理员创建的和物理网络有直接映射关系的虚拟网络。
Tenant network:租户普通用户创建的网络,物理网络对创建者透明,其配置由Neutron根据管理员在系统中的配置决定。
Flat network:基于不使用 VLAN 的物理网络实现的虚拟网络。每个物理网络最多只能实现一个虚拟网络。
local network(本地网络):一个只允许在本服务器内通信的虚拟网络,不进行跨服务器的通信。主要用于单节点上测试。
VLAN network(虚拟局域网) :基于物理 VLAN 网络实现的虚拟网络。共享同一个物理网络的多个 VLAN 网络是相互隔离的,甚至可以使用重叠的 IP 地址空间。每个支持 VLAN network 的物理网络可以被视为一个分离的 VLAN trunk,它使用一组独占的 VLAN ID。有效的 VLAN ID 范围是 1 到 4094。
GRE network (通用路由封装网络):一个使用 GRE 封装网络包的虚拟网络。GRE 封装的数据包基于 IP 路由表来进行路由,因此 GRE network 不和具体的物理网络绑定。
VXLAN network(虚拟可扩展网络):基于 VXLAN 实现的虚拟网络。同 GRE network 一样, VXLAN network 中 IP 包的路由也基于 IP 路由表,也不和具体的物理网络绑定。
OpenFlow 规则是一种机制,这种机制定义了一个数据包如何从源到达目的地。OpenFlow 规则存储在 flow 表中。flow 表是 OpenFlow 交换机的一部分。
当一个数据包到达交换机就会被第一个 flow 表检查,如果不匹配 flow 表中的任何入口,那这个数据包就会被丢弃或者转发到其他 flow 表中。
假如我们要显示 OpenFlow 交换机的信息(br-int),需要执行如下命令:
# ovs-ofctl show br-int
可以使用命令 ovs-ofctl dump-flows 来查看交换机的 flow 入口。
假设我们想显示 OVS 集成桥(br-int)的所有 flow 入口,可以使用如下命令:
# ovs-ofctl dump-flows br-int
OpenStack Neutron 服务器充当中心控制器,实际网络配置是在计算节点或者网络节点上执行的。Neutron 代理是计算节点或者网络节点上进行配置更新的软件实体。Neutron 代理通过 Neuron 服务和消息队列来和中心 Neutron 服务通信。
可通过如下命令查看 Neutron 代理列表:
# openstack network agent list -c ‘Agent type’ -c Host -c Alive -c State
CPU Pinning 是指为某个虚拟机保留物理核心。它也称为 CPU 隔离或处理器关联。有两个目的:
我们也可以认为 Pinning 是物理核心到一个用户虚拟 CPU(vCPU)的一对一映射。
租户之间的网络是三层隔离的,即使通过VR也无法通信,若需要通信必须走物理网络
一个租户内的不同网络之间二层隔离的,需要通过 VR 做三层连通
一个网络内的不同子网也是二层隔离的,需要通过 VR 做三层连通
Neutron提供数据网络与外部网络的隔离性,默认情况下,所有虚机通往外网的流量全部走网络节点上的 L3 agent,内部的固定IP被转化为外部的浮动IP地址。
相同组租户的的虚拟机位于同一个宿主机之间的通讯?
不同租户之间的虚拟机之间的通讯?
参考:http://www.mamicode.com/info-detail-1485454.html
参考:https://www.sdnlab.com/13000.html
DevStack,Rdo ,SaltStack ,Ansible ,TripleO
块存储 | 文件存储 | 对象存储 | |
---|---|---|---|
使用方式 | 块存储主要是将裸磁盘空间整个映射给主机使用的。 | 文件存储可直接提供给主机使用,从而实现文件的上传和下载,且无需对文件存储再进行格式化。 | 基于网络的数据存取服务,可通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。 |
典型设备 | RAID、DISK、DAS、SAN | HDFS、RGFS | SWIFT、OSS |
优点 | 1. 通过RAID与LVM等手段,对数据提供了保护; 2. 可将多块廉价的硬盘组合为一个大容量的逻辑盘对外提供服务,提高了容量; 3. 多块磁盘进行组合,能实现并行写入,提升了读写效率; 4. 当块存储采用SAN架构组网时,传输速度以及封装协议的原因,使得传输速度和读写效率得到提升。 | 1. 成本低廉,普通以太网即可实现,无需其他专用设备; 2. 方便文件共享。 | 1. 兼具块存储和文件存储的优点。 |
缺点 | 1. 当块存储采用SAN架构组网时,需要额外光纤通道卡及光纤交换机,增加成本; 2. 在非集群环境中,块存储裸盘映射给主机,其他节点无法使用,从而无法实现主机之间数据的共享; 3. 当块存储作为某主机裸设备格式化之后,不利于不同操作系统主机(不同文件格式)间的数据共享。 | 1. 基于以太网,读写速率低,传输速率慢。 | 1. 不兼容现有模式,应用形态需要重新开发。 |
接口 | Driver | POSIX | Restful API |
RTO(Recovery Time Objective):RTO指服务恢复的时间,最佳的情况是 0,即服务立即恢复;最坏是无穷大,即服务永远无法恢复;
RPO(Recovery Point Objective):RPO 指切换时向前恢复的数据的时间长度,0 意味着使用同步的数据,大于 0 意味着有数据丢失,如“RPO=1 d”指恢复时使用一天前的数据,那么一天之内的数据就丢失了。因此,恢复的最佳情况是 RTO = RPO = 0,几乎无法实现。
Active/Passive HA:集群包括两个角色节点简称主备。在此配置下,系统采用主和备用节点提供服务,系统只在主节点上提供服务。在主节点故障时,备节点上的服务被启动来替代主节点提供的服务。典型地,如采用 Pacemaker 来控制主备设备之间的切换,并提供一个虚机 IP 来提供服务。
Active/Active HA:集群只包括两个节点时简称双活,包括多节点时成为多主(Multi-master)。在此配置下,系统在集群内所有服务器上运行同样的负载。以数据库为例,对一个实例的更新,会被同步到所有实例上。如采用负载均衡软件HAProxy 来提供服务的虚拟 IP。
RPO(Recovery Point Objective):指当灾难发生时允许丢失的数据量;
RTO(Recovery Time Object):指系统恢复的时间。
RPO 与 RTO 越小,系统的可用性就越高,成本投资也越大。
级别 | 定义 | RTO | RPO |
---|---|---|---|
数据级 | 指通过建立异地容灾中心,对数据进行远程备份,在灾难发生之后要确保原有的数据不会丢失或者遭到破坏。但在数据级容灾这个级别,发生灾难时应用是会中断的。 在数据级容灾方式下,所建立的异地容灾中心相当于一个远程的数据备份中心。 数据级容灾的恢复时间比较长,但是相比其他容灾级别来讲它的费用比较低,且构建实施相对简单。 | RTO最长(若干天),因为灾难发生时,需要重新部署机器,利用备份数据恢复业务。 | 最低 |
应用级 | 在数据级容灾的基础之上,在备份站点同样构建一套相同的应用系统,通过同步或异步复制方式,可保证关键应用在允许的时间范围内恢复运行,尽可能减少灾难带来的损失,让用户基本感受不到灾难的发生,从而使系统所提供的服务是完整的、可靠的和安全的。 | RTO中等(若干小时) | 中等。异地可搭建一样的系统,或者精简系统。 |
业务级 | 全业务的灾备,除了必要的IT相关技术,还要求具备全部的基础设施。其大部分内容是非IT系统(如电话、办公地点等),当大灾难发生后,原有的办公场所都会受到破坏,除了数据和应用的恢复,更需要一个备份的工作场所能够正常的开展业务。 | RTO最小(若干分钟或者秒) | 最高 |
Rabbitmq最核心的组件是Exchange和Queue,其通信机制如下:
参考:https://linux.cn/article-10328-1.html