Rabbitmq普通集群中队列数据只会保持在一个节点上面,当此节点故障时,整个队列不可用。
镜像队列(Mirror Queue)的机制,就是把需要的队列做成镜像队列。可以将队列镜像到集群中的其他Broker节点之上,如果集群中的一个节点失效了,队列能够自动切换到镜像中的另一个节点上以保证服务的可用性。

RabbitMQ版本与Erlang关系

https://www.rabbitmq.com/which-erlang.html

image-yfnf.png

软件下载

1、下载erlang的rpm包。https://github.com/rabbitmq/erlang-rpm/releases

2、下载socat安装包http://repo.iotti.biz/CentOS/7/x86_64/

3、下载rabbitmq-server rpm安装包。https://github.com/rabbitmq/rabbitmq-server/releases

4、keepalived配置VIP代理

配置HOSTNAME

vim /etc/hosts
192.28.4.28 rabbitmq28
192.28.4.29 rabbitmq29
hostnamectl set-hostname rabbitmq28
hostnamectl set-hostname rabbitmq29

安装RabbitMQ

sudo yum install  erlang-22.3.4.19-1.el7.x86_64.rpm
sudo yum install socat-1.7.3.2-2.el7.x86_64.rpm
sudo yum install rabbitmq-server-3.8.15-1.el7.noarch.rpm
sudo systemctl start rabbitmq-server

集群配置

同步.erlang.cookie文件

scp /var/lib/rabbitmq/.erlang.cookie rabbitmq29@/var/lib/rabbitmq
chmod 600 .erlang.cookie

修改192.28.4.28,192.28.4.29主机的rabbitmq-env.conf文件配置节点名称

echo "NODENAME=rabbit@rabbitmq28" > /etc/rabbitmq/rabbitmq-env.conf
echo "NODENAME=rabbit@rabbitmq29" > /etc/rabbitmq/rabbitmq-env.conf

开启RabbitMQ后台管理插件

开启管理插件后,在浏览器访问后台管理地址http://ip:15672

rabbitmq-plugins enable rabbitmq_management
sudo rabbitmqctl add_user codehome codehome
sudo rabbitmqctl set_user_tags les administrator
sudo rabbitmqctl set_permissions -p / ".*" ".*" ".*"

配置镜像集群

#在rabbitmq29备节点操作
rabbitmqctl stop_app #暂停服务
rabbitmqctl join_cluster rabbit@rabbitmq28 # 加入到rabbitmq28的集群
rabbitmqctl start_app #启动服务
rabbitmqctl cluster_status #验证集群结果
rabbitmqctl set_policy -p /test ha-all "^" '{"ha-mode":"all" , "ha-sync-mode":"automatic"}' #设置镜像节点与自动同步

基本概念

权限管理

用户角色

角色 权限
none 不能登录管理控制台
management 用户可以通过AMQP做的任何事外加:列出自己可以通过AMQP登入的virtual hosts查看自己的virtual hosts中的queues, exchanges 和 bindings查看和关闭自己的channels 和 connections查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动
policymaker management的权限外加:查看、创建和删除自己的virtual hosts所属的policies和parameters
monitor management的权限外加:列出所有virtual hosts,包括他们不能登录的virtual hosts查看其他用户的connections和channels查看节点级别的数据如clustering和memory使用情况查看真正的关于所有virtual hosts的全局的统计信息
administrator policymaker和monitoring的权限外加:创建和删除virtual hosts查看、创建和删除users查看创建和删除permissions关闭其他用户的connections

用户管理

rabbitmqctl add_user {username} {password} #新增用户
rabbitmqctl delete_user {username} #删除用户
rabbitmqctl change_password {username} {newpassword} #修改密码
rabbitmqctl clear_password {username} #清除密码
rabbitmqctl authenticate_user {username} {password} #认证用户与密码
rabbitmqctl set_user_tags {username} {tag ...} #设置角色

权限控制

RabbitMQ权限分为读取(消费消息,清空队列)、写(发布消息)、配置(队列与交换机的创建与删除),其中vhost相当与虚拟主机,逻辑上分离不同应用操作

rabbitmqctl add_vhost {vhost}
rabbitmqctl delete_vhost {vhost}
rabbitmqctl list_vhosts
rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}
#rabbitmqctl set_permissions -p /  admin ".*" "^(WTH.*|WTH)$" "^(WTH.*|WTH)$"
rabbitmqctl clear_permissions [-p vhost] {username}
rabbitmqctl list_permissions [-p vhost]
rabbitmqctl list_user_permissions {username}

新建用户,并授权访问WTH开头的队列

rabbitmqctl add_user test 123456
rabbitmqctl add_vhost /test
rabbitmqctl set_permissions -p /test test ".*" "(WTH.*|WTH)" "(WTH.*|WTH)"
文章作者: 编程之家
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编程之家
Rabbitmq rabbitmq
喜欢就支持一下吧