- 什么是云计算?
云计算是一种采用按量付费的模式,基于虚拟化技术,将相应计算资源(如网络、存储等)池化后,提供便捷的、高可用的、高扩展性的、按需的服务(如计算、存储、应用程序和其他 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中什么服务通常运行在计算节点?
- 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