OpenStack 基础入门

对于新手来说,了解OpenStack还是有些难度的,这篇文章重点关注于OpenStack一些基础的概念知识,希望对各位有所帮助


Glance 为 VM 提供 image 

Cinder 和 Swift 分别为 VM 提供块存储和对象存储 

Neutron 为 VM 提供网络连接


keystone


  1. 管理用户及其权限
  2. 维护 OpenStack Services 的 Endpoint
  3. Authentication(认证)和 Authorization(鉴权)

OpenStack 排查问题的方法主要是通过日志,每个 Service 都有自己的日志文件。

Keystone 主要有两个日志:keystone.log 和 keystone_access.log

/var/log/keystone/keystone.log


Endpoint 是一个网络上可访问的地址,通常是一个 URL。Service 通过 Endpoint 暴露自己的 API

Keystone 负责管理和维护每个 Service 的 Endpoint

可以使用下面的命令来查看 Endpoint

root@devstack-controller:~# source devstack/openrc admin admin

root@devstack-controller:~# openstack catalog list


glance


OpenStack 由 Glance 提供 Image 服务

Image 是一个模板,里面包含了基本的操作系统和其他的软件。

在 OpenStack 中,提供 Image Service 的是 Glance,其具体功能如下

  1. 提供 REST API 让用户能够查询和获取 image 的元数据和 image 本身
  2. 支持多种方式存储 image,包括普通的文件系统、Swift、Amazon S3 等
  3. 对 Instance 执行 Snapshot 创建新的 image

Glance 自己并不存储 image。 真正的 image 是存放在 backend 中的。 

Glance 支持多种 backend,包括

  1. A directory on a local file system(这是默认配置)
  2. GridFS
  3. Ceph RBD
  4. Amazon S3
  5. Sheepdog
  6. OpenStack Block Storage (Cinder)
  7. OpenStack Object Storage (Swift)
  8. VMware ESX

具体使用哪种 backend,是在 /etc/glance/glance-api.conf 中配置的

filesystem_store_datadir = /var/lib/glance/images/  保存的image目录

glance image-list  查看目前已经存在的 image

制作镜像-web说先去生成快照 然后用glance image-list查看id

glance image-download –file /root/test.img(名字) 956bea57-617a-4afb-ae63-d15da057c252 (id)

然后转换镜像格式

qemu-img convert -c -O qcow2 test.img test.qcow2

qemu-img convert -f qcow2 -O raw (-f为指定源格式 )

Openstack手动创建快照步骤:

找到实例的ID 如:b0778aff-ff7e-42dd-9b76-d753c9

在实例所在节点进入该实例目录 如

/var/lib/nova/instances/b0778aff-ff7e-42dd-9b76-d753c9d1bea3

里面有个disk文件,就是实例的对应磁盘文件

停止该实例运行

压缩复制该文件

qemu-img convert -c -O qcow2 disk win7_stu.qcow2

命令行上传镜像

glance image-create –name “iperf” –file iperf.vmdk –disk-format vmdk –container-format bare  –visibility public –progress

–id                   #镜像的ID

–name                    #镜像的名称

–store                   #储存的镜像上传到

–disk-format                #镜像的格式。可以接受的格式包含: ami,ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso.

–container-format           #镜像容器的格式。可以接受的格式包含:ami,ari, aki, bare, and ovf.

–owner                # 拥有该镜像的租户

–size                      #镜像的大小(以bytes表示). 一般只与’–location’和’–copy_from’一起使用。

–min-disk                 #启动镜像所需的最小硬盘空间(用gigabytes表示).

–min-ram                 #启动镜像所需的最小内存数量(用megabytes表示).

–location                 #镜像所在位置的URL。例如,如果镜像储存在swift中,

–file                        #在创建过程中将要被上传的本地文件(包括硬盘镜像)。另外,镜像也可以通过stdin传递给客户端。

–checksum              #被Glance使用的可用于认证的镜像数据的哈希值,在此请提供一个md5校验值。

–copy-from                 #用法和’–location’参数相似,但表明Glance服务器应该能立即从镜像所储存的地方拷贝数据并储存。

–is-public [True|False]                 #表示镜像是否能被公众访问。

–is-protected [True|False]              #用于避免镜像被删除。

–property                #与镜像有关的任意的属性。可以使用很多次。

–human-readable                     #用对人友好的格式打印镜像的尺寸。

–progress                       #显示上传的进度条

glance image-delete id 删除镜像

Glance 主要有两个日志,glance_api.log 和 glance_registry.log,保存在/var/log/glance/目录里。


 neutron 管理的是网络和子网

网络相关操作

neutron net-create

neutron net-delete

neutron net-update

neutron net-list

neutron net–show

子网相关操作

neutron subnet-create

neutron subnet-delete

neutron subnet-update

neutron subnet-list

neutron subnet–show


nova


Nova 的架构比较复杂,包含很多组件,这些组件以子服务(后台 deamon 进程)的形式运行,可以分为以下几类:

nova-api

接收和响应客户的 API 调用,所有nova请求都是由nova-api处理

除了提供 OpenStack 自己的API,nova-api 还支持 Amazon EC2 API。也就是说,如果客户以前使用 Amazon EC2,并且用 EC2 的 API 开发了些工具来管理虚机,那么如果现在要换成 OpenStack,这些工具可以无缝迁移到OpenStack,因为 nova-api 兼容 EC2 API,无需做任何修改。

