CentOs中怎么搭建RabbitMQ3.6单机多实例服务(centos,rabbitmq,编程语言)

时间:2024-05-04 11:55:17 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

rabbitmq简介

rabbitmq是一个开源的amqp实现,服务器端用erlang语言编写,支持多种客户端,如:python、ruby、.net、java、jms、c、php、actionscript、xmpp、stomp等,支持ajax。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

amqp,即advanced message queuing protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

amqp的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

注意事项

centos 7.x 关闭firewall

$systemctlstopfirewalld.service#停止firewall

不想关闭防火墙,就开放15672端口,设置之后可以通过网页方式管理mq

安装安装iptables防火墙

yuminstalliptables-services

添加配置

iptables-iinput-ptcp--dport5672-jacceptiptables-iinput-ptcp--dport15672-jaccept

保存配置

serviceiptablessave

重启

systemctlrestartiptables.service

设置开机自启动

systemctlenableiptables.service

安装

安装 erlang

rabbitmq 安装需要依赖 erlang 环境

$cd/usr/local/src$wgethttp://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm$yuminstallerlang-19.0.4-1.el7.centos.x86_64.rpm

安装 rabbitmq

$cd/usr/local/src$wgethttp://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm$yuminstallrabbitmq-server-3.6.10-1.el7.noarch.rpm

启动服务

$servicerabbitmq-serverstart

服务状态

$servicerabbitmq-serverstatusredirectingto/bin/systemctlstatusrabbitmq-server.service●rabbitmq-server.service-rabbitmqbrokerloaded:loaded(/usr/lib/systemd/system/rabbitmq-server.service;disabled;vendorpreset:disabled)active:active(running)since一2018-03-0521:42:10cst;15sagomainpid:2493(beam.smp)status:"initialized"cgroup:/system.slice/rabbitmq-server.service├─2493/usr/lib64/erlang/erts-8.0.3/bin/beam.smp-ww-a64-p1048576-t5000000-stbtdb-zdbbl32000-ktrue---root/usr/lib64/erlang-prognameerl---home/var/l...├─2634/usr/lib64/erlang/erts-8.0.3/bin/epmd-daemon├─2750erl_child_setup1024├─2760inet_gethost4└─2761inet_gethost43月0521:42:07master01rabbitmq-server[2493]:rabbitmq3.6.10.copyright(c)2007-2017pivotalsoftware,inc.3月0521:42:07master01rabbitmq-server[2493]:####licensedunderthempl.seehttp://www.rabbitmq.com/3月0521:42:07master01rabbitmq-server[2493]:####3月0521:42:07master01rabbitmq-server[2493]:##########logs:/var/log/rabbitmq/rabbit@master01.log3月0521:42:07master01rabbitmq-server[2493]:########/var/log/rabbitmq/rabbit@master01-sasl.log3月0521:42:07master01rabbitmq-server[2493]:##########3月0521:42:07master01rabbitmq-server[2493]:startingbroker...3月0521:42:10master01rabbitmq-server[2493]:systemdunitforactivationcheck:"rabbitmq-server.service"3月0521:42:10master01systemd[1]:startedrabbitmqbroker.3月0521:42:10master01rabbitmq-server[2493]:completedwith0plugins.

查看日志

$less/var/log/rabbitmq/rabbit\@master01.log=inforeport====5-mar-2018::21:42:07===startingrabbitmq3.6.10onerlang19.0.4copyright(c)2007-2017pivotalsoftware,inc.licensedunderthempl.seehttp://www.rabbitmq.com/=inforeport====5-mar-2018::21:42:07===node:rabbit@master01homedir:/var/lib/rabbitmqconfigfile(s):/etc/rabbitmq/rabbitmq.config(notfound)cookiehash:+9losjmr5x/9geguoed28a==log:/var/log/rabbitmq/rabbit@master01.logsasllog:/var/log/rabbitmq/rabbit@master01-sasl.logdatabasedir:/var/lib/rabbitmq/mnesia/rabbit@master01=inforeport====5-mar-2018::21:42:09===memorylimitsetto732mbof1831mbtotal.=inforeport====5-mar-2018::21:42:09===enablingfreediskspacemonitoring=inforeport====5-mar-2018::21:42:09===diskfreelimitsetto50mb=inforeport====5-mar-2018::21:42:09===limitingtoapprox924filehandles(829sockets)=inforeport====5-mar-2018::21:42:09===fhcreadbuffering:off=inforeport====5-mar-2018::21:42:07===startingrabbitmq3.6.10onerlang19.0.4copyright(c)2007-2017pivotalsoftware,inc.licensedunderthempl.seehttp://www.rabbitmq.com/=inforeport====5-mar-2018::21:42:07===node:rabbit@master01homedir:/var/lib/rabbitmqconfigfile(s):/etc/rabbitmq/rabbitmq.config(notfound)cookiehash:+9losjmr5x/9geguoed28a==log:/var/log/rabbitmq/rabbit@master01.logsasllog:/var/log/rabbitmq/rabbit@master01-sasl.logdatabasedir:/var/lib/rabbitmq/mnesia/rabbit@master01=inforeport====5-mar-2018::21:42:09===memorylimitsetto732mbof1831mbtotal.=inforeport====5-mar-2018::21:42:09===enablingfreediskspacemonitoring=inforeport====5-mar-2018::21:42:09===diskfreelimitsetto50mb=inforeport====5-mar-2018::21:42:09===limitingtoapprox924filehandles(829sockets)=inforeport====5-mar-2018::21:42:09===fhcreadbuffering:offfhcwritebuffering:on=inforeport====5-mar-2018::21:42:09===databasedirectoryat/var/lib/rabbitmq/mnesia/rabbit@master01isempty.initialisingfromscratch...=inforeport====5-mar-2018::21:42:09===waitingformnesiatablesfor30000ms,9retriesleft=inforeport====5-mar-2018::21:42:09===waitingformnesiatablesfor30000ms,9retriesleft

