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

[[email protected] rpms]# yum install erlang #RabbitMQ依赖erlang语言,需要安装大概65个左右的erlang依赖包
[[email protected] rpms]# yum install rabbitmq-server
[[email protected] 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

[[email protected] rpms]# /etc/rc.d/init.d/rabbitmq-server start #启动rabbitmq服务
Starting rabbitmq-server: SUCCESS
rabbitmq-server.
[[email protected] rpms]# /etc/rc.d/init.d/rabbitmq-server status #查看rabbitmq状态
Status of node [email protected] ...
[{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.
[[email protected] 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插件

[[email protected] sbin]#ln -s /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-plugins /usr/sbin/rabbitmq-plugins #创建命令rabbitmq-plugins的软连接
[[email protected] sbin]# ln -s /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-env /usr/sbin/rabbitmq-env #创建命令rabbitmq-env的软连接
[[email protected] 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.
[[email protected] sbin]# /etc/rc.d/init.d/rabbitmq-server restart
Restarting rabbitmq-server: SUCCESS
rabbitmq-server.
[[email protected] 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

    [[email protected] rpms]# vim /etc/rabbitmq/rabbitmq.config
    [

         {stomp,[ {tcp_listeners, [61613]} ]} #设置connector为stomp,监听端口为61613

    ].
    [[email protected] rpms]# /etc/rc.d/init.d/rabbitmq-server restart
    Restarting rabbitmq-server: SUCCESS
    rabbitmq-server.
    [[email protected] 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”,然后设置权限。

[[email protected] rpms]# rabbitmqctl delete_user guest
Deleting user "guest" ...
...done.
[[email protected] rpms]# rabbitmqctl add_user mcollective secret
Creating user "mcollective" ...
...done.
[[email protected] rpms]# rabbitmqctl set_permissions -p "/" mcollective  ".*" ".*" ".*"
Setting permissions for user "mcollective" in vhost "/" ...
...done.
[[email protected] 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客户端

[[email protected] rpms]# yum install mcollective-common  mcollective-client #依赖包rubygem-stomp

3.1.2 节点安装MCollective服务端

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

3.2 配置MCollective

3.2.1 测试端配置MCollective客户端

[[email protected] 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服务端

[[email protected] 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
[[email protected] ~]# /etc/rc.d/init.d/mcollective start
Starting mcollective:                                      [  OK  ]
[[email protected] ~]# chkconfig mcollective on
[[email protected] ~]#

3.3 测试Mcollective与Middleware通信

[[email protected] 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 
[[email protected] rpms]# mco find
agent1.kisspuppet.com
agent2.kisspuppet.com

返回主目录

交流方式:

微信公众号:puppet2014,可微信搜索加入,也可以扫描以下二维码进行加入

微信公众号

QQ交流群:296934942

时间: 2024-11-13 12:02:08

MCollective架构篇2-MCollective+MQ架构的部署的相关文章

mysql 架构篇系列 2 复制架构一主一从搭建(异步复制)

一. 环境准备 1.1 主库环境(172.168.18.201) 环境 说明 查看脚本 操作系统版本 CentOS Linux release 7.4.1708 (Core) cat /etc/redhat-release 操作系统用户名和密码 root  js*2015 IP地址 172.168.18.201 ip addr 网关Gateway 172.168.18.1 cat /etc/sysconfig/network-scripts DNS 172.168.16.11 mysql 版本

MCollective架构篇7-多MQ下MCollective高可用部署

零基础学习Puppet自动化配置管理系列文档 存在这样一种场景,当你的puppet基于mcollective环境搭建完成之后,需要考虑MQ的高可用,否则,MQ挂掉之后就不能用mco命令进行推送了哦. 如何做MQ的高可用呢,其实有两种方法: 方法一:两台MQ做集群,通过复制队列信息进行同步,节点访问可通过浮动IP进行. 方法二:两台MQ独立,在MC Server端做failover,通过rabbtimq的plugins参数实现,可设置自动检测,切换时间等等. 一.配置Rabbitmq 安装(略),

MCollective架构篇3-Puppet插件的部署及测试

零基础学习Puppet自动化配置管理系列文档 1 puppet插件的安装及测试 MCollective可以使用多种方式进行扩展.最普遍的一种扩展MCollective的方式就是重用已经写好的agent插件.这些小的Ruby库可以让MCollective在整个集群中执行自定义的命令. 一个agent插件通常包含一个Ruby库,它必须被分发到所有运行MCollective agent的节点上.另外,一个数据定义文件(DDL)提供了插件接受的传入参数的具体描述,整个DDL文件需要放在MCollecti

MCollective架构篇4-MCollective各种插件的部署及测试

零基础学习Puppet自动化配置管理系列文档 MCollective只是一个框架,如果需要在上面发挥各种作用,那就需要各种插件的支持.官方提供了很多这方面的插件,除此之外,还有第三方的插件,比如shell插件等,下面会介绍各种插件的安装,以及插件之间如何组合进行使用. 1.在mcollective client端和server端安装各种官网plugins 首先去官网下载各个插件 http://yum.puppetlabs.com 1.1 下载collective-client端 [[email 

面向服务的体系架构(SOA)—架构篇

面向服务的体系架构(SOA)-架构篇 1.面向服务的体系架构(SOA) 面向服务的架构(service-oriented architecture)是Gartner于2O世纪9O年代中期提出的面向服务架构的概念.2002年的l2月,Gartner提出"面向服务的架构(SOA)"是"现代应用开发领域最重要的课题"之后.国内外计算机专家.学者掀起了对SOA的积极研究与探索. 在分布式的环境中,将各种功能都以服务的形式提供给最终用户或者其他服务.如今,企业级应用的开发都采

高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

点击链接加入群[Dubbo技术交流2群]:https://jq.qq.com/?_wv=1027&k=46DcDFI 一.环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso JDK版本:jdk1.7.0_45 MyCat版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz MyCat节点IP:192.168.1.203      主机名:edu-mycat-01  主机配置:4核CPU.4G内存 MySQL版本:

Web应用扩展系列(1):架构篇(转)

原文:Web应用扩展系列(1):架构篇 在这篇文章中,我将尽量涵盖Web应用扩展或性能调优时可能会遇到的一些架构问题. 首先,让我们来统一一些名词或项目的概念,下文中我将列举在扩展Web应用时可能会遇到的多种问题,包括: 架构瓶颈 数据库扩展 CPU依赖的应用 IO依赖的应用 而如何确定优化Web应用线程池大小的内容将会在下一篇文章中给出. 性能(performance)这个词对于Web应用来说通常意味着一些指标,对于大部分的开发者而言,他们主要关心的是响应时间(response time)以及

分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)

环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL 版本:mysql-5.6.22.tar.gz 主节点 IP:192.168.1.205 主机名:edu-mysql-01 从节点 IP:192.168.1.206 主机名:edu-mysql-02 MySQL 主从复制官方文档 http://dev.mysql.com/doc/refman/5.6/en/replication.html MySQL 主从复制的方式 MySQL5.6 开始主从复制有两种方式:

第五篇 SQL Server安全架构和安全

本篇文章是SQL Server安全系列的第五篇,详细内容请参考原文. 架构本质上是一个数据库对象,其他对象的一个容器,在复杂的数据库中它能够很容易的管理各组对象.架构具有重要的安全功能.在这一篇你会学习如何给主体访问一组对象,通过给架构分配权限而不是单个表.代码模块和其他对象.你还会了解用户架构分离的好处,以及如何提高对象安全性,如何为用户.组使用默认架构来简化对象访问管理和安全性.Schemas with Roles and PermissionsThe relationship of sch