016.OpenStack及云计算(面试)常见问题
程序员文章站
2023-10-12 15:28:09
什么是云计算? 云计算是一种采用按量付费的模式,基于虚拟化技术,将相应计算资源(如网络、存储等)池化后,提供便捷的、高可用的、高扩展性的、按需的服务(如计算、存储、应用程序和其他 IT 资源)。 云计算的基本特征? 自主服务:可按需的获取云端的相应资源(主要指公有云); 网路访问:可随时随地使用任何 ......
- 什么是云计算?
云计算是一种采用按量付费的模式,基于虚拟化技术,将相应计算资源(如网络、存储等)池化后,提供便捷的、高可用的、高扩展性的、按需的服务(如计算、存储、应用程序和其他 it 资源)。
- 云计算的基本特征?
- 自主服务:可按需的获取云端的相应资源(主要指公有云);
- 网路访问:可随时随地使用任何联网终端设备接入云端从而使用相应资源。
- 资源池化:
- 快速弹性:可方便、快捷地按需获取和释放计算资源。
- 按量计费:
- 云计算常见几种部署模式?
- 私有云:云平台资源只给某个单位、或某部分用户内部使用。
- 公有云:云平台资源开放给社会公众服务。
- 社区云:云平台资源给几个固定的单位内使用。
- 混合云:两个或两个以上不同类型的云平台。
- 云计算的三种服务模式?
- iaas:基础设施即服务,云服务商将it系统的基础设施(如计算资源、存储资源、网络资源)池化后作为服务进行售卖;
- paas:平台即服务,云服务商将it系统的平台软件层(数据库、os、中间件、运行库)作为服务进行售卖;
- saas:软件即服务,云服务商将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能力服务化,按需使用,按量计费,多租户隔离,是一个系统的轻量级管理控制面。
虚拟化:环境隔离,资源复用,降低隔离损耗,提升运行性能,提供高级虚拟化特性。
虚拟化是实现云计算的技术支撑之一,但并非云计算的核心关注点。
- 常见的iaas管理工具?
openstack、apache cloudstack
- 私有云相对于公有云有哪些优势?
- 数据安全性更高;
- 可节省上云迁移过程中的大量成本;
- 业务快速部署,缩短业务周期;
- 降低企业成本,自主可控。
- 在openstack高可用架构中,controller节点为什么通常至少有3个节点?
由mysql的多主集群决定,通常情况下,openstack集群的数据库:mysql集群部署在controller节点。
- 简单描述sdn?
软件定义网络(software defined network, sdn ),指通过软件定义网络,是网络虚拟化的一种实现方式.
sdn的主要技术特点体现在3方面:
- 转发与控制分离。sdn具有转发与控制分离的特点,采用sdn控制器实现网络拓扑的收集、路由的计算、流表的生成及下发、网络的管理与控制等功能;而网络层设备仅负责流量的转发及策略的执行。通过这种方式可使得网络系统的转发面和控制面独立发展,转发面向通用化、简单化发展,成本可逐步降低;控制面可向集中化、统一化发展,具有更强的性能和容量。
- 控制逻辑集中。转发与控制分离之后,使得控制面向集中化发展。控制面的集中化,使得sdn控制器拥有网络的全局静态拓扑,全网的动态转发表信息,全网络的资源利用率,故障状态等。因此,sdn控制器可实现基于网络级别的统一管理、控制和优化,更可依托全局的拓扑的动态转发信息帮助实现快速的故障定位和排除,提高运营效率。
- 网络能力开放化。sdn还有一个重要特征是支持网络能力开放化。通过集中的sdn控制器实现网络资源的统一管理、整合以及虚拟化后,采用规范化的北向接口为上层应用提供按需分配的网络资源及服务,进而实现网络能力开放。这样的方式打破了现有网络对业务封闭的问题,是一种突破性的创新。
- 什么是openstack?
一个开源云操作系统内核,用于构建云平台,主要实现以下五个主要特点:
- 资源抽象:openstack将各类硬件资源,通过虚拟化与软件定义的形式,抽象成虚拟的资源池;
- 资源调度:openstack根据管理员/用户的需求,将资源池中的资源分配给不同的用户,承载不同的应用;
- 应用生命周期管理:openstack可以提供初步的应用部署/撤销、自动规模调整等功能;
- 系统运维:openstack可以提供一定的系统监控能力;
- 人机交互:openstack提供人机接口,外界可通过api、cli或图形界面的方式与openstack进行交互。
- openstack常见组件及其功能?
- horzon组件:提供一个web前端控制台,从而实现通过web管理云平台,建云主机,分配网络,配安全组等。
- nova组件:负责响应虚拟机创建请求、调度、销毁云主机。
- neutron组件:提供云计算的网络虚拟化技术,为openstack其他服务提供网络连接服务。为用户提供接口,可以定义network、subnet、router,配置dhcp、dns、负载均衡、l3服务,网络支持gre、vlan。插件架构支持许多主流的网络厂家和技术,如openvswitch。以上为三大核心组件。
- swift组件:用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为glance提供镜像存储,为cinder提供卷备份服务。
- cinder组件:为运行实例提供稳定持久化的数据块存储服务,如创建卷、删除卷,在实例上挂载和卸载卷。
- keystone组件:为openstack其他服务提供身份验证、服务规则和服务令牌的功能,管理domains、projects、users、groups、roles。
- glance组件:为云主机提供不同系统镜像,支持多种虚拟机镜像格式(aki、ami、ari、iso、qcow2、raw、vdi、vhd、vmdk),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。
- ceilometer组件:能把openstack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。
- heat组件:提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(计算、存储和网络资源)的自动化部署。
- openstack中什么服务通常运行在控制节点?
- 以下服务通常运行在控制节点:
- 认证服务(keystone)
- 镜像服务(glance)
- nova服务,如nova api、nova scheduler和nova db
- 块存储和对象存储服务(cinder、swift)
- ceilometer服务
- mariadb/mysql和rabbitmq服务
- 网络(neutron)和网络代理的管理服务
- 编排服务(heat)
- openstack中什么服务通常运行在计算节点?
- nova计算
- 网络服务,比如ovs
- openstack中的domain,project,user,role,token 的概念和关系?
domain:表示 project 和 user 的集合,在公有云或者私有云中常常表示一个客户
group:一个domain 中的部分用户的集合
project:it基础设施资源的集合,比如虚机,卷,镜像等
role:角色,表示一个 user 对一个 project resource 的权限
token:一个 user 对于某个目标(project 或者 domain)的一个有限时间段内的身份令牌
- openstack中计算节点上虚拟机默认保存路径在哪?
虚拟机存储在计算节点的/var/lib/nova/instances目录。
- openstack中glance镜像的默认保存路径在哪?
因为glance服务运行在控制节点上,所以glance镜像都被存储在控制节点的/var/lib/glance/images目录。
- openstack创建虚拟机的命令是什么?
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>
- openstack虚拟机启动过程?
- 界面或命令行通过restful api向keystone获取认证信息。
- keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。
- 界面或命令行通过restful api向nova-api发送一个boot instance的请求(携带auth-token)。
- nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。
- keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。
- 通过认证后nova-api和数据库通讯。
- 初始化新建虚拟机的数据库记录。
- nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(host id)。
- nova-scheduler进程侦听消息队列,获取nova-api的请求。
- nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。
- 对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。
- nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟机请求的消息。
- nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。
- nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。(flavor)
- nova-conductor从消息队队列中拿到nova-compute请求消息。
- nova-conductor根据消息查询虚拟机对应的信息。
- nova-conductor从数据库中获得虚拟机对应信息。
- nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。
- nova-compute从对应的消息队列中获取虚拟机信息消息。
- nova-compute通过keystone的restfull api拿到认证的token,并通过http请求glance-api获取创建虚拟机所需要镜像。
- glance-api向keystone认证token是否有效,并返回验证结果。
- token验证通过,nova-compute获得虚拟机镜像信息(url)。
- nova-compute通过keystone的restfull api拿到认证k的token,并通过http请求neutron-server获取创建虚拟机所需要的网络信息。
- neutron-server向keystone认证token是否有效,并返回验证结果。
- token验证通过,nova-compute获得虚拟机网络信息。
- nova-compute通过keystone的restfull api拿到认证的token,并通过http请求cinder-api获取创建虚拟机所需要的持久化存储信息。
- cinder-api向keystone认证token是否有效,并返回验证结果。
- token验证通过,nova-compute获得虚拟机持久化存储信息。
- nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。
- openstack中如何显示用户的网络命名空间列表?
# ip netns list
- openstack中如何执行网络命名空间内的命令?
假设我们想在 qdhcp-a51635b1-d023-419a-93b5-39de47755d2d 网络命名空间中执行 ifconfig 命令,可以执行如下命令。
命令格式 : ip netns exec {network-space} <command>:
# ip netns exec qdhcp-a51635b1-d023-419a-93b5-39de47755d2d "ifconfig"
- openstack中glance服务如何使用命令上传和下载镜像?
# 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> #下载
- openstack中如何将虚拟机从异常状态置为活动状态?
# nova reset-state --active {instance_id}
- openstack中如何获取浮动ip列表?
# openstack ip floating list | grep none | head -10
- openstack中如何在特定可用区特定计算节点创建虚拟机?
# 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中如何获取特定计算节点虚拟机列表?
命令格式: 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中如何查看虚拟机的控制台日志?
# openstack console log show {instance-id}
- openstack中如何获取控制台的url?
# openstack console url show {instance-id}
- openstack中如何创建cinder/block存储卷?
# 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中如何列出所有创建的项目或用户?
# openstack project list --long
- openstack中如何显示服务端点(endpoint)列表?
openstack 服务端点被分为 3 类:
- 公共端点
- 内部端点
- 管理端点
使用如下 openstack 命令来查看各种 openstack 服务端点:
# openstack catalog list
可通过以下命令来显示特定服务端点(比如说 keystone)列表:
# openstack catalog show keystone
- openstack控制节点按什么步骤重启nova服务?
# service nova-api restart
# service nova-cert restart
# service nova-conductor restart
# service nova-consoleauth restart
# service nova-scheduler restart
- openstack中已存在的安全组sg,如何添加规则?
# 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
- openstack中如何查看控制节点和计算节点的ovs桥配置?
# ovs-vsctl show
- openstack中计算节点的集成桥(br-int)的作用是什么?
集成桥(br-int)对来自和运行在计算节点上的实例的流量执行 vlan 标记和取消标记。
数据包从实例的 n/w 接口发出使用虚拟接口 qvo 通过 linux 桥(qbr)。qvb 接口是用来连接 linux 桥的,qvo 接口是用来连接集成桥的。集成桥上的 qvo 端口有一个内部 vlan 标签,这个标签是用于当数据包到达集成桥的时候贴到数据包头部的。
- openstack中计算节点的隧道桥(br-tun)的作用是什么?
隧道桥(br-tun)根据 openflow 规则将 vlan 标记的流量从集成网桥转换为隧道 id。
隧道桥允许不同网络的实例彼此进行通信。隧道有利于封装在非安全网络上传输的流量,它支持两层网络,即 gre 和 vxlan。
- openstack中外部ovs桥(br-ex)的作用是什么?
外部ovs网桥转发来往网络的流量,以允许外部访问实例。br-ex 连接物理接口比如 eth2,这样用户网络的浮动 ip 数据从物理网络接收并路由到用户网络端口。
- openstack中的各组件之间通信机制?
openstack中有至少两种通信机制, restful api和rpc调用。
- restful api:
restful api是一套架构约束条件和原则
- rest定义的原则
- 所有事物都定义了id。openstack中每个资源都有唯一的uuid
- 所有事物都链接在一起。在openstack中将资源的id放在url中。
- 使用标准的方法。比如说get是查询资源,post是添加资源,put是更新资源等等。
- 使用restful api架构,实现的目标
- 客户端与服务端的独立性: 在公共接口不变的情况下,客户端和服务端的代码可以独立开发。
- 无状态性: 用户的状态保存在客户端,服务端不再保存用户的状态。客户端向服务端发送请求时,必须发送所有的数据,包括用户状态。
- 统一的接口: restful api的url格式需要遵守统一的规范。可以降低客户端服务器的耦合度,使得编码更加简单。
- 缺点
- 消息仅限于文本
- 客户端与服务端采取同步机制,当发送http请求时客户端需要等待服务器的响应
- 客户端与服务器虽然可以独立开发,但也存在耦合。客户端必须要知道服务器的地址才可以正常工作。
其他
- rest是面向资源的,资源通过url暴露
- rest本身可以利用http的一些特征,如http动词、状态码、http报头等
- rpc
rpc协议,即远程过程调用(remote procedure call protocol)
rpc采用amqp协议实现进程间通信。openstack中采用rabbitmq和qpid。
amqp:高级消息队列,基于消息的中间件提供的开放的应用层标准协议。能够有效地支持各种通信模型或者报文传送方面的应用。
- 特点:二进制的应用层通信协议,进城之间对称的异步通信协议,消息格式,一系列标准化的但可拓展的消息能力(订阅者和发布者,两个节点无需知道对方是什么节点,也不用管对方节点怎么去处理发送的消息,拥有过滤器可以修改订阅者的接收内容)
- 组成:发布者,中间件(消息的存储、交换和路由),订阅者
- 流程:发布者将消息发送到中间件,中间件将消息存储到消息队列中,最后订阅者从消息队列中获取消息。
- nova中使用rabbitmq实现rpc调用
- 客户端(发布者)无需知道服务器(订阅者)的位置
- 客户端与服务器无需同步运行。客户端可以先发rpc调用,然后存储在消息队列中。
- 远程调用的随机均衡性,当客户端发起rpc调用时,可以随机选择一个服务器来处理消息
- openstack中根据权限不同网络可分为几种?
provider network:管理员创建的和物理网络有直接映射关系的虚拟网络。
tenant network:租户普通用户创建的网络,物理网络对创建者透明,其配置由neutron根据管理员在系统中的配置决定。
- openstack中根据网络类型不同网络可分为几种?
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 路由表,也不和具体的物理网络绑定。
- openstack网络中openflow规则的作用是什么?
openflow 规则是一种机制,这种机制定义了一个数据包如何从源到达目的地。openflow 规则存储在 flow 表中。flow 表是 openflow 交换机的一部分。
当一个数据包到达交换机就会被第一个 flow 表检查,如果不匹配 flow 表中的任何入口,那这个数据包就会被丢弃或者转发到其他 flow 表中。
- openstack网络中openflow交换机的信息(比如端口、表编号、缓存编号等)如何查看?
假如我们要显示 openflow 交换机的信息(br-int),需要执行如下命令:
# ovs-ofctl show br-int
- openstack网络中如何显示交换机的所有flow入口?
可以使用命令 ovs-ofctl dump-flows 来查看交换机的 flow 入口。
假设我们想显示 ovs 集成桥(br-int)的所有 flow 入口,可以使用如下命令:
# ovs-ofctl dump-flows br-int
- openstack中neutron代理是什么?如何显示所有neutron代理?
openstack neutron 服务器充当中心控制器,实际网络配置是在计算节点或者网络节点上执行的。neutron 代理是计算节点或者网络节点上进行配置更新的软件实体。neutron 代理通过 neuron 服务和消息队列来和中心 neutron 服务通信。
可通过如下命令查看 neutron 代理列表:
# openstack network agent list -c ‘agent type’ -c host -c alive -c state
- openstack中cpu pinning指什么?
cpu pinning 是指为某个虚拟机保留物理核心。它也称为 cpu 隔离或处理器关联。有两个目的:
- 它确保虚拟机只能在专用核心上运行;
- 它还确保公共主机进程不在这些核心上运行。
我们也可以认为 pinning 是物理核心到一个用户虚拟 cpu(vcpu)的一对一映射。
- 常见的openstack环境中的网络部署有哪些?
- 外部网络(external network):数据中心 intranet,从这里分配浮动ip地址。
- openstack 内部网络:
- 管理网络(management network):提供 openstack 各个组件之间的内部通信,以及 api 访问端点(endpoint)。为安全考虑,该网络必须限制在数据中心之内。
- api 网络:其实这不是一个单独的网络,而是包含在外部和内部网络中。api 的 endpoint 包括 publicurl 和 internalurl,其中,publicurl 包含的是 externa network 的 ip 地址,internal network 包含的是 management network ip 地址。为了简单起见,提供给内外网络访问的api的 publicurl 和 internalurl 相同,而只给内部网络访问的 api 只使用 internalurl。
- 数据网络(data network):除管理网络以外的其它网络,往往还可以细分为下面几种。它们可以合为一种,也可以从性能方面考虑分离出一种或几种作为单独的网络。
- 租户网络(tenant network):提供虚机在计算节点之间,以及计算节点和网络节点之间的通信。同样这也是数据中心的内部网络。
- 存储访问网络(storage access network):访问存储的网络。
- 存储后端网络(storage backend network):比如 ceph 和 swift 集群用于后端数据复制的网络。
- ipmi、pxe网络等
- neutron实现了哪些层次的网络隔离?
- 租户的网络隔离:
租户之间的网络是三层隔离的,即使通过vr也无法通信,若需要通信必须走物理网络
一个租户内的不同网络之间二层隔离的,需要通过 vr 做三层连通
一个网络内的不同子网也是二层隔离的,需要通过 vr 做三层连通
- 外部网络的隔离:
neutron提供数据网络与外部网络的隔离性,默认情况下,所有虚机通往外网的流量全部走网络节点上的 l3 agent,内部的固定ip被转化为外部的浮动ip地址。
- 相同组租户的的虚拟机位于不同宿主机之间的通讯?
相同组租户的的虚拟机位于同一个宿主机之间的通讯?
不同租户之间的虚拟机之间的通讯?
参考:http://www.mamicode.com/info-detail-1485454.html
参考:https://www.sdnlab.com/13000.html
- openstack常见部署方式?
devstack,rdo ,saltstack ,ansible ,tripleo
- 简述块存储、文件存储及对象存储的区别及各自特点?
- 通常高可用(high availability)可通过哪两个维度衡量,各自含义是什么?
rto(recovery time objective):rto指服务恢复的时间,最佳的情况是 0,即服务立即恢复;最坏是无穷大,即服务永远无法恢复;
rpo(recovery point objective):rpo 指切换时向前恢复的数据的时间长度,0 意味着使用同步的数据,大于 0 意味着有数据丢失,如“rpo=1 d”指恢复时使用一天前的数据,那么一天之内的数据就丢失了。因此,恢复的最佳情况是 rto = rpo = 0,几乎无法实现。
- 高可用(high availability)根据服务节点角色分为哪两类?
active/passive ha:集群包括两个角色节点简称主备。在此配置下,系统采用主和备用节点提供服务,系统只在主节点上提供服务。在主节点故障时,备节点上的服务被启动来替代主节点提供的服务。典型地,如采用 pacemaker 来控制主备设备之间的切换,并提供一个虚机 ip 来提供服务。
active/active ha:集群只包括两个节点时简称双活,包括多节点时成为多主(multi-master)。在此配置下,系统在集群内所有服务器上运行同样的负载。以数据库为例,对一个实例的更新,会被同步到所有实例上。如采用负载均衡软件haproxy 来提供服务的虚拟 ip。
- 衡量容灾系统的重要指标是什么,且容灾可分为几个级别?
rpo(recovery point objective):指当灾难发生时允许丢失的数据量;
rto(recovery time object):指系统恢复的时间。
rpo 与 rto 越小,系统的可用性就越高,成本投资也越大。
- rabbitmq的核心组件及其通信机制?
rabbitmq最核心的组件是exchange和queue,其通信机制如下:
- 消息的生产者(producer)与rabbitmq server建立连接,并创建通道(channel);
- 消息的生产者(producer)生产消息,发送给服务器端的exchange;
- exchange收到消息,根据routinkey,将消息转发给匹配的queue;
- queue收到消息,将消息发送给消费者(consumer);
- 消费者(consumer)收到消息,发送ack给队列确认收到消息;
- queue收到ack,删除队列中缓存的此条消息。
原文链接:https://www.cnblogs.com/itzgr/p/10749356.html