Openstack 服务进程如Neutron-server,和别的服务进程会有rpc交互。message 信息是通过rabbit服务器来进行转发的,为了安全,并不是所有的程序都可以连接到rabbit服务器,会有认证机制,机制是什么,就是用户名和密码机制。
一、连接到rabbit服务器,对应的服务log中一般会有下面的信息。
INFO oslo_messaging._drivers.impl_rabbit [req-aa1c0cc9-863c-4b3f-a400-49fba8af254a ] Connecting to AMQP server on controller:5672
INFO oslo_messaging._drivers.impl_rabbit [req-aa1c0cc9-863c-4b3f-a400-49fba8af254a ] Connected to AMQP server on controller:5672
这个信息,表明已经连接到了rabbit服务器。
二、认识rabbit服务器所需的用户名和密码
1、 neutron.conf中的配置如下:
[oslo_messaging_rabbit]
#
# From oslo.messaging
#
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
2、代码
pos:oslo_messaging\_drivers\impl_rabbit.py
有全局变量配置项rabbit_opts,rabbit_host,rabbit_userid,rabbit_password等默认配置项。
rabbit_host | localhost |
rabbit_userid | guest |
rabbit_password | guest |
若配置项中,没有oslo_messaging_rabbit,那么就使用上述默认的用户名和密码以及host。
3、连接成功代码
class Connection(object):
self.connection = kombu.connection.Connection(
self._url, ssl=self._fetch_ssl_params(),
login_method=self._login_method,
failover_strategy="shuffle",
heartbeat=self.driver_conf.heartbeat_timeout_threshold,
transport_options={'confirm_publish': True})
LOG.info(_LI('Connecting to AMQP server on %(hostname)s:%(port)d'),
self.connection.info()) 正在连接
LOG.info(_LI('Connected to AMQP server on %(hostname)s:%(port)d'),
self.connection.info()) 连接成功