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@puppetserver rpms]# yum install erlang #RabbitMQ依赖erlang语言,需要安装大概65个左右的erlang依赖包
[root@puppetserver rpms]# yum install rabbitmq-server
[root@puppetserver rpms]# ll /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/plugins/ #默认已经安装了stomp插件,老版本需要下载安装
-rw-r--r-- 1 root root 242999 Aug 24 17:42 amqp_client-3.1.5.ez
-rw-r--r-- 1 root root  85847 Aug 24 17:42 rabbitmq_stomp-3.1.5.ez
…

2.1.2 启动rabbitmq-server

[root@puppetserver rpms]# /etc/rc.d/init.d/rabbitmq-server start #启动rabbitmq服务
Starting rabbitmq-server: SUCCESS
rabbitmq-server.
[root@puppetserver rpms]# /etc/rc.d/init.d/rabbitmq-server status #查看rabbitmq状态
Status of node rabbit@puppetserver ...
[{pid,43198},
 {running_applications,[{rabbit,"RabbitMQ","3.1.5"},
                        {mnesia,"MNESIA  CXC 138 12","4.5"},
                        {os_mon,"CPO  CXC 138 46","2.2.7"},
                        {xmerl,"XML parser","1.2.10"},
                        {sasl,"SASL  CXC 138 11","2.1.10"},
                        {stdlib,"ERTS  CXC 138 10","1.17.5"},
                        {kernel,"ERTS  CXC 138 10","2.14.5"}]},
 {os,{unix,linux}},
 {erlang_version,"Erlang R14B04 (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@puppetserver rpms]# netstat -nlp | grep beam #默认监听端口为5672
tcp        0      0 0.0.0.0:44422               0.0.0.0:*                   LISTEN      43198/beam          
tcp        0      0 :::5672                     :::*                        LISTEN      43198/beam

2.1.3 配置RabbitMQ

2.1.3.1 加载amqp_client和rabbit_stomp插件

[root@puppetserver sbin]#ln -s /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-plugins /usr/sbin/rabbitmq-plugins #创建命令rabbitmq-plugins的软连接
[root@puppetserver sbin]# ln -s /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-env /usr/sbin/rabbitmq-env #创建命令rabbitmq-env的软连接
[root@puppetserver sbin]# rabbitmq-plugins enable rabbitmq_stomp #开启rabbitmq_stomp插件
The following plugins have been enabled:
  amqp_client
  rabbitmq_stomp
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@puppetserver sbin]# /etc/rc.d/init.d/rabbitmq-server restart
Restarting rabbitmq-server: SUCCESS
rabbitmq-server.
[root@puppetserver rabbitmq]# tailf /var/log/rabbitmq/rabbit\@puppetserver.log #可以从日志看到stomp插件加载成功
=INFO REPORT==== 3-Oct-2013::20:25:18 ===
started STOMP TCP Listener on [::]:61613
=INFO REPORT==== 3-Oct-2013::20:25:18 ===
Server startup complete; 2 plugins started.
 * 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@puppetserver rpms]# rabbitmqctl delete_user guest
Deleting user "guest" ...
...done.
[root@puppetserver rpms]# rabbitmqctl add_user mcollective secret
Creating user "mcollective" ...
...done.
[root@puppetserver rpms]# rabbitmqctl set_permissions -p "/" mcollective  ".*" ".*" ".*"
Setting permissions for user "mcollective" in vhost "/" ...
...done.
[root@puppetserver sbin]# rabbitmqctl list_users #查看监听用户
Listing users ...
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@puppetserver rpms]# yum install mcollective-common  mcollective-client #依赖包rubygem-stomp

3.1.2 节点安装MCollective服务端

[root@agent1 ~]# yum install mcollective  mcollective-common #依赖rubygem-stomp、rubygems和ruby相关包

3.2 配置MCollective

3.2.1 测试端配置MCollective客户端

[root@puppetserver rpms]# 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@agent1 rpms]# 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/mcollective start
Starting mcollective:                                      [  OK  ]
[root@agent1 ~]# chkconfig mcollective on
[root@agent1 ~]#

3.3 测试Mcollective与Middleware通信

[root@puppetserver rpms]# mco ping  #检查所有存活的节点
agent2.kisspuppet.com                       time=119.98 ms
agent1.kisspuppet.com                       time=159.31 ms
---- ping statistics ----
2 replies max: 159.31 min: 119.98 avg: 139.64 
[root@puppetserver rpms]# mco find
agent1.kisspuppet.com
agent2.kisspuppet.com


本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1566372,如需转载请自行联系原作者
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4月前
|
消息中间件 存储 JSON
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
41 0
|
16天前
|
消息中间件 存储 Java
RocketMQ部署文档
RocketMQ部署文档
|
19天前
|
消息中间件 存储 数据库
RabbitMQ入门指南(二):架构和管理控制台的使用
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。
43 0
RabbitMQ入门指南(二):架构和管理控制台的使用
|
2月前
|
消息中间件 Kubernetes Docker
KubeSphere 核心实战之三【在kubesphere平台上部署ElasticSearch、应用商店部署RabbitMQ和应用市场部署Zookeeper】(实操篇 3/4)
KubeSphere 核心实战之三【在kubesphere平台上部署ElasticSearch、应用商店部署RabbitMQ和应用市场部署Zookeeper】(实操篇 3/4)
41 0
|
2月前
|
消息中间件 存储 Cloud Native
深度剖析 RocketMQ 5.0,架构解析:云原生架构如何支撑多元化场景?
了解 RocketMQ 5.0 的核心概念和架构概览;然后我们会从集群角度出发,从宏观视角学习 RocketMQ 的管控链路、数据链路、客户端和服务端如何交互;学习 RocketMQ 如何实现数据的存储,数据的高可用,如何利用云原生存储进一步提升竞争力。
140079 2
|
2月前
|
消息中间件 缓存 API
|
2月前
|
Kubernetes 测试技术 持续交付
探索微服务架构下的持续集成与部署最佳实践
本文将深入探讨在微服务架构下实施持续集成与部署的最佳实践,介绍如何利用现代化工具和流程来实现自动化测试、持续集成、灰度发布等关键环节,帮助开发团队提升交付效率和质量。
|
3月前
|
KVM 虚拟化 Android开发
DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署
DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署
61 1
|
3月前
|
云计算 开发者 Docker
深入浅出:使用Docker部署微服务架构
在当今快速迭代的软件开发环境中,微服务架构凭借其灵活性和可扩展性成为了热门趋势。本文将探讨如何利用Docker这一强大的容器化技术,简化和加速微服务应用的部署与管理过程。我们将从微服务的基本概念出发,逐步深入到Docker的核心功能,最后通过一个实际案例演示整个部署流程。文章旨在为开发者提供一个清晰、实用的指南,帮助他们有效地利用Docker在微服务架构下的应用部署。
27 0
|
3月前
|
消息中间件 Linux RocketMQ
【RocketMq】RocketMq 4.9.4 Windows-docker 部署
【RocketMq】RocketMq 4.9.4 Windows-docker 部署
71 0