Rabbitmq单机安装步骤
1.安装epel-release:yum -y install epel-release
2.安装socat:yum install socat
3.将erlang-20.1.7-1.el6.x86_64.rpm和rabbitmq-server-3.7.0-1.el6.noarch.rpm拷贝到/var/local/rabbitmq路径下
4.安装erlang:yum install erlang-20.1.7-1.el6.x86_64.rpm
5.安装Rabbitmq:yum install rabbitmq-server-3.7.0-1.el6.noarch.rpm
注:第5步可能出现如下错误:
解决:
- 依次执行:chattr -i /etc/passwd,chattr -i /etc/shadow,chattr -i /etc/group,chattr -i /etc/gshadow
- 重新安装:yum install rabbitmq-server-3.7.0-1.el6.noarch.rpm
6、修改rabbitmq.conf下的management.listener.ip字段,rabbitmq-env.conf下的NODENAME字段。
7、安装tcp mqtt插件:rabbitmq-plugins enable rabbitmq_mqtt
8、安装websocket mqtt插件:rabbitmq-plugins enable rabbitmq_web_mqtt
9、安装web管理插件:rabbitmq-plugins enable rabbitmq_management
10、启动:service rabbitmq-server start
注:启动可能失败,出现下面的错误log(log在/var/log/rabbitmq路径下)
{error,"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces",[{auth,init_cookie,0,[{file,"auth.erl"},{line,286}]},{auth,init,1,[{file,"auth.erl"},{line,140}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,365}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,333}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}
解决方案是需要设置cookie权限,并重新启动:
- chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
- chmod 600 /var/lib/rabbitmq/.erlang.cookie
11、创建用户(在mq启动的情况下才能执行):因为缺省的guest/guest用户只能在本地登录,所以先用命令行创建一个admin/admin,并让它成为管理员。使用命令:
- rabbitmqctl add_user 用户名 密码
- rabbitmqctl set_user_tags 用户 administrator
12、通过浏览器访问:http://ip:24596,使用刚创建的用户登录
13、使用JAVA客户端访问,需要设置账户的访问权限,使用命令:rabbitmqctl set_permissions -p "/" 用户名 ".*" ".*" ".*"
Rabbitmq集群部署
1、照上述步骤搭建单台rabbitmq
2、查看节点集群状态,可以看到现在集群都只有各自的单点:rabbitmqctl cluster_status
3、集群中一共有2台rabbitmq 分别为rabbit@127.0.0.1、rabbit@127.0.0.2。选择rabbit@127.0.0.1加入rabbit@127.0.0.2作为一个完整的集群,将 rabbit@127.0.0.2的Cookie 文件复制到rabbit@1127.0.0.1(Erlang Cookie 文件路径:/var/lib/rabbitmq/.erlang.cookie。)
4.重启rabbit@127.0.0.1
5.在rabbit@127.0.0.1服务器上执行下述命令:
- rabbitmqctl stop_app
- rabbitmqctl join_cluster rabbit@127.0.0.2
- rabbitmqctl start_app
- rabbitmqctl cluster_status
Rabbitmq常用操作命令
1.添加vhost
rabbitmqctl add_vhost "$vhost"
2.设置vhost权限
rabbitmqctl set_permissions -p "$vhost" bkadmin ".*" ".*" ".*"
3设置vhost的队列的ttl
rabbitmqctl set_policy expiry -p wsrtc.vpclient_test.com ".*" '{"expires":100000}' --apply-to queues
4.查看集群状态
rabbitmqctl cluster_status
5.查看用户下的vhost的权限
rabbitmqctl list_user_permission 用户名
最后
Rabbitmq天然兼容支持ipv4和ipv6,并且配置上不需要做任何改动,只需客户端将ipv4改成ipv6即可
#ipv4连接
2018-09-18 14:43:24.040 [info] <0.5992.0> accepting MQTT connection <0.5992.0> (10.8.225.78:33466 -> 10.8.225.76:8257)
2018-09-18 14:44:50.772 [info] <0.6022.0> MQTT vhost picked using plugin configuration or default
2018-09-18 14:44:55.790 [info] <0.6022.0> accepting MQTT connection <0.6022.0> (10.8.225.76:44067 -> 10.8.225.76:8257)
2018-09-18 14:45:23.466 [info] <0.5992.0> MQTT detected network error for "10.8.225.78:33466 -> 10.8.225.76:8257": peer closed TCP connection
2018-09-18 14:45:44.454 [info] <0.6022.0> MQTT detected network error for "10.8.225.76:44067 -> 10.8.225.76:8257": peer closed TCP connection
2018-09-18 14:47:33.365 [info] <0.6066.0> MQTT vhost picked using plugin configuration or default
#ipv6连接
2018-09-18 14:47:38.378 [info] <0.6066.0> accepting MQTT connection <0.6066.0> ([fc00:a08:e100::df]:41968 -> [fc00:a08:e100::df]:8257)
2018-09-18 14:47:56.337 [info] <0.6088.0> MQTT vhost picked using plugin configuration or default
2018-09-18 14:48:01.347 [info] <0.6088.0> accepting MQTT connection <0.6088.0> ([fc00:a08:e100::de]:39128 -> [fc00:a08:e100::df]:8257)
2018-09-18 14:48:17.311 [info] <0.6066.0> MQTT detected network error for "[fc00:a08:e100::df]:41968 -> [fc00:a08:e100::df]:8257": peer closed TCP connection
2018-09-18 14:48:18.570 [info] <0.6088.0> MQTT detected network error for "[fc00:a08:e100::de]:39128 -> [fc00:a08:e100::df]:8257": peer closed TCP connection