OpenStack 管理

文章目录

OpenStack 管理

OpenStack 核心组件

存储类型对比

存储类型 类比示例 核心特点 速度排序 容量排序
块存储 硬盘 速度快,容量小 1 3
文件存储 NFS 容量大,速度中等 2 2
对象存储 百度网盘 容量超大,速度慢 3 1

核心服务组件说明

Horizon(web界面)
  • 提供基于Web的控制界面,使云管理员和用户能够管理各种OpenStack资源和服务
Keystone(身份认证)
  • 提供身份验证,服务发现和分布式多租户授权
  • 支持LDAP、OAuth、OpenID Connect、SAML和sQL
Glance(镜像管理)
  • 提供发现、注册和检索虚拟机镜像功能
  • 提供的虚拟机实例镜像可以存放在不同地方,例如本地文件系统、Swift对象存储、Cinder块存储等
Nova(计算)
  • 提供大规模、可扩展、按需自助服务的计算资源
  • 支持管理裸机,虚拟机和容器
Cinder(块存储)
  • 提供块存储服务,为虚拟机实例提供持久化存储
  • 调用不同存储接口驱动,将存储设备转化成块存储池,用户无需了解存储实际部署位置或设备类型
Swift(对象存储)
  • 提供高度可用、分布式、最终一致的对象存储服务
  • 可以高效、安全且廉价地存储大量数据
  • 非常适合存储需要弹性扩展的非结构化数据
Neutron(网络)
  • 负责管理虚拟网络,专注于为OpenStack提供网络即服务
Heat(编排)
  • 为云应用程序编排OpenStack基础架构资源
  • 提供OpenStack原生RESTAPI和CloudFormation兼容的查询API
Ceilometer(计量与数据收集)
  • Ceilometer项目是一项数据收集服务,提供跨当前OpenStack核心组件规范化和转换数据的能力
  • Ceilometer的数据可为所有OpenStack核心组件提供客户计费、资源跟踪和警报功能

认证管理 - Keystone

核心概念

术语 定义
Domain 域,Keystone中一个虚拟概念,一个域是一组User ,Group或Project的容器,必须全局唯一
User 用户,是可以通过Keystone访问OpenStack服务的个人、系统或某个服务
Group 用户组,是一组User的容器,可以向Group中添加用户,并直接给Group分配角色
Project 项目,是各个服务中一些可以访问的资源集合,项目只需在某个域下唯一即可
Role 角色,具有一组定义的用户权限和特权以执行一组特定操作,角色不同,被赋予的权限不同,角色必须全局唯一
Service 服务,一种OpenStack服务,服务会对外暴露一个或多个端点,用户可以通过这些端点访问资源并执行操作
Endpoint 端点,是指一个可以用来访问某个具体服务的网络地址
Token 令牌,是允许访问特定资源的凭证
Credential 凭证,确认用户身份的数据,如用户的用户名和密码

常用操作命令

Domain 管理
bash 复制代码
# 查看域列表
[root@controller ~]# source keystonerc_admin 
[root@controller ~(keystone_admin)]# openstack domain list 
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| 017cca4c03234dcb96e0b016d95a412e | heat    | True    |                    |
| default                          | Default | True    | The default domain |
+----------------------------------+---------+---------+--------------------+

# 创建域
[root@controller ~(keystone_admin)]# openstack domain create domain-test
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| enabled     | True                             |
| id          | c659efd5aca6418c9ddaa8bfb6c50f7d |
| name        | domain-test                      |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+
[root@controller ~(keystone_admin)]# openstack domain list 
+----------------------------------+-------------+---------+--------------------+
| ID                               | Name        | Enabled | Description        |
+----------------------------------+-------------+---------+--------------------+
| 017cca4c03234dcb96e0b016d95a412e | heat        | True    |                    |
| c659efd5aca6418c9ddaa8bfb6c50f7d | domain-test | True    |                    |
| default                          | Default     | True    | The default domain |
+----------------------------------+-------------+---------+--------------------+


# 禁用并删除域
[root@controller ~(keystone_admin)]# openstack domain set --disable domain-test
[root@controller ~(keystone_admin)]# openstack domain delete domain-test
[root@controller ~(keystone_admin)]# openstack domain list 
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| 017cca4c03234dcb96e0b016d95a412e | heat    | True    |                    |
| default                          | Default | True    | The default domain |
+----------------------------------+---------+---------+--------------------+