Nova-api 对接收到的 HTTP API 请求会做如下处理:

检查客户端传人的参数是否合法有效  

调用 Nova 其他子服务的处理客户端 HTTP 请求  

格式化 Nova 其他子服务返回的结果并返回给客户端

nova-scheduler

虚机调度服务,负责决定在哪个计算节点上运行虚机(默认实现是根据计算节点空闲的内存量计算权重值:空闲内存越多,权重越大,instance 将被部署到当前空闲内存最多的计算节点上)

在 /etc/nova/nova.conf 中,nova 通过 scheduler_driver,scheduler_available_filters 和 scheduler_default_filters这三个参数来配置 nova-scheduler

 nova-scheduler相关日志 nova-scheduler在: /var/log/nova/scheduler.log

nova-compute

管理虚机的核心服务,通过调用 Hypervisor API 实现虚机生命周期管理 

nova-compute 需要获取和更新数据库中 instance 的信息。但 nova-compute 并不会直接访问数据库,而是通过 nova-conductor 实现数据的访问。

每隔一段时间,nova-compute 就会报告当前计算节点的资源使用情况和 nova-compute 服务状态。 

nova-compute 创建 instance 的过程可以分为 4 步

为 instance 准备资源        

创建 instance 的镜像文件         

创建 instance 的 XML 定义文件         

创建虚拟网络并启动虚拟机     

Hypervisor

计算节点上跑的虚拟化管理程序,虚机管理最底层的程序。 不同虚拟化技术提供自己的 Hypervisor。 常用的 Hypervisor 有 KVM,Xen,VMWare 等

nova-conductor

nova-compute 经常需要更新数据库,比如更新虚机的状态。

出于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor,这个我们在后面会详细讨论。

nova-console

用户可以通过多种方式访问虚机的控制台:

nova-novncproxy,基于 Web 浏览器的VNC 访问

nova-spicehtml5proxy,基于HTML5 浏览器的 SPICE 访问

nova-xvpnvncproxy,基于 Java 客户端的 VNC 访问

nova-consoleauth

负责对访问虚机控制台请求提供 Token 认证

nova-cert

提供 x509 证书支持


openstack的日志


Nova 放在 /var/log/nova/ 下,Glance 放在/var/log/glance下……

各个子服务的日志文件也是单独保存,命名也很规范,容易区分。比如 nova-api 的日志一般就命名为 /var/log/nova/api.log,其他日志类似。

所有日志格式都是统一的

<时间戳><日志等级><代码模块><日志内容><源代码位置>

说明:

时间戳 日志记录的时间,包括 年 月 日 时 分 秒 毫秒

日志等级 有INFO WARNING ERROR DEBUG等

代码模块当前运行的模块Request ID 日志会记录连续不同的操作,为了便于区分和增加可读性,

               每个操作都被分配唯一的Request ID,便于查找

日志内容 这是日志的主体,记录当前正在执行的操作和结果等重要信息

源代码位置 日志代码的位置,包括方法名称,源代码文件的目录位置和行号。这一项不是所有日志都有

用 tail -f 打印日志文件,这样需要查看的日志肯定在操作之后的打印输出的这些内容里。 另外也可以通过时间戳来确定需要的日志范围。


openstack 冷迁移


Migrate 操作的作用是将 instance 从当前的计算节点迁移到其他节点上。Migrate 不要求源和目标节点必须共享存储,当然共享存储也是可以的。

Migrate 前必须满足一个条件:计算节点间需要配置 nova 用户无密码访问。

1、用户操作,向 nova-api 发送请求

2、nova-api 发送消息

3、nova-scheduler 执行调度

4、nova-scheduler 发送消息

5、nova-compute 执行操作


创建流程


  1. 界面或命令行通过RESTful API向keystone获取认证信息。
  2. keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。
  3. 界面或命令行通过RESTful API向nova-api发送一个boot instance的请求(携带auth-token)。
  4. nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。
  5. keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。
  6. 通过认证后nova-api和数据库通讯。
  7. 初始化新建虚拟机的数据库记录。
  8. nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)。
  9. nova-scheduler进程侦听消息队列,获取nova-api的请求。
  10. nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。
  11. 对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。
  12. nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟机请求的消息。
  13. nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。
  14. nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。(Flavor)
  15. nova-conductor从消息队队列中拿到nova-compute请求消息。
  16. nova-conductor根据消息查询虚拟机对应的信息。
  17. nova-conductor从数据库中获得虚拟机对应信息。
  18. nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。
  19. nova-compute从对应的消息队列中获取虚拟机信息消息。
  20. nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需要镜像。
  21. glance-api向keystone认证token是否有效,并返回验证结果。
  22. token验证通过,nova-compute获得虚拟机镜像信息(URL)。
  23. nova-compute通过keystone的RESTfull API拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的网络信息。
  24. neutron-server向keystone认证token是否有效,并返回验证结果。
  25. token验证通过,nova-compute获得虚拟机网络信息。
  26. nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。
  27. cinder-api向keystone认证token是否有效,并返回验证结果。
  28. token验证通过,nova-compute获得虚拟机持久化存储信息。
  29. nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