美文网首页
CentOS 7 部署RabbitMQ 服务

CentOS 7 部署RabbitMQ 服务

作者: Linux大师 | 来源:发表于2023-08-03 10:45 被阅读0次

    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 专栏:http://blog.csdn.net/column/details/rabbitmq.html

    RabbitMQ 安装

    # Install from EPEL[root@vdevops~]# yum --enablerepo=epel -y install rabbitmq-server[root@vdevops~]# systemctl start rabbitmq-server[root@vdevops /]# journalctl -xeNov 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]: DIAGNOSTICSNov 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@vdevopsNov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - home dir: /var/lib/rabbitmqNov 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 fNov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service: control process exited, code=exited status=2Nov 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设置

    [root@vdevops /]# hostnamectl set-hostname vdevops  # hostname更改重启启动rabbitmq-server

    [root@vdevops /]# systemctl status rabbitmq-server

    ● rabbitmq-server.service - RabbitMQ broker

      Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)

      Active: active (running) since Sat 2016-11-12 01:32:41 CST; 3min 58s ago

      Process: 3831 ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop (code=exited, status=2)

    Main PID: 3891 (beam)

      CGroup: /system.slice/rabbitmq-server.service

              ├─3891 /usr/lib64/erlang/erts-5.10.4/bin/beam -W w -K true -A30 -P 1048576 -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/../ebin -nos...

              ├─3908 /usr/lib64/erlang/erts-5.10.4/bin/epmd -daemon

              ├─3963 inet_gethost 4

              └─3964 inet_gethost 4

    Nov 12 01:32:39 vdevops systemd[1]: Starting RabbitMQ broker...

    Nov 12 01:32:39 vdevops systemd[1]: rabbitmq-server.service: Got notification message from PID 3908, but reception only permitted for main PID 3891

    Nov 12 01:32:40 vdevops rabbitmq-server[3891]: RabbitMQ 3.3.5. Copyright (C) 2007-2014 GoPivotal, Inc.

    Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/

    Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##  ##

    Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##########  Logs: /var/log/rabbitmq/rabbit@vdevops.log

    Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ######  ##        /var/log/rabbitmq/rabbit@vdevops-sasl.log

    Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##########

    Nov 12 01:32:41 vdevops systemd[1]: Started RabbitMQ broker.

    Nov 12 01:32:41 vdevops rabbitmq-server[3891]: Starting broker... completed with 0 plugins.

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

    Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.

    防火墙设置

    [root@linuxprobe~]# firewall-cmd --add-port=5672/tcp --permanentsuccess[root@linuxprobe~]# firewall-cmd --reloadsuccess

    要使用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_managementThe following plugins have beenenabled:

      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=centospassword=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      |+-------------+----------+---------------+-------------------+---------------+------------------+------------+-------------+

    文章来源:https://www.linuxprobe.com/centos-deploy-rabbitmq.html

    相关文章

      网友评论

          本文标题:CentOS 7 部署RabbitMQ 服务

          本文链接:https://www.haomeiwen.com/subject/xqlppdtx.html