这里显示的是没有找到配置文件,我们可以自己创建这个文件

configfile(s):/etc/rabbitmq/rabbitmq.config(notfound)

创建rabbitmq.config

$cd/etc/rabbitmq/$vimrabbitmq.config

编辑内容如下:

[{rabbit,[{loopback_users,[]}]}].

这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。

保存配置后重启服务

$servicerabbitmq-serverrestart

开启管理ui

$/sbin/rabbitmq-pluginsenablerabbitmq_management

重启服务

$servicerabbitmq-serverrestart

访问管理ui

通过 http://ip:15672 使用guest, guest 进行登陆了.

CentOs中怎么搭建RabbitMQ3.6单机多实例服务

授权操作

添加用户

处于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,其他的ip无法直接使用这个账号。 这对于服务器上没有安装桌面的情况是无法管理维护的,除非通过在前面添加一层代理向外提供服务,这个又有些麻烦了,这里通过配置文件来实现这个功能

命令格式

rabbitmqctladd_user<username><newpassword>$rabbitmqctladd_userzhdya123456creatinguser"zhdya"

删除用户

rabbitmqctldelete_user<username>$rabbitmqctldelete_useradmin_testdeletinguser"admin_test"

修改密码

rabbitmqctlchange_password<username><newpassword>$rabbitmqctlchange_passwordzhdya123456changingpasswordforuser"zhdya"

用户授权

rabbitmqctlset_permissions[-pvhostpath]{user}{conf}{write}{read}

该命令使用户zhdya /(可以访问虚拟主机) 中所有资源的配置、写、读权限以便管理其中的资源

$rabbitmqctlset_permissions-p"/"zhdya".*"".*"".*"settingpermissionsforuser"zhdya"invhost"/"

查看用户授权

rabbitmqctllist_permissions[-pvhostpath]$rabbitmqctllist_permissions-p/listingpermissionsinvhost"/"guest.*.*.*zhdya.*.*.*

查看当前用户列表

可以看到添加用户成功了,但不是administrator角色

$rabbitmqctllist_userslistingusersguest[administrator]zhdya[]

添加角色

这里我们也将ymq用户设置为administrator角色

命令格式

rabbitmqctlset_user_tags<username><tag>$rabbitmqctlset_user_tagszhdyaadministratorsettingtagsforuser"zhdya"to[administrator]

再次查看权限

$rabbitmqctllist_userslistingusersguest[administrator]zhdya[administrator]

清除权限信息

rabbitmqctlclear_permissions[-pvhostpath]ymqrabbitmqctlclear_permissions-p/zhdyaclearingpermissionsforuser"zhdya"invhost"/"

官方文档

安装:

访问控制:

网络:

配置:

集群:

命令:

web 界面

CentOs中怎么搭建RabbitMQ3.6单机多实例服务

添加用户

鼠标点击,划红线的角色,选择一种

CentOs中怎么搭建RabbitMQ3.6单机多实例服务

rabbitmq的用户角色分类:

none、management、policymaker、monitoring、administrator

rabbitmq各类角色描述:

none

不能访问 management plugin

management

用户可以通过amqp做的任何事外加:
列出自己可以通过amqp登入的virtual hosts
查看自己的virtual hosts中的queues, exchanges 和 bindings
查看和关闭自己的channels 和 connections
查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。

policymaker

management可以做的任何事外加:
查看、创建和删除自己的virtual hosts所属的policies和parameters