# 开启多域登录(修改配置文件)
[root@controller ~(keystone_admin)]# cd /etc/openstack-dashboard/
[root@controller openstack-dashboard(keystone_admin)]# ls
cinder_policy.json    local_settings       nova_policy.d
glance_policy.json    local_settings.d     nova_policy.json
keystone_policy.json  neutron_policy.json
# 第83行设置:OPENSTACK\_KEYSTONE\_MULTIDOMAIN\_SUPPORT = True
[root@controller openstack-dashboard(keystone_admin)]# vim local_settings
[root@controller openstack-dashboard(keystone_admin)]# systemctl restart httpd
User 管理
bash 复制代码
# 查看用户列表
[root@controller ~(keystone_admin)]# openstack user list 
+----------------------------------+------------+
| ID                               | Name       |
+----------------------------------+------------+
| 033dc23a41da484cbb5949044c0eec9f | admin      |
| d572bfc5740b4be68c5c067cda5ac85c | heat_admin |
| 967c6a4a45d24e49b6d45a2f515e02f8 | glance     |
| e19105fcb90342f68516aef3d1e190a3 | cinder     |
| 18dfd0f27e52410882ebc2a33645b235 | nova       |
| 98ba6f12469b48e6ba5740ced4cc132d | placement  |
| f479cf757ac14e338922a7faa6e0000f | neutron    |
| 54615cce0798406a8502aa744daccf37 | swift      |
| ca2e28b4468b43d89508f2c56789b2ed | heat       |
| cb292855f1094d06b03f8452f915c268 | heat-cfn   |
| 35657153c86e4fea845e1c218a769de3 | gnocchi    |
| 2112f8df5f8048dfb0b84d27ea1ef8cc | ceilometer |
| ee2f22270a6b4f598d0029af9e6d1cac | aodh       |
+----------------------------------+------------+

# 创建用户(密码 HUAWEI)
[root@controller ~(keystone_admin)]# openstack user create --password HUAWEI user1
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | ec47726018fa47c482f491dbf33b1ade |
| name                | user1                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller ~(keystone_admin)]# openstack user list
...
| ec47726018fa47c482f491dbf33b1ade | user1      |
+----------------------------------+------------+

# 查看用户详情
[root@controller ~(keystone_admin)]# openstack user show user1
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | ec47726018fa47c482f491dbf33b1ade |
| name                | user1                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
Group 管理
bash 复制代码
# 创建用户组
[root@controller ~(keystone_admin)]# openstack group create group1
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| id          | 432a2ed10e574e32851e16e690eaaa2e |
| name        | group1                           |
+-------------+----------------------------------+

# 查看组列表
[root@controller ~(keystone_admin)]# openstack group list 
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| 432a2ed10e574e32851e16e690eaaa2e | group1 |
+----------------------------------+--------+

# 查看组详情
[root@controller ~(keystone_admin)]# openstack group show group1
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| id          | 432a2ed10e574e32851e16e690eaaa2e |
| name        | group1                           |
+-------------+----------------------------------+

# 添加用户到组
[root@controller ~(keystone_admin)]# openstack group add user group1 user1

# 验证用户组归属
[root@controller ~(keystone_admin)]# openstack group contains user group1 user1
user1 in group group1
Role 管理
bash 复制代码
# 查看角色列表
[root@controller ~(keystone_admin)]# openstack role list 
+----------------------------------+------------------+
| ID                               | Name             |
+----------------------------------+------------------+
| 170a8febdc6a4313b85b526a19e86407 | heat_stack_user  |
| 22a859e11bf44a3295f87ac8b5dd52e2 | _member_         |
| 3db547a5cc874ff0ac1fbe32b50a6400 | SwiftOperator    |
| 768cb2169eee4e319f99f85c76430163 | admin            |
| 8e3a62d58c7d48e381bda2eed107175a | reader           |
| 9cb9083d431e4949bc0aa45b94618808 | heat_stack_owner |
| c2be6ce673e1441f86c06914ae1e1a2f | ResellerAdmin    |
| cd23cae2679e4843a27cdb33c4c7782c | member           |
+----------------------------------+------------------+

# 给组分配项目角色
[root@controller ~(keystone_admin)]# openstack role add --project admin --group group1 admin

