一,CentOS7下安装RabbitMQ(单机)
1:安装erlang
//切换阿里源下载
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all4
[root@bogon ~]# yum -y install erlang
2:安装rabbtimq
bash
[root@bogon ~]# yum -y install rabbitmq-server
[root@bogon ~]# ps aux | grep rabbit
rabbitmq 1759 2.4 4.5 618480 44184 ? Ssl 11:25 0:00 /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 -noshell -noinput -s rabbit boot -sname rabbit@bogon -boot start_sasl -config /etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbi error_logger {file,"/var/log/rabbitmq/rabbit@bogon.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit@bogon-sasl.log"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/../plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@bogon-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@bogon" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672
rabbitmq 1774 0.0 0.1 35216 1676 ? S 11:25 0:00 /usr/lib64/erlang/erts-5.10.4/bin/epmd -daemon
rabbitmq 1831 0.0 0.2 35180 2200 ? Ss 11:25 0:00 inet_gethost 4
rabbitmq 1832 0.0 0.2 41532 2500 ? S 11:25 0:00 inet_gethost 4
root 1836 0.0 0.2 112840 2208 pts/0 S+ 11:26 0:00 grep --color=auto rabbit
[root@bogon ~]#
3:开启web管理控制台
bash
[root@bogon ~]# rabbitmq-plugins list
[ ] amqp_client 3.3.5
[ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap 3.3.5-gite309de4
[ ] mochiweb 2.7.0-rmq3.3.5-git680dba8
[ ] rabbitmq_amqp1_0 3.3.5
[ ] rabbitmq_auth_backend_ldap 3.3.5
[ ] rabbitmq_auth_mechanism_ssl 3.3.5
[ ] rabbitmq_consistent_hash_exchange 3.3.5
[ ] rabbitmq_federation 3.3.5
[ ] rabbitmq_federation_management 3.3.5
[ ] rabbitmq_management 3.3.5
[ ] rabbitmq_management_agent 3.3.5
[ ] rabbitmq_management_visualiser 3.3.5
[ ] rabbitmq_mqtt 3.3.5
[ ] rabbitmq_shovel 3.3.5
[ ] rabbitmq_shovel_management 3.3.5
[ ] rabbitmq_stomp 3.3.5
[ ] rabbitmq_test 3.3.5
[ ] rabbitmq_tracing 3.3.5
[ ] rabbitmq_web_dispatch 3.3.5
[ ] rabbitmq_web_stomp 3.3.5
[ ] rabbitmq_web_stomp_examples 3.3.5
[ ] sockjs 0.3.4-rmq3.3.5-git3132eb9
[ ] webmachine 1.10.3-rmq3.3.5-gite9359c7
[root@bogon ~]# 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@bogon ~]# rabbitmq-plugins list
[e] amqp_client 3.3.5
[ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap 3.3.5-gite309de4
[e] mochiweb 2.7.0-rmq3.3.5-git680dba8
[ ] rabbitmq_amqp1_0 3.3.5
[ ] rabbitmq_auth_backend_ldap 3.3.5
[ ] rabbitmq_auth_mechanism_ssl 3.3.5
[ ] rabbitmq_consistent_hash_exchange 3.3.5
[ ] rabbitmq_federation 3.3.5
[ ] rabbitmq_federation_management 3.3.5
[E] rabbitmq_management 3.3.5
[e] rabbitmq_management_agent 3.3.5
[ ] rabbitmq_management_visualiser 3.3.5
[ ] rabbitmq_mqtt 3.3.5
[ ] rabbitmq_shovel 3.3.5
[ ] rabbitmq_shovel_management 3.3.5
[ ] rabbitmq_stomp 3.3.5
[ ] rabbitmq_test 3.3.5
[ ] rabbitmq_tracing 3.3.5
[e] rabbitmq_web_dispatch 3.3.5
[ ] rabbitmq_web_stomp 3.3.5
[ ] rabbitmq_web_stomp_examples 3.3.5
[ ] sockjs 0.3.4-rmq3.3.5-git3132eb9
[e] webmachine 1.10.3-rmq3.3.5-gite9359c7
[root@bogon ~]#
下面是一个将这些插件和版本信息整理成表格的形式,并解释每列的含义:
|-----------------------------------|----------------------------|--------------------------------------------------------------------------------|
| 插件名称 | 版本号 | 说明 |
| amqp_client | 3.3.5 | AMQP客户端库,用于与RabbitMQ服务器进行AMQP协议通信。 |
| cowboy | 0.5.0-rmq3.3.5-git4b93c2d | 一个用于Erlang的高效、轻量级的HTTP服务器和REST框架,可能在此版本中为RabbitMQ定制或扩展。 |
| eldap | 3.3.5-gite309de4 | 可能是RabbitMQ用于LDAP身份验证的插件,但这里的版本表明它可能包含了对LDAP支持的自定义或额外更新。 |
| mochiweb | 2.7.0-rmq3.3.5-git680dba8 | 另一个Erlang的HTTP服务器库,可能为RabbitMQ提供了Web界面的底层支持或其他Web服务功能。 |
| rabbitmq_amqp1_0 | 3.3.5 | 支持AMQP 1.0协议的RabbitMQ插件,允许RabbitMQ与遵循AMQP 1.0的客户端进行通信。 |
| rabbitmq_auth_backend_ldap | 3.3.5 | 提供通过LDAP服务器进行RabbitMQ用户认证的插件。 |
| rabbitmq_auth_mechanism_ssl | 3.3.5 | 通过SSL/TLS支持更安全的认证机制的插件。 |
| rabbitmq_consistent_hash_exchange | 3.3.5 | 实现一致性哈希交换类型的插件,可能用于改进消息分发和负载均衡。 |
| rabbitmq_federation | 3.3.5 | 允许RabbitMQ集群跨网络边界安全地交换消息的插件。 |
| rabbitmq_federation_management | 3.3.5 | 提供RabbitMQ Federation插件的管理和监控界面。 |
| rabbitmq_management | 3.3.5 | RabbitMQ的管理插件,提供Web界面来监控和控制RabbitMQ服务器。 |
| rabbitmq_management_agent | 3.3.5 | 与rabbitmq_management插件相关的组件,可能用于管理界面与RabbitMQ服务器的交互。 |
| rabbitmq_management_visualiser | 3.3.5 | RabbitMQ管理插件的可视化工具,用于以图形方式显示RabbitMQ的内部状态。 |
| rabbitmq_mqtt | 3.3.5 | 允许RabbitMQ通过MQTT协议接收和发送消息的插件。 |
| rabbitmq_shovel | 3.3.5 | 用于RabbitMQ之间高效复制或迁移消息的数据迁移插件。 |
| rabbitmq_shovel_management | 3.3.5 | 提供rabbitmq_shovel插件的管理和监控界面。 |
| rabbitmq_stomp | 3.3.5 | 允许RabbitMQ通过STOMP协议接收和发送消息的插件。 |
| rabbitmq_test | 3.3.5 | 可能是用于RabbitMQ的测试或演示的插件。 |
| rabbitmq_tracing | 3.3.5 | 提供消息跟踪功能的插件,帮助调试和监控RabbitMQ中的消息流。 |
| rabbitmq_web_dispatch | 3.3.5 | 可能用于RabbitMQ的Web请求路由或分发的插件。 |
| rabbitmq_web_stomp | 3.3.5 | 允许通过Web Stomp协议与RabbitMQ进行通信的插件。 |
| rabbitmq_web_stomp_examples | 3.3.5 | 提供rabbitmq_web_stomp插件的使用示例。 |
| sockjs | 0.3.4-rmq3.3.5-git3132eb9 | 一个浏览器上的WebSocket库,支持在不支持WebSocket的旧浏览器上模拟WebSocket连接,这里可能是为RabbitMQ的Web客户端定制的。 |
| webmachine | 1.10.3-rmq3.3.5-gite9359c7 | 一个Erlang库,用于构建符合REST原则的Web应用程序,这里可能是RabbitMQ管理界面或其他Web服务的底层框架。 |
4:关闭防火墙并去访问浏览器访问
bash
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# setenforce 0
[root@bogon ~]# systemctl restart rabbitmq-servser
注意账号是guest密码也是guest
5.:下载nginx服务
bash
[root@bogon ~]# yum -y install nginx
6:配置nginx
bash
[root@bogon ~]# cd /etc/nginx/
[root@bogon nginx]# cd conf.d/
[root@bogon conf.d]# vim rabbitmq.conf
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:15672;
}
}
[root@bogon conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@bogon conf.d]# nginx
注意这是有nginx做代理的可以不加端口
7:配置其他两台主机
(1)安装pythom3
bash
[root@bogon ~]# yum -y install python3
[root@bogon ~]# pip3 install pika-1.3.1-py3-none-any.whl //函数库
函数库的包的位置
链接: 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/12Ly7dKHi5Z7gQJqqioUOuA?pwd=wn78 提取码: wn78 复制这段内容后打开百度网盘手机App,操作更方便哦
(2)测试
把脚本分别给102,103
链接: https://pan.baidu.com/s/1HyYDx8AN7iilrJvaW7a64g?pwd=w4d6 提取码: w4d6 复制这段内容后打开百度网盘手机App,操作更方便哦
bash
[root@103 ~]# python3 send_message.sh
bash
[root@102 ~]# python3 receive_message.sh
8.rabbit命令
|-------|---------------------------------------------------------|------------------|
| 类别 | 命令 | 描述 |
| 虚拟机管理 | rabbitmqctl list_vhosts | 列出所有的虚拟主机 |
| | rabbitmqctl add_vhost | 创建新的虚拟主机 |
| | rabbitmqctl delete_vhost | 删除指定的虚拟主机 |
| 用户管理 | rabbitmqctl list_users | 列出所有用户 |
| | rabbitmqctl add_user | 创建新用户 |
| | rabbitmqctl change_password | 更改用户密码 |
| | rabbitmqctl delete_user | 删除用户 |
| | rabbitmqctl clear_password | 清除用户密码(设置为无密码) |
| 角色管理 | rabbitmqctl set_user_tags | 赋予用户特定角色 |
| | rabbitmqctl set_permissions -p | 设置用户对虚拟主机的权限 |
| 权限管理 | rabbitmqctl list_user_permissions | 列出用户的权限 |
| | rabbitmqctl list_permissions -p | 列出指定虚拟主机下所有用户的权限 |
| | rabbitmqctl clear_permissions -p | 清除用户在指定虚拟主机上的权限 |
| 插件管理 | rabbitmq-plugins list | 列出所有可用的插件 |
| | rabbitmq-plugins enable | 启用插件 |
| | rabbitmq-plugins disable | 禁用插件 |
| 限制 | rabbitmqctl set_vhost_limits -p '{"max-connections": }' | 设置虚拟主机的最大连接数 |
| | rabbitmqctl set_vhost_limits -p '{"max-queues": }' | 设置虚拟主机中最大的队列数 |
| 其他 | rabbitmqctl list_exchanges | 列出所有的交换器 |
| | rabbitmqctl list_bindings | 列出所有的绑定关系 |
| | rabbitmqctl list_queues | 列出所有的队列 |
| | rabbitmqctl status | 查看RabbitMQ的运行信息 |
二,集群RabbitMQ
1:实验环境
|----------|----------------|------|
| 主机名 | ip | 节点类型 |
| centos01 | 192.168.10.102 | 磁盘节点 |
| centos01 | 192.168.10.102 | 内存节点 |
| centos01 | 192.168.10.102 | 内存节点 |
2:配置hosts以及hostname
bash
三台机器设置hostname
hostnamectl set-hostname centos01
hostnamectl set-hostname centos02
hostnamectl set-hostname centos03
192.168.10.101 centos01
192.168.10.102 centos02
192.168.10.103 centos03
3:关闭selinux以及firewalld
bash
setenforce 0
systemctl stop firewalld
4:安装rabbitmq
三台机器都要安装,步骤参考上面
5:启动服务
三台机器都启动起来
bash
systemctl start rabbitmq-server
6:安装management插件
三台机器都要开启
bash
rabbitmq-plugins enable rabbitmq_management
bash
[root@mq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie mq3:/var/lib/rabbitmq/
[root@mq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie mq2:/var/lib/rabbitmq/.erlang.cookie
7:分配节点
bash
rabbitmqctl stop_app
8:将centos02作为内存节点连接到centos01
bash
rabbitmqctl join_cluster --ram rabbit@centos01
9:开启rabbitmq
bash
rabbitmqctl start_app
10:查看集群状态
bash
rabbitmqctl cluster_status