openstack中的通信机制

本文探讨OpenStack中的两种通信机制:RESTful API和RPC。RESTful API基于HTTP协议,遵循统一的URL格式,强调客户端与服务端的独立性和无状态性,但在异步通信和消息格式上有限制。RPC则采用AMQP协议,如rabbitmq,提供进程间异步、对称的通信,允许发布者和订阅者之间的解耦。两者的核心区别在于,REST以名词为中心,RPC以动词为中心。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们都知道openstack中有至少两种通信机制,一种是RESTful API,另一种是RPC调用,举个例子,当nova与glance通信的时候可能用的是RESTful API,而nova-api与nova-scheduler进行通信的时候,却是使用rabbitmq中的消息队列。为什么呢?另外在一个架构设计中应该选择哪一种通信机制。需要我们对这两种机制有一定的了解。

分类

  • RESTFUL API
  • RPC

RESTful API

  • RESTFUL API是一套架构约束条件和原则
    • REST定义的原则
      • 所有事物都定义了ID。openstack中每个资源都有唯一的UUID
      • 所有事物都链接在一起。在openstack中将资源的ID放在URL中。
      • 使用标准的方法。比如说GET是查询资源,POST是添加资源,PUT是更新资源等等。
    • 使用RESTful API架构,实现的目标
      • 客户端与服务端的独立性: 在公共接口不变的情况下,客户端和服务端的代码可以独立开发。
      • 无状态性: 用户的状态保存在客户端,服务端不再保存用户的状态。客户端向服务端发送请求时,必须发送所有的数据,包括用户状态。
      • 统一的接口: RESTful API的URL格式需要遵守统一的规范。可以降低客户端服务器的耦合度,使得编码更加简单。
    • 利用PasteDeploy定制WSGI服务(openstack中所有web服务都是通过WSGI部署的,例如httpserver.serve(…))
      api-paste.ini文件
### OpenStack 中部署 Ceph 的教程及配置指南 #### 1. 部署原则与注意事项 在实际生产环境中,强烈不建议将 CEPH OpenStack 管理节点部署在同一台服务器上,原因是两者之间可能存在端口冲突的情况。例如 grafana 使用的 3000 端口可能会引发冲突[^1]。 如果确实需要将 CEPH 管理节点与 OpenStack 管理节点部署在同一台物理机上,则应按照以下顺序操作: - **先完成 Ceph 的安装并确保其正常运行**(在此阶段无需配置 Ceph 对接 OpenStack)。 - 关闭可能导致冲突的服务或端口(如 grafana 的 3000 端口)。 - 安装 OpenStack 并完成基本配置后,再重新配置 OpenStack 接入 Ceph。这种顺序可以有效避免 Docker 在 OpenStack 部署过程中的不可重启问题。 --- #### 2. 基础环境准备 为了成功部署 Ceph OpenStack,需满足以下条件: ##### a. SELinux 配置 SELinux 可能会对集群通信造成阻碍,因此推荐将其设置为禁用状态。可以通过编辑 `/etc/selinux/config` 文件实现此目的: ```bash # vim /etc/selinux/config SETSELINUX=disabled ``` 保存文件后执行 `reboot` 操作使更改生效。可通过命令 `getenforce` 查看当前 SELinux 状态以确认是否已禁用[^3]。 ##### b. 系统版本兼容性 对于 CentOS 8.4 Ceph Nautilus (16.2.15) 版本组合的学习场景,官方文档提供了详细的集群部署指导。Ceph 架构的核心特性包括但不限于:所有组件均支持横向扩展、不存在单点故障风险、采用软件定义的方式构建,并能够适应多种商用硬件平台[^2]。 --- #### 3. Ceph 集群初始化 以下是基于 cephadm 工具进行快速部署的关键步骤摘要: ##### a. 准备存储设备 在每个存储节点上的空白硬盘上标记 Ceph 标签以便后续识别分配资源。具体方法如下: ```bash # ceph-volume lvm create --data /dev/<disk> ``` ##### b. 初始化第一个管理节点 通过以下命令启动初始引导流程: ```bash curl --silent --remote-name https://github.com/ceph/ceph/raw/master/src/cephadm/cephadm chmod +x cephadm ./cephadm bootstrap --mon-ip <MON_IP> --fsid <FSID> ``` ##### c. 添加其他节点到集群 利用 SSH 密钥分发机制简化跨主机认证过程,随后向新加入的机器推送服务实例: ```bash ssh-copy-id root@<NEW_NODE_HOSTNAME> ceph orch host add <NEW_NODE_HOSTNAME> ``` --- #### 4. OpenStack 对接 Ceph 当 Ceph 成功搭建完毕后,即可着手让 OpenStack 利用该分布式存储系统作为后端支撑。 ##### a. 修改 Cinder 后端驱动程序 更新 `/etc/cinder/cinder.conf` 文件内的相关内容片段: ```ini [DEFAULT] enabled_backends = ceph [ceph] volume_driver = cinder.volume.drivers.rbd.RBDDriver rbd_pool = volumes rbd_ceph_conf = /etc/ceph/ceph.conf rbd_user = cinder rbd_secret_uuid = <UUID_GENERATED_BY_OPENSTACK> ``` ##### b. 创建必要的 RBD Pool 预先规划好用于承载虚拟磁盘镜像数据的目标池名称及其容量大小限制参数设定工作尤为重要。 ```bash ceph osd pool create volumes <PG_NUM> ``` --- #### 5. 测试验证环节 最后一步是对整个集成方案进行全面的功能性稳定性测试。重点考察以下几个方面表现情况如何? - 数据写入读取延迟指标; - 整体吞吐量水平评估结果怎样? - 是否存在任何潜在错误异常现象发生?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值