Openstack 的 RPC使用。

大家都已经很熟悉了RPC了。 比如说nfs就是采用的RPC通信。

尤其SUN RPC 已经成为了C语言开发的经典一种进程间调用机制。

openstack 的RPC 机制, 是基于AMQP 活着其他高级消息协议而实现得远程调用机制。

而oslo.messaging 在这些消息协议基础上实现了很nice的接口。developer 可以很方便的调用。

oslo messaging wiki

参考 openstack的developer手册,实现一个RPC 的server端。

http://docs.openstack.org/developer/oslo.messaging/server.html

call_server.py

 1 from oslo_config import cfg
 2 import oslo_messaging
 3
 4 class ServerControlEndpoint(object):
 5
 6     target = oslo_messaging.Target(namespace=‘control‘,
 7                                    version=‘2.0‘)
 8
 9     def __init__(self, server):
10         print "this is ServerControlEndpoint"
11         self.server = server
12
13     def stop(self, ctx):
14         if server:
15             self.server.stop()
16
17 class TestEndpoint(object):
18
19     def test(self, ctx, arg):
20         print "this is TestEndpoint test server"
21         return arg
22
23 transport = oslo_messaging.get_transport(cfg.CONF)
24
25 print "cfg.CONF: ", cfg.CONF
26 print "transport: ", transport
27 target = oslo_messaging.Target(topic=‘test‘, server=‘server1‘)
28 print "target: ", target
29 endpoints = [
30     ServerControlEndpoint(None),
31     TestEndpoint(),
32 ]
33 server = oslo_messaging.get_rpc_server(transport, target, endpoints,
34                                        executor=‘blocking‘)
35 print "server: ", server
36 server.start()
37 server.wait()

执行, 等待client 调用。

$ python call_server.py

实现一个 RPC的client端

http://docs.openstack.org/developer/oslo.messaging/rpcclient.html

call_client.py

1 from oslo_config import cfg
2 import oslo_messaging as messaging
3
4 transport = messaging.get_transport(cfg.CONF)
5 target = messaging.Target(topic=‘test‘) #, version=‘2.0‘)
6 client =  messaging.RPCClient(transport, target)
7 print client.call({}, ‘test‘, arg="hello")
8 cctxt = client.prepare() # version=‘2.0‘)
9 print cctxt.call({}, ‘test‘, arg="hello")

执行,可以得到 server段的返回结果。

$ python call_server.py

notifier.py

http://docs.openstack.org/developer/oslo.messaging/notifier.html

notification_listener.py

http://docs.openstack.org/developer/oslo.messaging/notification_listener.html

时间: 2024-10-23 22:28:52

Openstack 的 RPC使用。的相关文章

Openstack平台搭建之第三天

Openstack平台搭建之第三天 Author :xxbAndy If you have any question ,please contact me by [email protected] or 371990778(qq) 注意:主控节点为server10.example.com: 新增nova节点为desktop10.example.com 在实验环境中已经对各个主机做了DNS解析 1.管理neutron节点服务,为nova-compute节点进行配置网络服务 [[email prot

openstack排错

一.排错方法: 1.查看日志路径为/var/log,具体哪个组件出了问题进入其目录查看. 2.debug [email protected]:~# keystone --debug user-list [email protected]:~# nova --debug list 3.grep [email protected]:~# grep -ri error /var/log/* 二.具体错误: 1.登录dashboard显示错误, 查看日志/var/log/upstart/neutron-

OpenStack三个节点icehouse

一.环境准备 1.架构 创建3台虚拟机,分别作为controll节点.network节点和compute1节点. Controller节点:1processor,2G memory,5G storage. Network节点:1processor,2G memory,5G storage. Comute1节点:1processor,2G memory,5G storage. 架构图: 外部网络:提供上网业务,外界登录openstack(在上图为蓝色模块) 管理网络:三节点通信比如keystone

Openstack folsom installation

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epelrelease-6-8.noarch.rpm 前提:本文档中涉及到的所有主机的OS均为RHEL 6.4 x86_64系统. Control Node: 172.16.200.6     node1.magedu.com Compute Node: 172.16.200.7   node2.magedu.com Object Storage Node: 172.16.200

ubuntu14.04server 下安装openstack juno

系统使用ubuntu14.04server 安装之前所有服务器openstack更新源设定: apt-get install python-software-properties apt-get install software-properties-common add-apt-repository cloud-archive:juno apt-get update && apt-get dist-upgrade 安装时间同步服务 apt-get install -y ntp vim /

OpenStack IceHouse 部署 - 4 - 计算节点部署

Nova计算服务(计算节点) 参考 本页内容依照官方安装文档进行,具体参见Configure a compute node(nova service) 前置工作 数据库 由于我们在Nova(计算管理)部署配置中使用了mysql数据库,所以移除本地sqlite数据库 sudo rm /var/lib/nova/nova.sqlite 修改vmlinuz权限 For security reasons, the Linux kernel is not readable by normal users

OpenStack IceHouse 部署 - 5 - 网络节点部署

Neutron网络服务(网络节点) 目录 [隐藏] 1 参考 2 前置工作 2.1 调整内核参数 3 安装 4 配置 4.1 keystone对接 4.2 rabbitmq对接 4.3 metadata服务对接 4.4 ML2插件配置 4.5 L3-agent 4.6 DHCP-agent 5 接口配置 6 服务更新 7 服务验证 8 附加配置 8.1 共享上网 8.1.1 iptables NAT 8.1.2 虚拟路由 参考 由于硬件条件所限并结合实际网络环境,本页并不是完全按照官方给出的指导

openstack centos6.8安装

网上搜了一堆资料,搞出来的大家分享下 Openstack 安装 一. 主机分配: 主机名 hostname Ip system Openstack 192.168.1.220 Centos6.8 x64 node 192.168.1.230 Centos6.8 x64 2,管理节点安装 (1).安装epel包 Yum install epel-release –y (2).增加rdo源 vim /etc/yum.repos.d/rdo-release.repo [openstack-icehou

openstack icehouse系列之控制节点搭建

大家都知道openstack是目前最热门.最火的一个开源云计算软件.openstack是IaaS(基础设施即服务)组件,让任何人都可以自行建立和提供云端运算服务. 今天学习搭建下openstack icehouse版本的搭建.下面是环境介绍 网络节点:ml2.openvswitch.DHCP.l3.metadata 控制节点:mysql.keystone.glance.nova.neutron.dashboard.cinder 计算节点:nova-compute.qemu-kvm.openvsw