# 验证角色分配
[root@controller ~(keystone_admin)]# openstack role assignment list --names --group group1
+-------+------+----------------+---------------+--------+--------+-----------+
| Role  | User | Group          | Project       | Domain | System | Inherited |
+-------+------+----------------+---------------+--------+--------+-----------+
| admin |      | group1@Default | admin@Default |        |        | False     |
+-------+------+----------------+---------------+--------+--------+-----------+
Project 管理
bash 复制代码
# 创建项目
[root@controller ~(keystone_admin)]# openstack project create ProjectA
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 8d940a798abe44478b259e94ecd89408 |
| is_domain   | False                            |
| name        | ProjectA                         |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

# 查看项目列表
[root@controller ~(keystone_admin)]# openstack project list 
+----------------------------------+----------+
| ID                               | Name     |
+----------------------------------+----------+
| 61b0a9a6eb394ff0a85eca6d9e43c901 | services |
| 8d940a798abe44478b259e94ecd89408 | ProjectA |
| c4ac78b29bfe41d0b8e5cbe8676fb335 | admin    |
+----------------------------------+----------+

# 查看项目详情
[root@controller ~(keystone_admin)]# openstack project show ProjectA
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 8d940a798abe44478b259e94ecd89408 |
| is_domain   | False                            |
| name        | ProjectA                         |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

# ProjeectA分配给用户user1
[root@controller ~(keystone_admin)]# openstack user set --project ProjectA user1

# 给项目ProjectA里的用户user1赋予角色admin
[root@controller ~(keystone_admin)]# openstack role add --user user1 --project ProjectA admin
bash 复制代码
# 修改ProjectA配额
# 将Project配额设置为实例3,vcpu 5,内存5000MB
[root@controller ~(keystone_admin)]# openstack quota set --instance 3 --cores 5 --ram 5000 ProjectA
bash 复制代码
# 查看OpenStack有哪些服务
[root@controller ~(keystone_admin)]# openstack service list 
+----------------------------------+------------+----------------+
| ID                               | Name       | Type           |
+----------------------------------+------------+----------------+
| 0fd50c45ad8943dd878d7afc4bf47fbe | keystone   | identity       |
| 131d058ece52424ab5d1c8622ccc1c92 | heat-cfn   | cloudformation |
| 1febe3cd0af24c25aac8625f50588537 | cinderv3   | volumev3       |
| 34327ffe1e184e0a9d4123de0695e891 | ceilometer | metering       |
| 3c85962608d4461e99ab5fb3c2062541 | aodh       | alarming       |
| 436b1df46935491c9db4bc36f7d9ba0c | gnocchi    | metric         |
| 4e782161c7034ed7a0ee781e43ffb5ba | cinderv2   | volumev2       |
| 4e8872bd2fa34c33994049b1c4bf4ee8 | swift      | object-store   |
| 65b6b8a34598409abdba508b297ef1df | heat       | orchestration  |
| 689d5009b940476da1e512d73fd523f6 | placement  | placement      |
| 6b9f7b4b2f084d28ae506da68451c0cc | glance     | image          |
| d88b168b7eb4427e870db2ab2410acc9 | nova       | compute        |
| ddbeaa7e947a41bb840f3115e4acf61f | neutron    | network        |
+----------------------------------+------------+----------------+

# 查看OpenStack endpoint
[root@controller ~(keystone_admin)]# openstack endpoint list 
+----------------------------------+-----------+--------------+----------------+---------+-----------+--------------------------------------------------+
| ID                               | Region    | Service Name | Service Type   | Enabled | Interface | URL                                              |
+----------------------------------+-----------+--------------+----------------+---------+-----------+--------------------------------------------------+
| 051ff326a2c64839a420a3bed4e8c93a | RegionOne | neutron      | network        | True    | public    | http://192.168.108.10:9696                       |
| 06035d777c57415d9bd54c3bb7c3d2fd | RegionOne | heat-cfn     | cloudformation | True    | internal  | http://192.168.108.10:8000/v1                    |
| 17351873d4bd4ad6948545ddf02fffca | RegionOne | aodh         | alarming       | True    | public    | http://192.168.108.10:8042                       |
| 1807b3bcb83f4506b93bf15f808a36dc | RegionOne | nova         | compute        | True    | public    | http://192.168.108.10:8774/v2.1/%(tenant_id)s    |
...

# 查看catalog
[root@controller ~(keystone_admin)]# openstack catalog list 
+------------+----------------+---------------------------------------------------------------------------------+
| Name       | Type           | Endpoints                                                                       |
+------------+----------------+---------------------------------------------------------------------------------+
| keystone   | identity       | RegionOne                                                                       |
|            |                |   public: http://192.168.108.10:5000                                            |
|            |                | RegionOne                                                                       |
|            |                |   admin: http://192.168.108.10:5000                                             |
|            |                | RegionOne                                                                       |
...

