如何在CentOS 7部署RabbitMQ服务

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ等等。

RabbitMQ 简介

安装RabbitMQ的消息代理软件,实现了AMQP(高级消息队列协议)

RabbitMQ 教程: http://www.rabbitmq.com/getstarted.html

RabbitMQ 安装:http://www.rabbitmq.com/download.html

RabbitMQ 安装

# Install from EPEL 

[root@vdevops~]# yum --enablerepo=epel -y install rabbitmq-server 

[root@vdevops~]# systemctl start rabbitmq-server 

[root@vdevops /]# journalctl -xe 

Nov 12 01:30:01 vdevops.org CROND[3856]: (root) CMD (/usr/lib64/sa/sa1 1 1) 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: DIAGNOSTICS 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: =========== 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: attempted to contact: [rabbit@vdevops] 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: rabbit@vdevops: 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: * unable to connect to epmd (port 4369) on vdevops: timeout (timed out) 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: current node details: 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - node name: rabbitmqctl3831@vdevops 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - home dir: /var/lib/rabbitmq 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - cookie hash: s++dDMtIhAufFItw+ercBw== 

Nov 12 01:30:04 vdevops.org polkitd[1007]: Unregistered Authentication Agent for unix-process:3798:36632 (system bus name :1.23, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected f 

Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service: control process exited, code=exited status=2 

Nov 12 01:30:04 vdevops.org systemd[1]: Failed to start RabbitMQ broker. 

-- Subject: Unit rabbitmq-server.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --  -- Unit rabbitmq-server.service has failed. --  -- The result is failed. Nov 12 01:30:04 vdevops.org systemd[1]: Unit rabbitmq-server.service entered failed state. Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service failed. Nov 12 01:30:42 vdevops.org systemd[1]: Got automount request for /proc/sys/fs/binfmt_misc, triggered by 3860 (find) Nov 12 01:30:42 vdevops.org systemd[1]: Mounting Arbitrary Executable File Formats File System... -- Subject: Unit proc-sys-fs-binfmt_misc.mount has begun start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --  -- Unit proc-sys-fs-binfmt_misc.mount has begun starting up. Nov 12 01:30:42 vdevops.org systemd[1]: Mounted Arbitrary Executable File Formats File System. -- Subject: Unit proc-sys-fs-binfmt_misc.mount has finished start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --  -- Unit proc-sys-fs-binfmt_misc.mount has finished starting up. --  -- The start-up result is done.  

rabbitmq-server启动报错:Failed to start RabbitMQ broker

度娘解析:主机hostname配置错误,原本hostname为vdevops.org,更改为vdevops,修改hosts文件中hostname设置

# Install from EPEL 

[root@vdevops~]# yum --enablerepo=epel -y install rabbitmq-server 

[root@vdevops~]# systemctl start rabbitmq-server 

[root@vdevops /]# journalctl -xe 

Nov 12 01:30:01 vdevops.org CROND[3856]: (root) CMD (/usr/lib64/sa/sa1 1 1) 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: DIAGNOSTICS 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: =========== 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: attempted to contact: [rabbit@vdevops] 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: rabbit@vdevops: 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: * unable to connect to epmd (port 4369) on vdevops: timeout (timed out) 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: current node details: 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - node name: rabbitmqctl3831@vdevops 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - home dir: /var/lib/rabbitmq 

Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - cookie hash: s++dDMtIhAufFItw+ercBw== 

Nov 12 01:30:04 vdevops.org polkitd[1007]: Unregistered Authentication Agent for unix-process:3798:36632 (system bus name :1.23, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected f 

Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service: control process exited, code=exited status=2 

Nov 12 01:30:04 vdevops.org systemd[1]: Failed to start RabbitMQ broker. 

-- Subject: Unit rabbitmq-server.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --  -- Unit rabbitmq-server.service has failed. --  -- The result is failed. Nov 12 01:30:04 vdevops.org systemd[1]: Unit rabbitmq-server.service entered failed state. Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service failed. Nov 12 01:30:42 vdevops.org systemd[1]: Got automount request for /proc/sys/fs/binfmt_misc, triggered by 3860 (find) Nov 12 01:30:42 vdevops.org systemd[1]: Mounting Arbitrary Executable File Formats File System... -- Subject: Unit proc-sys-fs-binfmt_misc.mount has begun start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --  -- Unit proc-sys-fs-binfmt_misc.mount has begun starting up. Nov 12 01:30:42 vdevops.org systemd[1]: Mounted Arbitrary Executable File Formats File System. -- Subject: Unit proc-sys-fs-binfmt_misc.mount has finished start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --  -- Unit proc-sys-fs-binfmt_misc.mount has finished starting up. --  -- The start-up result is done.  

防火墙设置

[root@linuxprobe~]# firewall-cmd --add-port=5672/tcp --permanent success [root@linuxprobe~]# firewall-cmd --reload success 

要使用RabbitMQ,请先添加用户

[root@vdevops ~]# rabbitmqctl add_user linuxprobe password 

Creating user "linuxprobe" ... 

...done. 

[root@vdevops ~]# rabbitmqctl list_users 

Listing users ... 

guest   [administrator] 

linuxprobe  [] 

...done. 

# granting admin role to a user is like follows 

[root@vdevops ~]# rabbitmqctl change_password linuxprobe strongpassword 

Changing password for user "linuxprobe" ... 

...done. 

# granting admin role to a user is like follows 

[root@vdevops ~]# rabbitmqctl set_user_tags linuxprobe administrator 

Setting tags for user "linuxprobe" to [administrator] ... 

...done. 

# deleting a user is like follows 

[root@vdevops ~]# rabbitmqctl delete_user linuxprobe  

Deleting user "linuxprobe " ... 

...done. 

要使用RabbitMQ,也要添加虚拟主机

[root@vdevops ~]# rabbitmqctl add_vhost /my_vhost 

Creating vhost "/my_vhost" ... 

...done. 

[root@vdevops ~]# rabbitmqctl list_vhosts  

Listing vhosts ... 

/my_vhost 

...done. 

[root@vdevops ~]# rabbitmqctl delete_vhost /my_vhost 

Deleting vhost "/my_vhost" ... 

...done. 

给虚拟主机的用户授予权限,请如下配置

# rabbitmqctl set_permissions [-p vhost] [user] [permission ? (modify) (write) (read)] 

[root@vdevops ~]# rabbitmqctl set_permissions -p /my_vhost linuxprobe ".*" ".*" ".*" 

Setting permissions for user "linuxprobe" in vhost "/my_vhost" ... 

...done. 

#  

[root@vdevops ~]#  rabbitmqctl list_user_permissions linuxprobe 

Listing permissions for user "linuxprobe" ... 

/my_vhost   .*  .*  .* 

...done. 

# deleting permission of a specific user is like follows 

[root@vdevops ~]# rabbitmqctl clear_permissions -p /my_vhost linuxprobe 

Clearing permissions for user "linuxprobe" in vhost "/my_vhost" ... 

...done. 

RabbitMQ:使用Web UI

[root@vdevops ~]# rabbitmq-plugins enable rabbitmq_management 

The following plugins have been enabled:   mochiweb   webmachine   rabbitmq_web_dispatch   amqp_client   rabbitmq_management_agent   rabbitmq_management Plugin configuration has changed. Restart RabbitMQ for changes to take effect. [root@vdevops ~]# systemctl restart rabbitmq-server 

客户端访问

http://vdevops:15672/

rabbitmqadmin使用

可以配置RabbitMQ使用rabbitmqadmin命

在Web UI上下载rabbitmqadmin。 登录到Web UI并移动到“http://(主机名或IP地址):15672 / cli”,然后显示以下屏幕,您可以在这里下载rabbitmqadmin,点击here右键保存rabbitmqadmin.txt,然后上传到服务器上面更改为rabbitmqadmin,并添加执行权限

将rabbitmqadmin上传到RabbitMQ服务器并设置合适的权限,此示例显示如下设置

[root@localhost ~]# ll /usr/local/bin/rabbitmqadmin  

-rwxr-xr-x. 1 root root 36112 Nov 11 17:23 /usr/local/bin/rabbitmqadmin 

[root@vdevops bin]# rabbitmqadmin list users 

+------------+------------------------------+---------------+ |    name    |        password_hash         |     tags      | +------------+------------------------------+---------------+ | guest      | k2rhpzCrZBKkY5WRhUWrGm5DCkg= | administrator | | linuxprobe | P+YxK1QXIYrJpek5i//rPjn5SME= | administrator | +------------+------------------------------+---------------+ [root@vdevops bin]# cd [root@vdevops ~]# rabbitmqadmin list users +------------+------------------------------+---------------+ |    name    |        password_hash         |     tags      | +------------+------------------------------+---------------+ | guest      | k2rhpzCrZBKkY5WRhUWrGm5DCkg= | administrator | | linuxprobe | P+YxK1QXIYrJpek5i//rPjn5SME= | administrator | +------------+------------------------------+---------------+ [root@vdevops ~]# rabbitmqadmin list vhosts +-----------+---------+ |   name    | tracing | +-----------+---------+ | /         | False   | | /my_vhost | False   | +-----------+---------+ 

rabbitmqadmin 更多使用教程参考:http://www.rabbitmq.com/management-cli.html 

 

[root@vdevops ~]# rabbitmqadmin declare user name=centos password=password tags=administrator  

user declared 

[root@vdevops ~]# rabbitmqadmin declare permission vhost=/vhost01 user=centos configure=".*" write=".*" read=".*"  

*** vhost_or_user_not_found 

[root@vdevops ~]# rabbitmqadmin declare vhost name=/vhost01  

vhost declared 

[root@vdevops ~]# rabbitmqadmin declare permission vhost=/vhost01 user=centos configure=".*" write=".*" read=".*"  

permission declared 

[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password declare queue name=my_queue01  

queue declared 

[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password publish routing_key=my_queue01 payload='Hello RabbitMQ World!' exchange=amq.default  

Message published 

[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password get queue=my_queue01 requeue=false 

+-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+ 

<>| routing_key | exchange | message_count |        payload        | payload_bytes | payload_encoding | properties | redelivered | 

+-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+ 

| my_queue01  |          | 0             | Hello RabbitMQ World! | 21            | string           |            | False       | 

+-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+ 

[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password publish routing_key=my_queue01 payload='Hello LinuxProbe!' exchange=amq.default  

Message published 

[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password get queue=my_queue01 requeue=false 

+-------------+----------+---------------+-------------------+---------------+------------------+------------+-------------+ 

| routing_key | exchange | message_count |      payload      | payload_bytes | payload_encoding | properties | redelivered | 

+-------------+----------+---------------+-------------------+---------------+------------------+------------+-------------+ 

| my_queue01  |          | 0             | Hello LinuxProbe! | 17            | string           |            | False       | 

+-------------+----------+---------------+-------------------+---------------+------------------+------------+-------------+ 

作者:王辉

来源:51CTO

时间: 2024-08-06 12:33:10

如何在CentOS 7部署RabbitMQ服务的相关文章

完全指南:如何在CentOS 7中安装、配置和安全加固FTP服务

FTP(文件传输协议)是一种用于通过网络在服务器和客户端之间传输文件的传统并广泛使用的标准工具,特别是在不需要身份验证的情况下(允许匿名用户连接到服务器).我们必须明白,默认情况下 FTP 是不安全的,因为它不加密传输用户凭据和数据. 在本指南中,我们将介绍在 CentOS/RHEL7 和 Fedora 发行版中安装.配置和保护 FTP 服务器( VSFTPD 代表 "Very Secure FTP Daemon")的步骤. 请注意,本指南中的所有命令将以 root 身份运行,如果你不

如何在CentOS、RHEL和Fedora上安装DHCP服务

DHCP(Dynamic Host Configuration Protocol)是一个网络协议,它使得服务器能从预定义的 IP 池中为网络中的客户端节点自动分配 IP 地址并提供其它相关的网络配置参数. 这意味着每次客户端节点启动(连接到网络)的时候,它都会获得一个和从不改变的"静态" IP 地址相反的"动态" IP 地址.DHCP 服务器给 DHCP 客户端分配 IP 地址称为"租约",租约时间随客户端需要的连接时间或 DHCP 的配置而异.

如何在 CentOS、RHEL 和 Fedora 上安装 DHCP 服务

DHCP(Dynamic Host Configuration Protocol)是一个网络协议,它使得服务器能从预定义的 IP 池中为网络中的客户端节点自动分配 IP 地址并提供其它相关的网络配置参数. 这意味着每次客户端节点启动(连接到网络)的时候,它都会获得一个和从不改变的"静态" IP 地址相反的"动态" IP 地址.DHCP 服务器给 DHCP 客户端分配 IP 地址称为"租约",租约时间随客户端需要的连接时间或 DHCP 的配置而异.

如何在Ruby中编写微服务?

[编者按]本文作者为 Pierpaolo Frasa,文章通过详细的案例,介绍了在Ruby中编写微服务时所需注意的方方面面.系国内 ITOM 管理平台 OneAPM 编译呈现. 最近,大家都认为应当采用微服务架构.但是,又有多少相关教程呢?我们来看看这篇关于用Ruby编写微服务的文章吧. 人人都在讨论微服务,但我至今也没见过几篇有关用Ruby编写微服务的.像样的教程.这可能是因为许多Ruby开发人员仍然最喜欢Rails架构(这没什么不好,Rails本身也没什么不好,但是Ruby可以做到的事还有很

如何在CentOS上面安装“CentOS网页面板”

如何在CentOS上面安装"CentOS网页面板" 关于CentOS网页面板 目前有很多免费的或者付费的控制面板.今天,我们来讨论CentOS网页面板(CWP),这是特别为基于RPM 的发行版,如CentOS,RHEL,Scientific Linux等设计的.CWP 是免费且开源的控制面板,可以被广泛用于简单地配置一个网页托管环境.不同于其他的控制面板,CWP能自动部署LAMP的软件栈及Varnish 缓存服务器. 特性 CWP有很多的特性和免费的服务.如我前面提到的一样,CWP会在

如何在 CentOS 7 上安装 Elastic Stack

Elasticsearch 是基于 Lucene 由 Java 开发的开源搜索引擎.它提供了一个分布式.多租户的全文搜索引擎(LCTT 译注:多租户是指多租户技术,是一种软件架构技术,用来探讨与实现如何在多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性.),并带有 HTTP 仪表盘的 Web 界面(Kibana).数据会被 Elasticsearch 查询.检索,并且使用 JSON 文档方案存储.Elasticsearch 是一个可扩展的搜索引擎,可用于搜索所有类型的文本

如何在 CentOS 7 上安装 Redis 服务器

如何在 CentOS 7 上安装 Redis 服务器 大家好,本文的主题是 Redis,我们将要在 CentOS 7 上安装它.编译源代码,安装二进制文件,创建.安装文件.在安装了它的组件之后,我们还会配置 redis ,就像配置操作系统参数一样,目标就是让 redis 运行的更加可靠和快速. Redis 服务器 Redis 是一个开源的多平台数据存储软件,使用 ANSI C 编写,直接在内存使用数据集,这使得它得以实现非常高的效率.Redis 支持多种编程语言,包括 Lua, C, Java,

快速部署rabbitMQ教程

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScript.XMPP.STOMP等,支持AJAX.用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗. 部署方式 在阿里云服务器下部署 RabbitMQ提供两种部署方式: RabbitMQ镜像部署 手动部署(源码编译安装/YUM安装) 一般推荐镜像部署适合新手使用更加快捷方便,安装包部署以及手动部署适合对

简单的构建和部署云服务的方法

Azure的管理门户为您提供了,部署和构建云服务的两种方法:"自定义构建"(Quick Create)和"快速构建"(Custom Create). 我在这里为你们介绍了,如何使用快速构建的方法.首先构建一项新的云服务,然后使用上传的(Update)功能,在Azure中上传和部署云服务包.如果你使用这样的方法,Azure管理门户提供了方便的链接,用来满足你的全部要求.如果你在构建云服务时准备开始部署云服务,那么可以使用"自定义构建",或者是同时执