Ruby 为MCollective使用RabbitMQ连接器

Ruby 为MCollective使用RabbitMQ连接器,ruby,rubygems,rabbitmq,puppet,mcollective,Ruby,Rubygems,Rabbitmq,Puppet,Mcollective,这是我的client.cfg文件: main_collective = mcollective collectives = mcollective libdir = /usr/share/mcollective/plugins logger_type = console loglevel = warn # Plugins securityprovider = psk plugin.psk = unset connector = rabbitmq plugin.rabbitmq.pool.s

这是我的client.cfg文件:

main_collective = mcollective
collectives = mcollective
libdir = /usr/share/mcollective/plugins
logger_type = console
loglevel = warn

# Plugins
securityprovider = psk
plugin.psk = unset

connector = rabbitmq 
plugin.rabbitmq.pool.size = 1
plugin.rabbitmq.pool.1.host = myserver 
plugin.rabbitmq.pool.1.port = 61613 
plugin.rabbitmq.pool.1.user = guest
plugin.rabbitmq.pool.1.password = password

# Facts
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
我已经在我的Puppet主服务器上设置了RabbitMQ服务器。据我所知,RabbitMQ配置正确。端口已打开,可以接受连接

在McCollective客户端上,我收到以下错误:

mco ping -v

=> debug 2015/07/17 15:10:54: pluginmanager.rb:167:in `loadclass' Loading
=> Mcollective::Facts::Yaml_facts from mcollective/facts/yaml_facts.rb
=> debug 2015/07/17 15:10:54: pluginmanager.rb:44:in `<<' Registering
=> plugin facts_plugin with class MCollective::Facts::Yaml_facts
=> single_instance: true debug 2015/07/17 15:10:54:
=> pluginmanager.rb:167:in `loadclass' Loading
=> Mcollective::Connector::Rabbitmq from
=> mcollective/connector/rabbitmq.rb debug 2015/07/17 15:10:54:
=> cache.rb:117:in `block in ttl' Cache miss on 'ddl' key
=> 'connector/rabbitmq' debug 2015/07/17 15:10:54: base.rb:94:in `block
=> in findddlfile' Found rabbitmq ddl at
=> /usr/local/lib/site_ruby/1.9.1/mcollective/connector/rabbitmq.ddl
=> debug 2015/07/17 15:10:54: pluginmanager.rb:44:in `<<' Registering
=> plugin connector_plugin with class MCollective::Connector::Rabbitmq
=> single_instance: true debug 2015/07/17 15:10:54:
=> pluginmanager.rb:167:in `loadclass' Loading Mcollective::Security::Psk
=> from mcollective/security/psk.rb debug 2015/07/17 15:10:54:
=> pluginmanager.rb:44:in `<<' Registering plugin security_plugin with
=> class MCollective::Security::Psk single_instance: true debug
=> 2015/07/17 15:10:54: pluginmanager.rb:167:in `loadclass' Loading
=> Mcollective::Registration::Agentlist from
=> mcollective/registration/agentlist.rb debug 2015/07/17 15:10:54:
=> pluginmanager.rb:44:in `<<' Registering plugin registration_plugin
=> with class MCollective::Registration::Agentlist single_instance: true
=> debug 2015/07/17 15:10:54: pluginmanager.rb:47:in `<<' Registering
=> plugin global_stats with class MCollective::RunnerStats
=> single_instance: true info 2015/07/17 15:10:54: config.rb:167:in
=> `loadconfig' The Marionette Collective version 2.8.2 started by
=> /usr/bin/mco using config file /etc/mcollective/client.cfg debug
=> 2015/07/17 15:10:54: pluginmanager.rb:167:in `loadclass' Loading
=> MCollective::Application::Ping from mcollective/application/ping.rb
=> debug 2015/07/17 15:10:54: pluginmanager.rb:44:in `<<' Registering
=> plugin ping_application with class MCollective::Application::Ping
=> single_instance: true debug 2015/07/17 15:10:54:
=> pluginmanager.rb:80:in `[]' Returning new plugin ping_application with
=> class MCollective::Application::Ping debug 2015/07/17 15:10:54:
=> pluginmanager.rb:80:in `[]' Returning new plugin connector_plugin with
=> class MCollective::Connector::Rabbitmq info 2015/07/17 15:10:54:
=> rabbitmq.rb:106:in `initialize' RabbitMQ connector initialized.  Using
=> stomp-gem 1.3.2 debug 2015/07/17 15:10:54: pluginmanager.rb:80:in `[]'
=> Returning new plugin security_plugin with class
=> MCollective::Security::Psk debug 2015/07/17 15:10:54:
=> pluginmanager.rb:83:in `[]' Returning cached plugin global_stats with
=> class MCollective::RunnerStats debug 2015/07/17 15:10:54:
=> rabbitmq.rb:136:in `block in connect' Adding
=> server:61613 to the connection pool
=> info 2015/07/17 15:10:54: rabbitmq.rb:201:in `connection_headers'
=> Connecting without STOMP 1.1 heartbeats, consider setting
=> plugin.rabbitmq.heartbeat_interval info 2015/07/17 15:10:54:
=> rabbitmq.rb:10:in `on_connecting' TCP Connection attempt 0 to
=> stomp://server:61613 info
=> 2015/07/17 15:10:54: rabbitmq.rb:15:in `on_connected' Connected to
=> stomp://guest@server:61613 debug
=> 2015/07/17 15:10:54: pluginmanager.rb:83:in `[]' Returning cached
=> plugin security_plugin with class MCollective::Security::Psk debug
=> 2015/07/17 15:10:54: base.rb:178:in `create_request' Encoding a
=> request for agent 'discovery' in collective mcollective with request
=> id c93c6c5c19ed5a96abaa93eb2da8e6b1 debug 2015/07/17 15:10:54:
=> psk.rb:98:in `callerid' Setting callerid to uid=0 based on
=> callertype=uid debug 2015/07/17 15:10:54: client.rb:96:in `subscribe'
=> Subscribing to reply target for agent discovery debug 2015/07/17
=> 15:10:54: pluginmanager.rb:83:in `[]' Returning cached plugin
=> connector_plugin with class MCollective::Connector::Rabbitmq debug
=> 2015/07/17 15:10:54: client.rb:225:in `start_publisher' Starting
=> publishing with publish timeout of  debug 2015/07/17 15:10:54:
=> client.rb:228:in `block in start_publisher' Sending request
=> c93c6c5c19ed5a96abaa93eb2da8e6b1 to the discovery agent with ttl 60 in
=> collective mcollective debug 2015/07/17 15:10:54:
=> pluginmanager.rb:83:in `[]' Returning cached plugin connector_plugin
=> with class MCollective::Connector::Rabbitmq debug 2015/07/17 15:10:54:
=> rabbitmq.rb:332:in `publish' Sending a broadcast message to RabbitMQ
=> target '/exchange/mcollective_broadcast/discovery' with headers
=> '{"reply-to"=>"/temp-queue/mcollective_reply_discovery",
=> "expiration"=>"70000", "mc_sender"=>"ubuntu"}' debug 2015/07/17
=> 15:10:54: client.rb:239:in `start_receiver' Starting response receiver
=> with timeout of 5 debug 2015/07/17 15:10:54: rabbitmq.rb:287:in
=> `receive' Waiting for a message from RabbitMQ debug 2015/07/17
=> 15:10:54: rabbitmq.rb:309:in `receive' Unexpected 'ERROR' frame.
=> Headers: {"message"=>"AMQP channel died",
=> "content-type"=>"text/plain", "version"=>"1.0,1.1,1.2",
=> "content-length"=>"144"} Body: "Reason: {shutdown,\n
=> {server_initiated_close,404,\n                <<\"NOT_FOUND - no
=> exchange 'mcollective_broadcast' in vhost '/'\">>}}" debug 2015/07/17
=> 15:10:54: client.rb:106:in `unsubscribe' Unsubscribing reply target
=> for discovery debug 2015/07/17 15:10:54: pluginmanager.rb:83:in `[]'
=> Returning cached plugin connector_plugin with class
=> MCollective::Connector::Rabbitmq
=>
=> The ping application failed to run: Received frame of type 'ERROR'
=> expected 'MESSAGE'
=>
=> Received frame of type 'ERROR' expected 'MESSAGE'
=> (MCollective::UnexpectedMessageType)  from
=> /usr/local/lib/site_ruby/1.9.1/mcollective/connector/rabbitmq.rb:310:in
=> `receive'  <----  from
=> /usr/local/lib/site_ruby/1.9.1/mcollective/client.rb:122:in `receive'
=>   from /usr/local/lib/site_ruby/1.9.1/mcollective/client.rb:244:in
=> `block in start_receiver'   from /usr/lib/ruby/1.9.1/timeout.rb:69:in
=> `timeout'   from
=> /usr/local/lib/site_ruby/1.9.1/mcollective/client.rb:242:in
=> `start_receiver'  from
=> /usr/local/lib/site_ruby/1.9.1/mcollective/client.rb:197:in
=> `unthreaded_req'  from
=> /usr/local/lib/site_ruby/1.9.1/mcollective/client.rb:183:in `req'
=>   from
=> /usr/share/mcollective/plugins/mcollective/application/ping.rb:58:in
=> `main'  from
=> /usr/local/lib/site_ruby/1.9.1/mcollective/application.rb:293:in `run'
=>   from /usr/local/lib/site_ruby/1.9.1/mcollective/applications.rb:23:in
=> `run'   from /usr/bin/mco:20:in `<main>' debug 2015/07/17 15:10:54:
=> pluginmanager.rb:83:in `[]' Returning cached plugin connector_plugin
=> with class MCollective::Connector::Rabbitmq debug 2015/07/17 15:10:54:
=> rabbitmq.rb:449:in `disconnect' Disconnecting from RabbitMQ info
=> 2015/07/17 15:10:54: rabbitmq.rb:20:in `on_disconnect' Disconnected
=> from stomp://guest@server:61613
mco-ping-v
=>调试2015/07/17 15:10:54:pluginmanager.rb:167:in'loadclass'加载
=>Mcollective::Facts::来自Mcollective/Facts/Yaml_Facts.rb的Yaml_事实
=>调试2015/07/17 15:10:54:pluginmanager.rb:44:in`Mcollective::Connector::Rabbitmq from
=>mcollective/connector/rabbitmq.rb调试2015/07/17 15:10:54:
=>cache.rb:117:在'ddl'键上的'block in ttl'缓存未命中
=>'connector/rabbitmq'调试2015/07/17 15:10:54:base.rb:94:in`block
=>在FindDDDLFile'中找到位于的rabbitmq ddl
=>/usr/local/lib/site_ruby/1.9.1/mcollective/connector/rabbitmq.ddl
=>调试2015/07/17 15:10:54:pluginmanager.rb:44:in`from mcollective/security/psk.rb调试2015/07/17 15:10:54:
=>pluginmanager.rb:44:in`Mcollective::Registration::Agentlist from
=>mcollective/registration/agentlist.rb调试2015/07/17 15:10:54:
=>pluginmanager.rb:44:in`pluginglobal_stats和类MCollective::RunnerStats
=>单实例:真实信息2015/07/17 15:10:54:config.rb:167:in
=>`loadconfig'由启动的木偶集合版本2.8.2
=>/usr/bin/mco使用配置文件/etc/mcollective/client.cfg调试
=>2015/07/17 15:10:54:pluginmanager.rb:167:in'loadclass'加载
=>MCollective::Application::Ping来自MCollective/Application/Ping.rb
=>debug 2015/07/17 15:10:54:pluginmanager.rb:44:in`class MCollective::Application::Ping debug 2015/07/17 15:10:54:
=>pluginmanager.rb:80:in`[]返回新插件连接器\u插件
=>类别MCollective::Connector::Rabbitmq信息2015/07/17 15:10:54:
=>rabbitmq.rb:106:在'initialize'中,rabbitmq连接器已初始化。使用
=>stompgem1.3.2调试2015/07/17 15:10:54:pluginmanager.rb:80:in`[]
=>返回新插件安全性\u带有类的插件
=>MCollective::Security::Psk调试2015/07/17 15:10:54:
=>pluginmanager.rb:83:in`[]返回缓存的插件全局_统计信息
=>类MCollective::RunnerStats调试2015/07/17 15:10:54:
=>rabbitmq.rb:136:in'block in connect'中添加
=>服务器:61613到连接池
=>info 2015/07/17 15:10:54:rabbitmq.rb:201:in'connection_headers'
=连接无跺脚1.1心跳,考虑设置
=>plugin.rabbitmq.heartbeat\u间隔信息2015/07/17 15:10:54:
=>rabbitmq.rb:10:在'on_connecting'中,TCP连接尝试0到
=> stomp://server:61613 信息
=>2015/07/17 15:10:54:rabbitmq.rb:15:in'on_connected'连接到
=> stomp://guest@服务器:61613调试
=>2015/07/17 15:10:54:pluginmanager.rb:83:in`[]返回缓存
=>插件安全性\u类为MCollective::security::Psk debug的插件
=>2015/07/17 15:10:54:base.rb:178:in'create_request'编码a
=>在集合mcollective中请求代理“发现”并请求
=>id c93c6c5c19ed5a96abaa93eb2da8e6b1调试2015/07/17 15:10:54:
=>psk.rb:98:在“callerid”中,根据
=>callertype=uid调试2015/07/17 15:10:54:client.rb:96:in'subscribe'
=>订阅代理发现调试的回复目标2015/07/17
=>15:10:54:pluginmanager.rb:83:in`[]返回缓存的插件
=>连接器\具有MCollective::connector::Rabbitmq调试类的插件
=>2015/07/17 15:10:54:client.rb:225:in'start\u publisher'开始
=>发布超时为调试2015/07/17 15:10:54的发布:
=>client.rb:228:in`block in start\u publisher'发送请求
=>将c93c6c5c19ed5a96abaa93eb2da8e6b1发送到ttl为60的查找代理
=>集体mcollective调试2015/07/17 15:10:54:
=>pluginmanager.rb:83:in`[]返回缓存的插件连接器\u插件
=>使用类MCollective::Connector::Rabbitmq调试2015/07/17 15:10:54:
=>rabbitmq.rb:332:在“发布”中向rabbitmq发送广播消息
=>带有标题的目标“/exchange/mcollective\u广播/发现”
=>“{”回复“=>”/temp queue/mcollective\u reply\u discovery”,
=>“过期”=>“70000”,“mc_发送者”=>“ubuntu”}调试2015/07/17
=>15:10:54:client.rb:239:in'start\u receiver'启动响应接收器
=>超时为5调试2015/07/17 15:10:54:rabbitmq.rb:287:in
=>`receive'正在等待来自RabbitMQ调试2015/07/17的消息
=>15:10:54:rabbitmq.rb:309:在“接收”意外的“错误”帧中。
=>标题:{“消息”=>“AMQP通道已死亡”,
=>“内容类型”=>“文本/普通”、“版本”=>“1.0,1.1,1.2”,
=>“内容长度”=>“144”}正文:“原因:{关闭,\n
=>{server\u initiated\u close,404\n>}“调试2015/07/17
=>15:10:54:client.rb:106:in'unsubscribe'取消订阅回复目标
=>对于discovery debug 2015/07/17 15:10:54:pluginmanager.rb:83:in`[]'
=>返回缓存插件连接器\u带有类的插件
=>MCollective::Connector::Rabbitmq
=>
=>ping应用程序无法运行:收到类型为“ERROR”的帧
=>预期的“消息”
=>
=>收到的帧类型为“错误”,预期为“消息”
=>(MCollective::UnexpectedMessageType)来自
=>/usr/local/lib/site\u ruby/1.9.1/mcollective/connector/rabbitmq.rb:310:in
=>`receive'/usr/local/lib/site\u ruby/1.9.1/mcollective/client.rb:122:in`receive'
=>来自/usr/local/lib/site_ruby/1.9.1/mcollective/client.rb:244:in
=>`block in start_receiver'来自/usr/lib/ruby/1.9.1/timeout.rb:69:in
=>“超时”来自
=>/usr/local/lib/site\u ruby/1.9.1/mcollective/client.rb:242:in
=>“启动接收器”
=>/usr/local/lib/site\u ruby/1.9.1/mcollective/client.rb:197:in
=>“无线程请求”来自
=>/usr/local/lib/site\u ruby/1.9.1/mcollective/client.rb:183:in`req'
=>来自
=>/usr/share/mcollective/plugins/mcollective/application/ping.rb:58:in
=>'main'来自
=>/usr/local/lib/site\u ruby/1.9.1/mcollective/application.rb:293:in'run'
=>来自/usr/local/lib/site\u ruby/1.9.1/mcollective/applications.rb:23:in
=>'run'from/usr/bin/mco:20:in``调试2015/07/17 15:10:54:
=>pluginmanager.rb:83:in`[]返回缓存的插件连接器\u插件
=>与
rabbitmqadmin declare vhost name=/mcollective
for collective in mcollective ; do
      rabbitmqadmin declare exchange --user=admin --password=changeme --vhost=/mcollective name=${collective}_broadcast type=topic
      rabbitmqadmin declare exchange --user=admin --password=changeme --vhost=/mcollective name=${collective}_directed type=direct
done
rabbitmqadmin declare exchange --user=admin --password=changeme --vhost=/mcollective name=mcollective_reply type=direct
plugin.rabbitmq.use_reply_exchange = true