MCollective架构篇2-MCollective+MQ架构的部署
零基础学习Puppet自动化配置管理系列文档 1 Mcollective介绍 MCollective 是一个构建服务器编排(Server Orchestration)和并行工作执行系统的框架。 首先,MCollective 是一种针对服务器集群进行可编程控制的系统管理解决方案。在这一点上,它的功能类似:Func,Fabric 和 Capistrano。 其次,MCollective 的设计打破基于中心存储式系统和像 SSH 这样的工具,不再仅仅痴迷于 SSH 的 For 循环。它使用发布订阅中间件(Publish Subscribe Middleware)这样的现代化 工具和通过目标数据(meta data)而不是主机名(hostnames)来实时发现网络资源这样的现代化理念。提供了一个可扩展的而且迅速的并行执行环境。 MCollective 工具为命令行界面,但它可与数千个应用实例进行通信,而且传输速度惊人。无论部署的实例位于什么位置,通信都能以线速进行传输,使用的是一个类似多路传送 的推送信息系统。MCollective 工具没有可视化用户界面,用户只能通过检索来获取需要应用的实例。Puppet Dashboard 提供有这部分功能。 2 安装和配置RabbitMQ 2.1 安装和配置RabbitMQ 2.1.1 安装RabbitMQ [root@puppetserverrpms]#yuminstallerlang#RabbitMQ依赖erlang语言,需要安装大概65个左右的erlang依赖包 [root@puppetserverrpms]#yuminstallrabbitmq-server [root@puppetserverrpms]#ll/usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/plugins/#默认已经安装了stomp插件,老版本需要下载安装 -rw-r--r--1rootroot242999Aug2417:42amqp_client-3.1.5.ez -rw-r--r--1rootroot85847Aug2417:42rabbitmq_stomp-3.1.5.ez … 2.1.2 启动rabbitmq-server [root@puppetserverrpms]#/etc/rc.d/init.d/rabbitmq-serverstart#启动rabbitmq服务 Startingrabbitmq-server:SUCCESS rabbitmq-server. [root@puppetserverrpms]#/etc/rc.d/init.d/rabbitmq-serverstatus#查看rabbitmq状态 Statusofnoderabbit@puppetserver... [{pid,43198}, {running_applications,[{rabbit,"RabbitMQ","3.1.5"}, {mnesia,"MNESIACXC13812","4.5"}, {os_mon,"CPOCXC13846","2.2.7"}, {xmerl,"XMLparser","1.2.10"}, {sasl,"SASLCXC13811","2.1.10"}, {stdlib,"ERTSCXC13810","1.17.5"}, {kernel,"ERTSCXC13810","2.14.5"}]}, {os,{unix,linux}}, {erlang_version,"ErlangR14B04(erts-5.8.5)[source][64-bit][rq:1][async-threads:30][kernel-poll:true]\n"}, {memory,[{total,27101856}, {connection_procs,2648}, {queue_procs,5296}, {plugins,0}, {other_proc,9182320}, {mnesia,57456}, {mgmt_db,0}, {msg_index,21848}, {other_ets,765504}, {binary,3296}, {code,14419185}, {atom,1354457}, {other_system,1289846}]}, {vm_memory_high_watermark,0.4}, {vm_memory_limit,838362726}, {disk_free_limit,1000000000}, {disk_free,15992676352}, {file_descriptors,[{total_limit,924}, {total_used,3}, {sockets_limit,829}, {sockets_used,1}]}, {processes,[{limit,1048576},{used,122}]}, {run_queue,0}, {uptime,4}] ...done. [root@puppetserverrpms]#netstat-nlp|grepbeam#默认监听端口为5672 tcp000.0.0.0:444220.0.0.0:*LISTEN43198/beam tcp00:::5672:::*LISTEN43198/beam 2.1.3 配置RabbitMQ 2.1.3.1 加载amqp_client和rabbit_stomp插件 [root@puppetserversbin]#ln-s/usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-plugins/usr/sbin/rabbitmq-plugins#创建命令rabbitmq-plugins的软连接 [root@puppetserversbin]#ln-s/usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-env/usr/sbin/rabbitmq-env#创建命令rabbitmq-env的软连接 [root@puppetserversbin]#rabbitmq-pluginsenablerabbitmq_stomp#开启rabbitmq_stomp插件 Thefollowingpluginshavebeenenabled: amqp_client rabbitmq_stomp Pluginconfigurationhaschanged.RestartRabbitMQforchangestotakeeffect. [root@puppetserversbin]#/etc/rc.d/init.d/rabbitmq-serverrestart Restartingrabbitmq-server:SUCCESS rabbitmq-server. [root@puppetserverrabbitmq]#tailf/var/log/rabbitmq/rabbit\@puppetserver.log#可以从日志看到stomp插件加载成功 =INFOREPORT====3-Oct-2013::20:25:18=== startedSTOMPTCPListeneron[::]:61613 =INFOREPORT====3-Oct-2013::20:25:18=== Serverstartupcomplete;2pluginsstarted. *amqp_client *rabbitmq_stomp 2.1.3.2 创建rabbitmq.config配置文件,修改监听端口为61613 [root@puppetserver rpms]# vim /etc/rabbitmq/rabbitmq.config [ {stomp,[{tcp_listeners,[61613]}]}#设置connector为stomp,监听端口为61613 ]. [root@puppetserver rpms]# /etc/rc.d/init.d/rabbitmq-server restart Restarting rabbitmq-server: SUCCESS rabbitmq-server. [root@puppetserver rpms]# netstat -nlp | grep beam #默认监听端口为61613 tcp 0 0 0.0.0.0:56532 0.0.0.0: LISTEN 1906/beam.smp tcp 0 0 :::61613 ::: LISTEN 1906/beam.smp tcp 0 0 :::5672 :::* LISTEN 1906/beam.smp 2.1.3.3 删除默认账户guest,为MCollective创建账户“mcollective”并设置密码为“secret”,然后设置权限。 [root@puppetserverrpms]#rabbitmqctldelete_userguest Deletinguser"guest"... ...done. [root@puppetserverrpms]#rabbitmqctladd_usermcollectivesecret Creatinguser"mcollective"... ...done. [root@puppetserverrpms]#rabbitmqctlset_permissions-p"/"mcollective".*"".*"".*" Settingpermissionsforuser"mcollective"invhost"/"... ...done. [root@puppetserversbin]#rabbitmqctllist_users#查看监听用户 Listingusers... mcollective[] ...done. 备注:RabbitMQ拥有一个默认的guest账户,它默认对消息队列拥有全部权限。出于安全方面的考虑,建议删除这个账户。 更多详细配置信息请参考http://www.rabbitmq.com/admin-guide.html 更多详细配置信息请参考:http://docs.puppetlabs.com/mcollective/reference/plugins/connector_rabbitmq.html 3 安装和配置MCollective 3.1 安装MCollective 3.1.1 测试端安装MCollective客户端 [root@puppetserverrpms]#yuminstallmcollective-commonmcollective-client#依赖包rubygem-stomp 3.1.2 节点安装MCollective服务端 [root@agent1~]#yuminstallmcollectivemcollective-common#依赖rubygem-stomp、rubygems和ruby相关包 3.2 配置MCollective 3.2.1 测试端配置MCollective客户端 [root@puppetserverrpms]#vim/etc/mcollective/client.cfg topicprefix=/topic/ main_collective=mcollective collectives=mcollective libdir=/usr/libexec/mcollective logger_type=console loglevel=warn #Plugins securityprovider=psk plugin.psk=a36cd839414370e10fd281b8a38a4f48#MCollective通信共享密钥,和MCollective服务端保持一致 connector=stomp#通信协议 plugin.stomp.host=192.168.100.110#Middleware地址 plugin.stomp.port=61613#Middleware监听端口 plugin.stomp.user=mcollective#Middleware通信账号 plugin.stomp.password=secret#Middleware通信密码 #Facts factsource=yaml plugin.yaml=/etc/mcollective/facts.yaml 3.2.2 节点配置MCollective服务端 [root@agent1rpms]#vim/etc/mcollective/server.cfg topicprefix=/topic/ main_collective=mcollective collectives=mcollective libdir=/usr/libexec/mcollective#存放plugins的位置 logfile=/var/log/mcollective.log loglevel=info daemonize=1 #Plugins securityprovider=psk plugin.psk=a36cd839414370e10fd281b8a38a4f48#MCollective通信共享密钥,和MCollective客户端保持一致 connector=stomp#通信协议 plugin.stomp.host=192.168.100.110#Middleware地址 plugin.stomp.port=61613#Middleware监听端口 plugin.stomp.user=mcollective#Middleware通信账号 plugin.stomp.password=secret#Middleware通信密码 #Facts factsource=yaml plugin.yaml=/etc/mcollective/facts.yaml [root@agent1~]#/etc/rc.d/init.d/mcollectivestart Startingmcollective:[OK] [root@agent1~]#chkconfigmcollectiveon [root@agent1~]# 3.3 测试Mcollective与Middleware通信 [root@puppetserverrpms]#mcoping#检查所有存活的节点 agent2.kisspuppet.comtime=119.98ms agent1.kisspuppet.comtime=159.31ms ----pingstatistics---- 2repliesmax:159.31min:119.98avg:139.64 [root@puppetserverrpms]#mcofind agent1.kisspuppet.com agent2.kisspuppet.com 本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1566372,如需转载请自行联系原作者