一、RabbitMQ简介
RabbitMQ属于一个流行的开源消息队列系统。属于AMQP( 高级消息队列协议 ) 标准的一个 实现。是应用层协议的一个开放标准,为面向消息的中间件设计。用于在分布式系统中存储转发消息,在 易用性、扩展性、高可用性等方面表现不俗。
二、RabbitMQ工作原理
MQ 是消费 - 生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。 MQ 则是遵循了 AMQP协议的具体实现和产品。在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
1、客户端连接到消息队列服务器,打开一个channel。
2、客户端声明一个exchange,并设置相关属性。
3、客户端声明一个queue,并设置相关属性。
4、客户端使用routing key,在exchange和queue之间建立好绑定关系。
5、客户端投递消息到exchange。
6、 exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里
三、部署RabbitMQ 集群
1>所有机器全部安装
yum install -y erlang rabbitmq-server.noarch
2>全部启动
3>查看启动状态是否启动
4>查看监听端口
5>lichaohsot1 : 编辑rabbittmq变量文件
vim /etc/rabbitmq/rabbitmq-env.conf
#编辑内容如下
RABBITMQ_NODE_PORT=
limit -S -n
RABBITMQ_SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"
RABBITMQ_NODE_IP_ADDRESS=192.168.206.137
6>发送给其他两台机器并修改ip
#1
#2
#3修改
#4修改
7>所有机器开启rabbitmq的web管理页面
rabbitmq-plugins enable rabbitmq_management
8>访问web界面
web界面端口号 : 15672
9>输入账户密码 并登录(默认为 guest)
10>lichaohost1 发送erlang.cookie到其他节点配置集群
12>lichaohost2和lichaohost3停止应用,并以ram的方式加入lichaohost1节点,并重启应用
systemctl restart rabbitmq-server.service
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@lichaohost1
rabbitmqctl start_app
#
13>lichaohost1 查看集群状态
14>登录web 界面 验证
15>添加一个openstack的用户,并设密码为admin。并设置权限和成为管理员
#1
rabbitmqctl add_user openstack admin (添加用户)
#2
rabbitmqctl set_permissions openstack ".*" ".*" ".*" (设置权限)
#3
rabbitmqctl set_user_tags openstack administrator (设置为管理员)
16>登录测试
#