如何在CentOS 7部署RabbitMQ服务

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

wkiom1hgcytrk3ylaaew5agxhji362-jpg-wh_651x-s_3515139683

RabbitMQ 简介

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

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

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

RabbitMQ 安装

  1. # Install from EPEL
  2. [root@vdevops~]# yum –enablerepo=epel -y install rabbitmq-server
  3. [root@vdevops~]# systemctl start rabbitmq-server
  4. [root@vdevops /]# journalctl -xe
  5. Nov 12 01:30:01 vdevops.org CROND[3856]: (root) CMD (/usr/lib64/sa/sa1 1 1)
  6. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: DIAGNOSTICS
  7. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: ===========
  8. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: attempted to contact: [rabbit@vdevops]
  9. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: rabbit@vdevops:
  10. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: * unable to connect to epmd (port 4369) on vdevops: timeout (timed out)
  11. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: current node details:
  12. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: – node name: rabbitmqctl3831@vdevops
  13. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: – home dir: /var/lib/rabbitmq
  14. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: – cookie hash: s++dDMtIhAufFItw+ercBw==
  15. 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
  16. Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service: control process exited, code=exited status=2
  17. Nov 12 01:30:04 vdevops.org systemd[1]: Failed to start RabbitMQ broker.
  18. — 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设置

  1. # Install from EPEL
  2. [root@vdevops~]# yum –enablerepo=epel -y install rabbitmq-server
  3. [root@vdevops~]# systemctl start rabbitmq-server
  4. [root@vdevops /]# journalctl -xe
  5. Nov 12 01:30:01 vdevops.org CROND[3856]: (root) CMD (/usr/lib64/sa/sa1 1 1)
  6. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: DIAGNOSTICS
  7. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: ===========
  8. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: attempted to contact: [rabbit@vdevops]
  9. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: rabbit@vdevops:
  10. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: * unable to connect to epmd (port 4369) on vdevops: timeout (timed out)
  11. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: current node details:
  12. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: – node name: rabbitmqctl3831@vdevops
  13. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: – home dir: /var/lib/rabbitmq
  14. Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: – cookie hash: s++dDMtIhAufFItw+ercBw==
  15. 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
  16. Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service: control process exited, code=exited status=2
  17. Nov 12 01:30:04 vdevops.org systemd[1]: Failed to start RabbitMQ broker.
  18. — 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. 

防火墙设置

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

要使用RabbitMQ,请先添加用户

  1. [root@vdevops ~]# rabbitmqctl add_user linuxprobe password
  2. Creating user “linuxprobe” …
  3. …done.
  4. [root@vdevops ~]# rabbitmqctl list_users
  5. Listing users …
  6. guest   [administrator]
  7. linuxprobe  []
  8. …done.
  9. # granting admin role to a user is like follows
  10. [root@vdevops ~]# rabbitmqctl change_password linuxprobe strongpassword
  11. Changing password for user “linuxprobe” …
  12. …done.
  13. # granting admin role to a user is like follows
  14. [root@vdevops ~]# rabbitmqctl set_user_tags linuxprobe administrator
  15. Setting tags for user “linuxprobe” to [administrator] …
  16. …done.
  17. # deleting a user is like follows
  18. [root@vdevops ~]# rabbitmqctl delete_user linuxprobe
  19. Deleting user “linuxprobe “ …
  20. …done.

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

  1. [root@vdevops ~]# rabbitmqctl add_vhost /my_vhost
  2. Creating vhost “/my_vhost” …
  3. …done.
  4. [root@vdevops ~]# rabbitmqctl list_vhosts
  5. Listing vhosts …
  6. /
  7. /my_vhost
  8. …done.
  9. [root@vdevops ~]# rabbitmqctl delete_vhost /my_vhost
  10. Deleting vhost “/my_vhost” …
  11. …done.

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

  1. # rabbitmqctl set_permissions [-p vhost] [user] [permission ? (modify) (write) (read)]
  2. [root@vdevops ~]# rabbitmqctl set_permissions -p /my_vhost linuxprobe “.*” “.*” “.*”
  3. Setting permissions for user “linuxprobe” in vhost “/my_vhost” …
  4. …done.
  5. #
  6. [root@vdevops ~]#  rabbitmqctl list_user_permissions linuxprobe
  7. Listing permissions for user “linuxprobe” …
  8. /my_vhost   .*  .*  .*
  9. …done.
  10. # deleting permission of a specific user is like follows
  11. [root@vdevops ~]# rabbitmqctl clear_permissions -p /my_vhost linuxprobe
  12. Clearing permissions for user “linuxprobe” in vhost “/my_vhost” …
  13. …done.

RabbitMQ:使用Web UI

  1. [root@vdevops ~]# rabbitmq-plugins enable rabbitmq_management
  2. 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/

wkiom1hgcwrbp_dhaab_hmj48rs465

wkiol1hgcrwifqkcaadfm-kmg2y421

rabbitmqadmin使用

可以配置RabbitMQ使用rabbitmqadmin命

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

wkiom1hgc1xghlpqaadlre51oss833

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

  1. [root@localhost ~]# ll /usr/local/bin/rabbitmqadmin
  2. -rwxr-xr-x. 1 root root 36112 Nov 11 17:23 /usr/local/bin/rabbitmqadmin
  3. [root@vdevops bin]# rabbitmqadmin list users
  4. +————+——————————+—————+ |    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   | +———–+———+
  5. rabbitmqadmin 更多使用教程参考:http://www.rabbitmq.com/management-cli.html
  6. [root@vdevops ~]# rabbitmqadmin declare user name=centos password=password tags=administrator
  7. user declared
  8. [root@vdevops ~]# rabbitmqadmin declare permission vhost=/vhost01 user=centos configure=“.*” write=“.*” read=“.*”
  9. *** vhost_or_user_not_found
  10. [root@vdevops ~]# rabbitmqadmin declare vhost name=/vhost01
  11. vhost declared
  12. [root@vdevops ~]# rabbitmqadmin declare permission vhost=/vhost01 user=centos configure=“.*” write=“.*” read=“.*”
  13. permission declared
  14. [root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password declare queue name=my_queue01
  15. queue declared
  16. [root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password publish routing_key=my_queue01 payload=‘Hello RabbitMQ World!’ exchange=amq.default
  17. Message published
  18. [root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password get queue=my_queue01 requeue=false
  19. +————-+———-+—————+———————–+—————+——————+————+————-+
  20. <>| routing_key | exchange | message_count |        payload        | payload_bytes | payload_encoding | properties | redelivered |
  21. +————-+———-+—————+———————–+—————+——————+————+————-+
  22. | my_queue01  |          | 0             | Hello RabbitMQ World! | 21            | string           |            | False       |
  23. +————-+———-+—————+———————–+—————+——————+————+————-+
  24. [root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password publish routing_key=my_queue01 payload=‘Hello LinuxProbe!’ exchange=amq.default
  25. Message published
  26. [root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password get queue=my_queue01 requeue=false
  27. +————-+———-+—————+——————-+—————+——————+————+————-+
  28. | routing_key | exchange | message_count |      payload      | payload_bytes | payload_encoding | properties | redelivered |
  29. +————-+———-+—————+——————-+—————+——————+————+————-+
  30. | my_queue01  |          | 0             | Hello LinuxProbe! | 17            | string           |            | False       |
  31. +————-+———-+—————+——————-+—————+——————+————+————-+

未经允许不得转载:JX BLOG » 如何在CentOS 7部署RabbitMQ服务

赞 (0)

评论 0

评论前必须登录!

登陆 注册