镜像管理 - Glance

核心概念

镜像:

是一个包含了操作系统及必要配置的弹性云服务器模板,使用镜像可以创建弹性云服务器。

公共镜像:

公共镜像是云平台提供的常见的标准操作系统镜像,所有用户可见,包括操作系统以及预装的公共 应用。公共镜像具有高度稳定性,皆为正版授权,您也可以根据实际需求自助配置应用环境或相关软件。

私有镜像:

基于云服务器或外部镜像文件等方式创建的个人镜像,仅用户自己可见。包含操作系统、预装的公 共应用以及用户的私有应用。选择私有镜像创建云服务器,可以节省您重复配置云服务器的时间。

共享镜像:

您可以接受云平台其他用户共享的私有镜像,作为自己的镜像进行使用。

市场镜像:

提供预装操作系统、应用环境和各类软件的优质第三方镜像。无需配置,可一键部署,满足建站、 应用开发、可视化管理等个性化需求。

镜像、实例和规格的关系:

用户可以从同一个镜像启动任意数量的实例

每个启动的实例都是基于镜像的一个副本,实例上的任何修改都不会影响到镜像 启动实例时,必须指定一个规格,实例按照规格使用资源

计算管理 - Nova

核心概念

nova负责:

  • 虚拟机生命周期管理
  • 其他计算资源生命周期管理

nova不负责:

  • 承载虚拟机的物理主机自身的管理
  • 全面的系统状态监控
  • DB:用于数据存储的SQL数据库。
  • API:接收 HTTP 请求、转换命令并通过oslo.messaging队列或HTTP与其他组件通信的组件。
  • Scheduler:为虚拟机选择合适的物理主机。
  • Compute:虚拟机生命周期和复杂流程控制。
  • Conductor:处理需要协调(构建/调整大小)的请求,充当数据库代理或处理对象转换。

引入nova-conductor的好处:

  • 安全性上考虑。之前每个nova-compute都是直接访问数据库的。如果由于某种原因,某个计算节点被 攻陷了,那攻击者就可以获取访问数据库的全部权限,肆意操作数据库。
  • 方便升级。将数据库和nova-compute解耦,如果数据库的模式改变,nova-compute就不用升级了。
  • 性能上考虑。之前数据库的访问在nova-compute中直接访问且数据库访问是阻塞性的,由于nova compute只有一个os线程,所以当一个绿色线程去访问数据库的时候会阻塞其他绿色线程,导致绿色线 程无法并发。但是nova-conductor是通过rpc 调用,rpc调用是绿色线程友好的,一个rpc call的执行返回 前不会阻塞其他绿色线程的执行。这样就会提高了操作的并发。

调度过程分为两步:

  • 通过过滤器选择满足条件的计算节点
  • 通过权重选择最优的节点。
    ServerGroupAntiAffinityFilter(反亲和性):可以尽量将 Instance 分散部署到不同的节点上

ServerGroupAffinityFilter:与 ServerGroupAntiAffinityFilter 的作用相反,会尽量将 instance 部署到同 一个计算节点上

Weight:Scheduler 会对每个计算节点打分,得分最高的获胜。 打分的过程就是 weight。目前 nova-scheduler 的默认实现是根据计算节点空闲的内存量计算权重值: 空闲内存越多,权重越 大,instance 将被部署到当前空闲内存最多的计算节点上

