RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
搭建环境:centos7机器
1、安装erlang
yum install -y erlang
2、下载安装rabbitmq
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum -y install rabbitmq-server-3.6.6-1.el7.noarch.rpm
3、修改配置文件
cd /etc/rabbitmq
vim rabbitmq.config
// 添加以下内容--- 开放使用,默认创建的用户为 guest ,密码为 guest 默认为本机访问,要从外部访问需要加上此配置
[{rabbit, [{loopback_users, []}]}].
4、启动服务
service rabbitmq-server start #启动服务
service rabbitmq-server stop #停止
service rabbitmq-server status #查看服务状态
5、增加用户
#查看用户列表
rabbitmqctl list_users
#增加新用户
rabbitmqctl add_user root root123
#把用户加入管理组
rabbitmqctl set_user_tags root administrator
#开启各项权限
rabbitmqctl set_permissions -p / root '.*' '.*' '.*'
6、开启web管理控制台:默认账号guest,密码guest,端口 15672
rabbitmq-plugins enable rabbitmq_management
二、rabbitmq集群
1、服务器IP 对应hots
1.1.1.1 note1
2.2.2.2 note2
2、和单机部署相同,部署完成后查看note1和note2的.erlang.cookie,2台服务器的.erlang.cookie都保持一致【因为RabbitMQ是用Erlang实现的,Erlang Cookie相当于不同节点之间相互通讯的秘钥,Erlang节点通过交换Erlang Cookie获得认证。】
# note1 note2 执行以下
yum install -y erlang
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum -y install rabbitmq-server-3.6.6-1.el7.noarch.rpm
cd /etc/rabbitmq
echo '[{rabbit, [{loopback_users, []}]}].' >rabbitmq.config
systenctl start rabbitmq-server
# web
rabbitmq-plugins enable rabbitmq_management
systenctl status rabbitmq-server
#查看用户列表
rabbitmqctl list_users
#增加新用户
rabbitmqctl add_user root rabbitmq123
#把用户加入管理组
rabbitmqctl set_user_tags root administrator
#开启各项权限
rabbitmqctl set_permissions -p / root '.*' '.*' '.*'
查看集群状态
rabbitmqctl cluster_status
# 只在note2 执行以下
1、【暂停rabbitmq,把note1的cookie复制粘贴到note2】
rabbitmqctl stop_app
echo 'ZTUEZFESFUVQXBRZANVH'>/var/lib/rabbitmq/.erlang.cookie
rabbitmqctl start_app
service rabbitmq-server status
2、把note2加入集群
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@note1
rabbitmqctl start_app
systemctl status rabbitmq-server
3、再次查看集群状态
rabbitmqctl cluster_status
Cluster status of node 'rabbit@note2' ...
[{nodes,[{disc,['rabbit@note1']},
{ram,['rabbit@note2']}]},
{running_nodes,['rabbit@note1',
'rabbit@note2']},
{cluster_name,<<"rabbit@note1">>},
{partitions,[]},
{alarms,[{'rabbit@note1',[]},
{'rabbit@note2',[]}]}]
打开web界面可以看到以下:
三、docker部署
docker run -d --restart=always --net=host --name rabbitmq \
-v /data/server/rabbitmq/data:/var/lib/rabbitmq \
-v /data/logs/rabbitmq/log:/var/log/rabbitmq \
-v /data/logs/rabbitmq/tmp:/var/tmp \
-v /data/server/rabbitmq/conf:/etc/rabbitmq \
-e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=rabbitmq123 \
rabbitmq:3.7.7-management