先安装erlang
yum install erlang
完成后安装RabbitMQ
先下载rpm:
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
下载完成后安装:
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
完成后启动服务:
service rabbitmq-server start
可以查看服务状态:
service rabbitmq-server status
找到其中类似一下的一行
Logs: /var/log/rabbitmq/rabbit@izhp3fm4qmc7vnoeegv7zyz.log
打开对应的文件
vi /var/log/rabbitmq/rabbit@izhp3fm4qmc7vnoeegv7zyz.log
里面有这样的一行
config file(s) : /etc/rabbitmq/rabbitmq.config (not found)
配置文件未找到 那我们新建配置文件
cd /etc/rabbitmq/
vi rabbitmq.config
编辑内容如下:
[{rabbit, [{loopback_users, []}]}].
这里的意思是开放使用
默认创建的用户guest,密码也是guest。
该用户不能用于远程登录,可用于管理UI的登录。
保存配置后重启服务:
service rabbitmq-server stop
service rabbitmq-server start
此时就可以从外部访问了,但此时再看log文件,发现内容还是原来的,还是显示没有找到配置文件,可以手动删除这个文件再重启服务,不过这不影响使用
rm rabbit\@mythsky.log
service rabbitmq-server stop
service rabbitmq-server start
开放5672端口:
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload
开机自启动
chkconfig rabbitmq-server on
查看
chkconfig --list
# 或者
systemctl list-units --type=service
在docker
环境中配置rabbitmq
时
rabbitmq的数据库名称规则是,NODENAME@hostname
,Docker每次从docker image
启动容器的时候会自动生成hostname,这样一来,你保存在主机上的数据库就会没用了,包括之前创建的用户也会没有了。
所以在创建容器的时候必须指定--hostname=rabbitmqhostone
,这样docker环境启动后rabbitmq就会一直读取固定目录中的数据了
开启管理UI:
rabbitmq-plugins enable rabbitmq_management
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
就可以通过http://ip:15672
访问管理页面
在/etc/rabbitmq/rabbitmq.config
配置文件下(如果不存在就自行创建)添加
[
{rabbit,[{tcp_listeners,[5672]},{loopback_users,["admin"]}]}
]
添加用户
rabbitmqctl add_user admin admin
授权
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
设置用户角色
rabbitmqctl set_user_tags admin administrator
查看新添加的admin
rabbitmqctl list_users
查看用于的权限
rabbitmqctl list_permissions -p /
打开地址:http://ip:15672
,使用admin/admin
即可登录
如果是在一台机器上同时启动多个 RabbitMQ 节点来组建集群的话,只用上面介绍的方式启动第二、第三个节点将会因为节点名称和端口冲突导致启动失败。
所以在每次调用 rabbitmq-server 命令前,设置环境变量 RABBITMQ_NODENAME
和 RABBITMQ_NODE_PORT
来明确指定唯一的节点名称和端口。
下面的例子端口号从5672开始,每个新启动的节点都加1,节点也分别命名为test_rabbit_1、test_rabbit_2、test_rabbit_3。
启动第1个节点:
RABBITMQ_NODENAME=test_rabbit_1 RABBITMQ_NODE_PORT=5672 /usr/sbin/rabbitmq-server -detached
启动第2个节点:
RABBITMQ_NODENAME=test_rabbit_2 RABBITMQ_NODE_PORT=5673 /usr/sbin/rabbitmq-server -detached
启动第2个节点前建议将 RabbitMQ 默认激活的插件关掉,否则会存在使用了某个插件的端口号冲突,导致节点启动不成功。
现在第2个节点和第1个节点都是独立节点,它们并不知道其他节点的存在。集群中除第一个节点外后加入的节点需要获取集群中的元数据,所以要先停止 Erlang 节点上运行的 RabbitMQ 应用程序,并重置该节点元数据,再加入并且获取集群的元数据,最后重新启动 RabbitMQ 应用程序。
停止第2个节点的应用程序:
/usr/sbin/rabbitmqctl -n test_rabbit_2 stop_app
重置第2个节点元数据:
/usr/sbin/rabbitmqctl -n test_rabbit_2 reset
第2节点加入第1个节点组成的集群:
/usr/sbin/rabbitmqctl -n test_rabbit_2 join_cluster test_rabbit_1@localhost
启动第2个节点的应用程序
/usr/sbin/rabbitmqctl -n test_rabbit_2 start_app
第3个节点的配置过程和第2个节点类似:
RABBITMQ_NODENAME=test_rabbit_3 RABBITMQ_NODE_PORT=5674 /usr/sbin/rabbitmq-server -detached
/usr/sbin/rabbitmqctl -n test_rabbit_3 stop_app
/usr/sbin/rabbitmqctl -n test_rabbit_3 reset
/usr/sbin/rabbitmqctl -n test_rabbit_3 join_cluster test_rabbit_1@localhost
/usr/sbin/rabbitmqctl -n test_rabbit_3 start_app
停止某个指定的节点,比如停止第2个节点:
RABBITMQ_NODENAME=test_rabbit_2 /usr/sbin/rabbitmqctl stop
查看节点3的集群状态:
/usr/sbin/rabbitmqctl -n test_rabbit_3 cluster_status