CentOS安装RabbitMQ
安装erlang
配置epel源
centos6.x
wget -O /etc/yum.repos.d/epel.repo [http://mirrors.aliyun.com/repo/epel-6.repo](http://mirrors.aliyun.com/repo/epel-6.repo)
centos7.x
wget -O /etc/yum.repos.d/epel.repo [http://mirrors.aliyun.com/repo/epel-7.repo](http://mirrors.aliyun.com/repo/epel-7.repo)
安装erlang源
erlang-solutions.repo
···
[erlang-solutions]
name=CentOS basearch - Erlang Solutions
baseurl=https://mirrors.tuna.tsinghua.edu.cn/erlang-solutions/centos/$releasever
gpgcheck=0
gpgkey=https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
enabled=1
···
安装erlang
yum install erlang
国外的源,下载过程会超时,需要重复多次
安装完成后可以用erl命令查看是否安装成功
erl -version
安装rabbitmq
rabbitmq.repo
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
yum install -y rabbitmq-server
启动rabbitmq
chkconfig rabbitmq-server on
/sbin/service rabbitmq-server start
需要禁止selinux
安装Web管理界面插件
终端输入:
rabbitmq-plugins enable rabbitmq_management
安装成功后会显示如下内容
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
登录Web管理界面
安装好插件并开启服务后,可以浏览器输入localhost:15672,账号密码全输入guest即可登录。默认没有开启远程权限
添加远程用户
运行如下的命令,增加用户 rollen,密码 root,注意用户名密码都不能带特殊符号
rabbitmqctl add_user rollen root
rabbitmqctl set_user_tags rollen administrator
rabbitmqctl set_permissions -p / rollen ".*" ".*" ".*"
常用命令
服务管理
启动:rabbitmq-server -detached
队列关闭 rabbitmqctl stop_app
队列启动 rabbitmqctl start_app
队列配置初始化: rabbitmqctl reset 用户密码信息都会被清理
集群配置相关命令
rabbitmqctl stop_app
rabbitmqctl reset
在当前集群中加入某节点:rabbitmqctl join_cluster {rabbit_node_name} (某些低版本可以采用rabbitmqctl cluster {rabbit_node_name})
rabbitmqctl start_app
集群状态:rabbitmqctl cluster_status
将某节点剔除出当前集群:rabbitmqctl forget_cluster_node {rabbit_node_name}
插件管理
开启某个插件: rabbitmq-plugins enable {插件名}
关闭某个插件: rabbitmq-plugins disable {插件名}
有关插件名可以在rabbitmq的安装目录下的plugins目录中查看:$RABBITMQ_HOME/plugins
举例:
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins list
用户管理
添加 用户 密码
rabbitmqctl add_user rollen userpassword
设置用户角色
rabbitmqctl set_user_tags rollen administrator
tag可以配置的角色:
(1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
(2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。与administrator的对比,administrator能看到这些内容。
(4) 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
(5) 其他
无法登陆管理控制台,通常就是普通的生产者和消费者。
删除用户
rabbitmqctl delete_user username
修改密码
rabbitmqctl change_password username newpassword
权限管理
权限设置:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read}
conf:一个正则表达式match哪些配置资源能够被该用户访问。
write:一个正则表达式match哪些配置资源能够被该用户读。
read:一个正则表达式match哪些配置资源能够被该用户访问。
查看(指定vhost)所有用户的权限信息:rabbitmqctl list_permissions [-p vhostPath]
查看指定用户的权限信息:rabbitmqctl list_user_permissions {username}
清除用户的权限信息: rabbitmqctl clear_permissions [-p vhostPath] {username}
举例:
rabbitmqctl set_permissions -p / username "." "." ".*"
获取服务器状态信息
服务器状态:rabbitmqctl status
队列信息: rabbitmqctl list_queues [-p vhostpath] [queueinfoitem …]
queueinfoitem可以为: name, durable, auto_delete, arguments, messages_ready, messages_unacknowled, messages, consumers, memory.
Exchange信息: rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem …]
exchangeinfoitem有:name, type, durable, auto_delete, internal, arguments.
Binding信息:rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem …]
bindinginfoitem有:source_name, source_kind, destination_name, destination_kind, routing_key, arguments.等
connection信息:rabbitmqctl list_connections [connectioninfoitem …]
connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。
channel信息:rabbitmqctl list_channels [channelinfoitem …]
channelinfoitem有:consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked
举例:
rabbitmqctl list_queues name messages_ready pid slave_pids
更改节点类型
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
或
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app
vhost管理
添加vhost: rabbitmqctl add vhost {name}
删除vhost: rabbitmqctl delete vhost {name}
镜像队列的设置
镜像队列的配置通过添加policy完成,policy添加的命令为:
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: queue的匹配模式(正则表达式)
Definition: 镜像定义,包括三个部分 ha-mode,ha-params,ha-sync-mode
ha-mode: 指明镜像队列的模式,有效值为 all/exactly/nodes
all表示在集群所有的节点上进行镜像
exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params: ha-mode模式需要用到的参数
ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually
Priority: 可选参数, policy的优先级
例如,对队列名称以hello开头的所有队列进行镜像,并在集群的两个节点上完成镜像,policy的设置命令为:
rabbitmqctl set_policy hello-ha “^hello” ‘{“ha-mode”:”exactly”,”ha-params”:2,”ha-sync-mode”:”automatic”}’
有关镜像队列的原理可以参考《rabbitmq——镜像队列》
更多信息可以参考:http://www.rabbitmq.com/manpages.html
常用命令管理参考:http://blog.csdn.net/u013256816/article/details/53524814