RabbitMQ如果是单点那么直接安装就可以用了。
下载RabbitMQ、erlang、socat的包:
先安装erlang ,再安装socat包,最后安装RabbitMQ
rpm -ivh erlang-18.3-1.el6.x86_64.rpm
rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
启动RabbitMQ
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
rabbitmq-plugins enable rabbitmq_management
最后这个是rabbitmq的管理工具
创建用户,从3.3版本后就不能用guest远程登录了,所以要重新创建用户登录。设置管理权限。
rabbitmqctl add_user USERNAME PASSWD
rabbitmqctl set_user_tags USERNAME administrator
然后访问地址http://IP:15672 输入用户名和密码。就能看到管理页面 了。
集群环境:
也是先配置单点,然后直接克隆。
1、写hosts文件。
[root@RabbitMQ1 ~]# tail -3 /etc/hosts
192.168.1.51 RabbitMQ1.up.com RabbitMQ1
192.168.1.52 RabbitMQ2.up.com RabbitMQ2
192.168.1.53 RabbitMQ3.up.com RabbitMQ3
2、检查.erlang.cookie文件:
[root@RabbitMQ1 ~]# cd /var/lib/rabbitmq/
[root@RabbitMQ1 rabbitmq]# cat .erlang.cookie
CLJYRPKIXSWCDKDODKPL
[root@RabbitMQ1 /var/lib/rabbitmq]# ll .erlang.cookie
-r-------- 1 rabbitmq rabbitmq 20 Jul 30 00:00 .erlang.cookie
[root@RabbitMQ2 ~]# cd /var/lib/rabbitmq/
[root@RabbitMQ2 rabbitmq]# cat .erlang.cookie
CLJYRPKIXSWCDKDODKPL
[root@RabbitMQ2 /var/lib/rabbitmq]# ll .erlang.cookie
-r-------- 1 rabbitmq rabbitmq 20 Jul 30 00:00 .erlang.cookie
[root@RabbitMQ3 ~]# cd /var/lib/rabbitmq/
[root@RabbitMQ3 rabbitmq]# cat .erlang.cookie
CLJYRPKIXSWCDKDODKPL
[root@RabbitMQ3 /var/lib/rabbitmq]# ll .erlang.cookie
-r-------- 1 rabbitmq rabbitmq 20 Jul 30 00:00 .erlang.cookie
这些都是一样的。
使用detached参数,在后台启动Rabbit Node
要先停止现有的Rabbitmq-server,再重新在后台运行。
[root@RabbitMQ1 ~]# rabbitmqctl stop
Stopping and halting node rabbit@RabbitMQ1
[root@RabbitMQ2 ~]# rabbitmqctl stop
Stopping and halting node rabbit@RabbitMQ2
[root@RabbitMQ3 ~]# rabbitmqctl stop
Stopping and halting node rabbit@RabbitMQ3
[root@RabbitMQ1 ~]# rabbitmq-server -detached
[root@RabbitMQ2 ~]# rabbitmq-server -detached
[root@RabbitMQ3 ~]# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
查端口有这几个。
[root@RabbitMQ1 ~]# netstat -antp | grep 5672
[root@RabbitMQ2 ~]# netstat -antp | grep 5672
[root@RabbitMQ3 ~]# netstat -antp | grep 5672
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 5173/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 5173/beam.smp
tcp6 0 0 :::5672 :::* LISTEN 5173/beam.smp
查看状态
[root@RabbitMQ1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@RabbitMQ1
[{nodes,[{disc,[rabbit@RabbitMQ1]}]},
{running_nodes,[rabbit@RabbitMQ1]},
{cluster_name,<<"rabbit@RabbitMQ1">>},
{partitions,[]},
{alarms,[{rabbit@RabbitMQ1,[]}]}]
[root@RabbitMQ2 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@RabbitMQ2
[{nodes,[{disc,[rabbit@RabbitMQ2]}]},
{running_nodes,[rabbit@RabbitMQ2]},
{cluster_name,<<"rabbit@RabbitMQ2.up.com">>},
{partitions,[]},
{alarms,[{rabbit@RabbitMQ2,[]}]}]
[root@RabbitMQ3 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@RabbitMQ3
[{nodes,[{disc,[rabbit@RabbitMQ3]}]},
{running_nodes,[rabbit@RabbitMQ3]},
{cluster_name,<<"rabbit@RabbitMQ3.up.com">>},
{partitions,[]},
{alarms,[{rabbit@RabbitMQ3,[]}]}]
3、将RabbitMQ1、RabbitMQ2、RabbitMQ3组成集群
【1】RabbitMQ2
[root@RabbitMQ2 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@RabbitMQ2
[root@RabbitMQ2 ~]# rabbitmqctl join_cluster rabbit@RabbitMQ1
Clustering node rabbit@RabbitMQ2 with rabbit@RabbitMQ1
[root@RabbitMQ2 ~]# rabbitmqctl start_app
Starting node rabbit@RabbitMQ2
【2】RabbitMQ3
[root@RabbitMQ3 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@RabbitMQ3
[root@RabbitMQ3 ~]# rabbitmqctl join_cluster rabbit@RabbitMQ1
Clustering node rabbit@RabbitMQ3 with rabbit@RabbitMQ1
[root@RabbitMQ3 ~]# rabbitmqctl start_app
Starting node rabbit@RabbitMQ3
查看集群的状态:
[root@RabbitMQ1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@RabbitMQ1
[{nodes,[{disc,[rabbit@RabbitMQ1,rabbit@RabbitMQ2,rabbit@RabbitMQ3]}]},
{running_nodes,[rabbit@RabbitMQ3,rabbit@RabbitMQ2,rabbit@RabbitMQ1]},
{cluster_name,<<"rabbit@RabbitMQ1">>},
{partitions,[]},
{alarms,[{rabbit@RabbitMQ3,[]},{rabbit@RabbitMQ2,[]},{rabbit@RabbitMQ1,[]}]}]
[root@RabbitMQ2 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@RabbitMQ2
[{nodes,[{disc,[rabbit@RabbitMQ1,rabbit@RabbitMQ2,rabbit@RabbitMQ3]}]},
{running_nodes,[rabbit@RabbitMQ3,rabbit@RabbitMQ1,rabbit@RabbitMQ2]},
{cluster_name,<<"rabbit@RabbitMQ1">>},
{partitions,[]},
{alarms,[{rabbit@RabbitMQ3,[]},{rabbit@RabbitMQ1,[]},{rabbit@RabbitMQ2,[]}]}]
[root@RabbitMQ3 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@RabbitMQ3
[{nodes,[{disc,[rabbit@RabbitMQ1,rabbit@RabbitMQ2,rabbit@RabbitMQ3]}]},
{running_nodes,[rabbit@RabbitMQ1,rabbit@RabbitMQ2,rabbit@RabbitMQ3]},
{cluster_name,<<"rabbit@RabbitMQ1">>},
{partitions,[]},
{alarms,[{rabbit@RabbitMQ1,[]},{rabbit@RabbitMQ2,[]},{rabbit@RabbitMQ3,[]}]}]
浏览器访问
http://rabbit1IP:15672/#/
http://rabbit2IP:15672/#/
http://rabbit3IP:15672/#/
如果出现登陆失败,那么就 重新添加用户并设置为管理员权限。
rabbitmqctl add_user USERNAME PASSWD
rabbitmqctl set_user_tags USERNAME administrator
用户的管理:
用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。
【1】新增一个用户
# rabbitmqctl add_user Username Password
【2】删除一个用户
# rabbitmqctl delete_user Username
【3】修改用户的密码
# rabbitmqctl change_password Username Newpassword
【4】查看当前用户列表
# rabbitmqctl list_users
2、 用户角色
按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。
(1)超级管理员(administrator)
可登录管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
(2)监控者(monitoring)
可登录管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3)策略制定者(policymaker)
可登录管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
(4)普通管理者(management)
仅可登录管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
(5)其他
无法登录管理控制台,通常就是普通的生产者和消费者。
3、 用户权限
用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。
【1】设置用户权限
# rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP
【2】查看(指定hostpath)所有用户的权限信息
# rabbitmqctl list_permissions [-p VHostPath]
【3】查看指定用户的权限信息
# rabbitmqctl list_user_permissions User
【4】清除用户的权限信息
# rabbitmqctl clear_permissions [-p VHostPath] User