monitoring

management可以做的任何事外加:
列出所有virtual hosts,包括他们不能登录的virtual hosts
查看其他用户的connections和channels
查看节点级别的数据如clustering和memory使用情况
查看真正的关于所有virtual hosts的全局的统计信息

administrator

policymaker和monitoring可以做的任何事外加:
创建和删除virtual hosts
查看、创建和删除users
查看创建和删除permissions
关闭其他用户的connections

设置权限

该用户无权访问任何虚拟主机

CentOs中怎么搭建RabbitMQ3.6单机多实例服务

点击 用户名 set permission

设置可以访问虚拟主机 中所有资源的配置、写、读权限以便管理其中的资源

CentOs中怎么搭建RabbitMQ3.6单机多实例服务

至此rabbitmq单机服务已经完全搭建完毕,下面来操作单机多实例:

rabbitmq 单机多实例

其实在操作前我在网上看到了很多这种方案,多数为如下:

rabbitmq_node_port=5672rabbitmq_nodename=rabbit1rabbitmq-server-detachedrabbitmq_node_port=5673rabbitmq_nodename=rabbit2rabbitmq-server-detachedrabbitmq_node_port=5674rabbitmq_nodename=rabbit3rabbitmq-server-detached

不过我觉得对于新人来说过于简陋和不负责任!!!

第一个节点

下面指定了特定hostname启动的,当然你也可以指定 为localhost。

[root@master01sbin]#vim/etc/hosts#127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6127.0.0.1master01

启动第一个节点

rabbitmq_node_port=5672rabbitmq_nodename=rabbit@master01./rabbitmq-server

第二个节点

[root@master01sbin]#rabbitmq_node_port=5673rabbitmq_nodename=rabbit1@master01rabbitmq-server-detachedwarning:pidfilenotwritten;-detachedwaspassed.

你可能发现不了什么,假如你去掉-detached 你会发现,最后你得到了一个这样的错误信息:崩溃了的信息。。。

crashdumpisbeingwrittento:erl_crash.dump...done

往上翻信息或者查看日志,你会看到这样的提示:

bootfailed===========errordescription:{could_not_start,rabbitmq_mqtt,{{shutdown,{failed_to_start_child,'rabbit_mqtt_listener_sup_:::1883',{shutdown,{failed_to_start_child,{ranch_listener_sup,{acceptor,{0,0,0,0,0,0,0,0},1883}},{shutdown,{failed_to_start_child,ranch_acceptors_sup,{listen_error,{acceptor,{0,0,0,0,0,0,0,0},1883},eaddrinuse}}}}}}},{rabbit_mqtt,start,[normal,[]]}}}

启动第二个节点

[root@master01sbin]#rabbitmq_node_port=5673rabbitmq_server_start_args="-rabbitmq_managementlistener[{port,15673}]-rabbitmq_stomptcp_listeners[61614]-rabbitmq_mqtttcp_listeners[1884]"rabbitmq_nodename=rabbit1./rabbitmq-server-detachedwarning:pidfilenotwritten;-detachedwaspassed.

查看端口:

[root@master01sbin]#!netnetstat-lntpactiveinternetconnections(onlyservers)protorecv-qsend-qlocaladdressforeignaddressstatepid/programnametcp000.0.0.0:43690.0.0.0:*listen3779/epmdtcp000.0.0.0:220.0.0.0:*listen1348/sshdtcp000.0.0.0:156720.0.0.0:*listen3598/beam.smptcp000.0.0.0:156730.0.0.0:*listen5679/beam.smptcp00127.0.0.1:250.0.0.0:*listen2065/mastertcp000.0.0.0:256720.0.0.0:*listen3598/beam.smptcp000.0.0.0:256730.0.0.0:*listen5679/beam.smptcp600:::3306:::*listen1418/mysqldtcp600:::4369:::*listen3779/epmdtcp600:::22:::*listen1348/sshdtcp600::1:25:::*listen2065/mastertcp600:::5672:::*listen3598/beam.smptcp600:::5673:::*listen5679/beam.smp

查看rabbit1的状态:

cd/sbin/./rabbitmqctlstatus-nrabbit1

第三个节点

[root@master01sbin]#rabbitmq_node_port=5674rabbitmq_nodename=rabbit2@master01rabbitmq-server-detachedwarning:pidfilenotwritten;-detachedwaspassed.

启动第三个节点

[root@master01sbin]#rabbitmq_node_port=5674rabbitmq_server_start_args="-rabbitmq_managementlistener[{port,15674}]-rabbitmq_stomptcp_listeners[61615]-rabbitmq_mqtttcp_listeners[1885]"rabbitmq_nodename=rabbit2./rabbitmq-server-detachedwarning:pidfilenotwritten;-detachedwaspassed.

