一、安装
1.安装最新的Erlang
wget https://package.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
yum localinstall erlang-solutions-1.0-1.noarch.rpm
yum install epel-release
yum install erlang
2. 安装RabbitMQ
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
yum install rabbitmq-server
3.RabbitMQ基本命令
/etc/hosts
hostnamectl set-hostname ...
systemctl start rabbitmq-server --后台启动服务
rabbitmq-plugins enable rabbitmq_management --启动web管理插件
rabbitmqctl list_users # 查看当前所有用户
rabbitmqctl list_user_permissions guest # 查看默认guest用户的权限
rabbitmqctl delete_user guest # 为了安全起见, 先删掉默认用户
rabbitmqctl add_user test 123456 # 添加新用户
rabbitmqctl set_user_tags test administrator # 设置用户角色
#rabbitmq用户角色可分为五类:超级管理员, 监控者, 策略制定者, 普通管理者以及其他
(1) 超级管理员(administrator) 可登陆管理控制台(启用management plugin的情况下), 可查看所有的信息,并且可以对用户,策略(policy)进行操作。
(2) 监控者(monitoring) 可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3) 策略制定者(policymaker) 可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。
(4) 普通管理者(management) 仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
(5) 其他的 无法登陆管理控制台,通常就是普通的生产者和消费者
rabbitmqctl set_permissions -p / test ".*" ".*" ".*" # 赋予用户默认vhost的全部操作权限
rabbitmqctl list_user_permissions test # 查看用户的权限
rabbitmq-plugins enable rabbitmq_management # 开放web管理接口tcp/15672# http://47.98.200.222:15672/# 修改用户密码
rabbitmqctl change_password Username Password# 拷贝配置文件
cp /usr/share/doc/rabbitmq-server-3.6.6/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config# 限制用户只能通过localhost登录
vim /etc/rabbitmq/rabbitmq.config {loopback_users, ["test"]} # 如果后续有配置加","
4.安装RabbitMQ集群
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbitmq-b
rabbitmqctl start_app
rabbitmqctl add_user zhanghs zhanghs --添加用户,密码
rabbitmqctl set_user_tags zhanghs administrator --设置administrator权限
5.创建用户以及配置权限
创建用户 sudo rabbitmqctl add_user alex alex3714
设置administrator权限 sudo rabbitmqctl set_user_tags zhanghs administrator
配置权限允许从外面访问 sudo rabbitmqctl set_permissions -p / alex ".*" ".*" ".*"
6. 普通集群模式下,创建镜像队列
1).执行 rabbitmqctl sync_queue {queue-name} 可以让该节点的指定队列成为镜像队列,队列中的数据将会在整个集群的每个节点上复制存储
可以通过执行 rabbitmqctl cancel_sync_queue {queue-name} 取消某个队列的同步属性
2).
set_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"}'
将指定的队列设置为镜像队列:
rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'
可以通过 rabbitmqctl list_policies 命令查看当前的协议列表
可以通过 rabbitmqctl clear_policy [-p vhostpath] {name} 清除某条协议