创建虚拟机过程

  1. 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:"帮我创 建一个 Instance"
  2. API对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:"让 Scheduler 创建 一个 Instance"
  3. Scheduler(nova-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若 干计算节点中选出节点 A。
  4. Scheduler 向 Messaging 发送了一条消息:"在计算节点 A 上创建这个 Instance"
  5. 计算节点 A 的 Compute(nova-compute)从 Messaging 中获取到 Scheduler 发给它的消息,然后通过本节点的 Hypervisor Driver 创建 Instance。
  6. 在 Instance 创建的过程中,Compute 如果需要查询或更新数据库信息,会通过 Messaging 向 Conductor(nova-conductor)发送消息,Conductor 负责数据库访问。

暂停实例与挂起实例区别

相同点:

两者都是暂停 instance 的运行,并保存当前状态,之后可以通过 Resume 操作恢复。

不同点

Suspend(挂起) 将 instance 的状态保存在磁盘; Pause(暂停) 是保存在内存中,所以 Resume 被 Pause 的 instance 要比 Suspend 快。

块存储管理 - Cinder

核心概念

cinder的配置文件位置:/etc/cinder

cinder的日志文件位置:/var/log/cidner

Cinder作用:

Cinder在虚拟机与具体存储设备之间引入了一层"逻辑存储卷"的抽象,Cinder本身不是一种存储技术,并没有实现对块设备的实际管理和服务

Cinder只是提供了一个中间的抽象层,为后端不同的存储技术,提供了统一的接口不同的块设备服务厂商在Cinder中以驱动的形式实现上述接口与OpenStack进行整合

  • Cinder Client封装Cinder提供的rest接口,以CLI形式供用户使用。
  • Cinder API对外提供rest API,对操作需求进行解析,对API进行路由寻找相应的处理方法。包含卷的增 删改查(包括从源卷、镜像、快照创建)、快照增删改查、备份、volume type管理、挂载/卸载(Nova 调用)等。
  • Cinder Scheduler负责收集backend上报的容量、能力信息,根据设定的算法完成卷到指定cinder volume的调度。
  • Cinder Volume多节点部署,使用不同的配置文件、接入不同的backend设备,由各存储厂商插入 driver代码与设备交互完成设备容量和能力信息收集、卷操作。
  • Cinder Backup实现将卷的数据备份到其他存储介质(目前SWIFT/Ceph/TSM提供了驱动)。
  • Cinder-api,Cinder-Scheduler,Cinder-Volume可以选择部署到一个节点上,也可以分别部署
  • Scheduler也采用AA模式,由rabbitmq以负载均衡模式向3个节点分发任务,并同时从rabbitmq收 取Cinder volume上报的能力信息,调度时,scheduler通过在DB中预留资源从而保证数据一致性
  • Cinder Volume也采用AA模式,同时上报同一个backend容量和能力信息,并同时接受请求进行处理

Cinder API

  • 检查参数合法性(用户输入,权限,资源是否存在等)
  • 准备创建的参数字典,预留和提交配额
  • 在数据库中创建对应的数据记录
  • 通过消息队列将请求和参数发送到Scheduler

和Nova Scheduler类似,Cinder Scheduler也是经过Filter筛选符合条件的后端,然后使用Weigher计算 后端进行权重排序,最终选择出最合适的后端存储。

Cinder Scheduler服务:

提取接收到的请求参数 通过配置的filter和输入参数对后端进行过滤

Weigher计算后端进行权重
AvailabilityZoneFilter:

为提高容灾性和提供隔离服务,可以将存储节点和计算节点划分到不同的 Availability Zone 中。例如把 一个机架上的机器划分在一个 Availability Zone 中。OpenStack 默认有一个命名为"nova"的 Availability Zone,所有的节点初始都是放在"nova"中。用户可以根据需要创建自己的 Availability Zone。

创建 Volume 时,用户会指定 Volume 的大小。CapacityFilter 的作用是将存储空间不能满足 Volume 创 建需求的存储节点过滤掉。
CapacityFilter:

创建 Volume 时,用户会指定 Volume 的大小。CapacityFilter 的作用是将存储空间不能满足 Volume 创 建需求的存储节点过滤掉。

Cinder Volume服务:

  • 提取接收到的请求参数
  • 调用对应的Driver在后端创建实际的卷
  • 使用Driver返回的模型更新数据库中的记录
    Cinder挂载流程:

挂卷流程: 挂卷是通过Nova和Cinder的配合最终将远端的卷连接到虚拟机所在的Host节点上,并最终 通过虚拟机管理程序映射到内部的虚拟机中

  • Nova调用Cinder API创建卷,传递主机的信息。
  • Cinder API将该信息传递给Cinder Volume。
  • Cinder Volume通过创建卷时保存的host信息找到对应的Cinder Driver。
  • Cinder Driver通知存储允许该主机访问该卷,并返回该存储的连接信息。
  • Nova调用针对于不同存储类型进行主机识别磁盘的代码实现识别,磁盘或者文件设备。
  • Nova通知Cinder已经进行了挂载。
  • Nova将主机的设备信息传递给hypervisor来实现虚拟机挂载磁盘。

对象存储管理 - Swift

核心概念

swift 在 openstack 中的作用:

  • Swift 并不是文件系统或者实时的数据存储系统,它称为对象存储,用于永久类型的静态数据的长期存储,这些数据可以检索、调整,必要时进行更新
  • 最适合存储的数据类型的例子是虚拟机镜像、图片存储、邮件存储和存档备份
  • 因为没有中心单元或主控结点,Swift 提供了更强的扩展性、冗余和持久性

编排管理 - Heat

核心概念

Heat 是一种通过 OpenStack 原生 REST API 使用声明性模板格式编排复合云应用程序的服务,提供与其他 OpenStack 核心项目的紧密集成

  • Heat 模板以文本文件的形式描述了云应用程序的基础架构,文本文件可供用户读写,并且支持通过 版本控制工具进行管理
  • Heat 模板指定资源之间的关系,使得 Heat 能够调用 OpenStack API 以正确的顺序创建用户所需的基础架构,从而完全启动用户的应用程序
    heat与其他服务之间的关系

Heat 是位于 Nova、Neutron 等服务之上的一个组件,它充当了 OpenStack 对外接口的角色,用户不需要直接接触 OpenStack 其他服务,只需把对各种资源的需求写在 Heat 模版里,Heat 就会自动调用相关服务的接口来配置资源,从而满足用户的需求。

  • 用户在 Horizon 中或者命令行中提交包含模板和参数输入的请求,Horizon 或者命令行工具会把请求转化为 REST 格式的 API 调用,然后调用 Heat-api 或者是 Heat-api-cfn。Heat-api 和 Heat-api-cfn 会验证模板的 正确性,然后通过消息队列传递给 Heat Engine 来处理请求。

  • Heat 中的模板是 OpenStack 资源的集合,通过定义模板,可以将需要创建的资源在模板中描述,用此模板可以多次创建需要的资源。

  • Heat-api:提供 REST API 服务,是其他组件与 Heat 交互的入口,接收 API 请求并传送给 heat-engine。

  • Heat-api-cfn:提供兼容 AWS CloudFormation 的 API,接收 API 请求并转发给 heat-engine。

  • Heat-engine:Heat 的核心,主要实现任务调度、资源生命周期管理等作用,自身并不提供资源创建功能,只负责编排资源后交由其他组件去处理。
    Heat 模板默认编写语言-YAML语法

  • 使用缩进(一个或多个空格)排版

  • 序列项用短划线表示

  • MAP 中的 key-value 对用冒号表示

网络管理 - Neutron

核心概念

Neutron 最为核心的工作是对二层物理网络的抽象与管理,物理服务器虚拟化后,虚拟机的网络功能由 虚拟网卡(vNIC)和虚拟交换机提供,各个 vNIC 连接在 vSwitch 的端口上,最后这些 vSwitch 通过物理服 务器的物理网卡访问外部的物理网络。
Linux网络虚拟化技术

交换机虚拟化: linux bridge,open vswitch

网络隔离: network namespace
network

network 是一个隔离的二层广播域。Neutron 支持多种类型的 network,包括 local, flat 等。

local

local 网络与其他网络和节点隔离。local 网络中的 instance 只能与位于同一节点上同一网络的 instance 通信,local 网络主要用于单机测试。

flat

flat 网络是无 vlan tagging 的网络。flat 网络中的 instance 能与位于同一网络的 instance 通信,并且可以跨多个节点。vlan 网络是具有 802.1q tagging 的网络。vlan 是一个二层的广播域,同一 vlan 中的 instance 可以通信,不同 vlan 只能通过 router 通信。vlan 网络可跨节点,是应用最广泛的网络类型。

相关推荐
G_H_S_3_2 小时前
【网络运维】OpenStack 块存储与对象存储:Cinder 与 Swift 篇
linux·运维·网络·openstack
阿干tkl2 小时前
误卸载 openssl-libs 的补救方法
linux·运维
PFinal社区_南丞2 小时前
服务器进程日志分析:从头皮发麻到AI解救
运维·后端
G_H_S_3_2 小时前
【网络运维】Docker网络:基础与实战
linux·运维·网络·docker
加藤不太惠2 小时前
docker简单了解使用
运维·docker·容器
小安运维日记2 小时前
RHCA - DO374 | Day09:自定义内容集和执行环境
linux·运维·服务器·系统架构·ansible·改行学it
TAEHENGV3 小时前
提醒历史模块 Cordova 与 OpenHarmony 混合开发实战
运维·服务器
虾..3 小时前
Linux 进程间通信---命名管道
linux·运维·服务器
小宇的天下3 小时前
Calibre DESIGNrev DRC/LVS启动和准备文件(10-2)
linux·运维·lvs