查看rabbit2的状态:

cd/sbin/./rabbitmqctlstatus-nrabbit2

查看启动状态:

[root@master01sbin]#!netnetstat-lntpactiveinternetconnections(onlyservers)protorecv-qsend-qlocaladdressforeignaddressstatepid/programnametcp000.0.0.0:256740.0.0.0:*listen6759/beam.smptcp000.0.0.0:43690.0.0.0:*listen3779/epmdtcp000.0.0.0:220.0.0.0:*listen1348/sshdtcp000.0.0.0:156720.0.0.0:*listen3598/beam.smptcp000.0.0.0:156730.0.0.0:*listen5679/beam.smptcp00127.0.0.1:250.0.0.0:*listen2065/mastertcp000.0.0.0:156740.0.0.0:*listen6759/beam.smptcp000.0.0.0:256720.0.0.0:*listen3598/beam.smptcp000.0.0.0:256730.0.0.0:*listen5679/beam.smptcp600:::5674:::*listen6759/beam.smptcp600:::3306:::*listen1418/mysqldtcp600:::4369:::*listen3779/epmdtcp600:::22:::*listen1348/sshdtcp600::1:25:::*listen2065/mastertcp600:::5672:::*listen3598/beam.smptcp600:::5673:::*listen5679/beam.smp

这样的话你可以通过:http://192.168.161.161:15672/#/,http://192.168.161.161:15673/#/ ,http://192.168.161.161:15674/#/ 访问web查看相关节点是否真的存在。下面就是如何实现集群操作了。

集群操作

把节点rabbit1 加入 rabbit中

1.停止第二个节点的应用程序

./rabbitmqctl-nrabbit1@master01stop_app

2.重新设置第二个节点的元数据和状态为清空状态。

./rabbitmqctl-nrabbit1@master01reset

3.加入第一节点

./rabbitmqctl-nrabbit1@master01join_clusterrabbit@localhost

4.重新启动第二节点

./rabbitmqctl-nrabbit1@master01start_app

现在再次登陆web界面你可以到web端看到集群已经存在了!!!

把节点rabbit2 加入 rabbit中

同如上步骤的1234:其中注意点是,如果你需要设置第三个集群节点为内存模式,而非磁盘模式,可以参考当前版本的命令提示,在最后加上 –ram 参数

添加第三节点的完整命令

./rabbitmqctl-nrabbit2@master01stop_app./rabbitmqctl-nrabbit2@master01reset./rabbitmqctl-nrabbit2@master01join_clusterrabbit@master01./rabbitmqctl-nrabbit2@master01start_app

注意:如上第三步,如果你要设置第三个集群节点为内存模式,而非磁盘模式,那就需要 --ram

./rabbitmqctl-nrabbit2@master01join_clusterrabbit@master01--ram

查看集群状态

./rabbitmqctlcluster_status-nrabbit@localhost[root@master01sbin]#./rabbitmqctlcluster_status-nrabbit@localhostclusterstatusofnoderabbit@localhost[{nodes,[{disc,['rabbit1@master01','rabbit2@master01',rabbit@localhost]}]},{running_nodes,['rabbit2@master01','rabbit1@master01',rabbit@localhost]},{cluster_name,<<"rabbit@master01">>},{partitions,[]},{alarms,[{'rabbit2@master01',[]},{'rabbit1@master01',[]},{rabbit@localhost,[]}]}]

到web端看下效果吧!!!

CentOs中怎么搭建RabbitMQ3.6单机多实例服务

至此,集群搭建完毕。

遇到的问题:

rabbitmq在安装后可能会出现无法启动,如:

applyingpluginconfigurationtorabbit@192...failed.*couldnotcontactnoderabbit@192.changeswilltakeeffectatbrokerrestart.*options:--online-failifbrokercannotbecontacted.--offline-donottrytocontactbroker.error:unabletoconnecttonoderabbit@192:nodedowndiagnostics===========attemptedtocontact:[rabbit@192]rabbit@192:*unabletoconnecttoepmd(port4369)on192:badarg(unknownposixerror)currentnodedetails:-nodename:'rabbitmq-cli-97@192'-homedir:/var/lib/rabbitmq-cookiehash:rb2cnggdqm+k5+jq1wj6vg==error:unabletoconnecttonoderabbit@192:nodedown

解决办法

vi/etc/rabbitmq/rabbitmq-env.conf

在文件中写入“nodename=rabbit@localhost”,保存。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:CentOs中怎么搭建RabbitMQ3.6单机多实例服务的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Centos怎么安装部署最新版Zabbix3.4下一篇:

10 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18