关于作者
在rabbitmq集群操作或者搭建的时候,常常会因为对于集群的不熟练而导致各种异常错误,常见的有绑定了浮动ip没有绑定实体ip导致,页面上操作mq完全没有问题,但是一到程序操作就出现问题,我们一起来学习下,rabbitmq集群的正确操作
以下操作都以三节点集群为例,机器名标记为机器A、机器B、机器C,如果为双节点忽略机器C,如果为各多节点则与机器C操作相同
#编辑配置路径 /etc/rabbitmq/rabbitmq-env.confNODE_IP_ADDRESS=172.16.136.133
#配置文件1所在路径 /etc/rabbitmq/rabbitmq.config (如果是集群,每台机器都需要修改这个绑定本机实体ip)#其中rabbit@master是创建集群时所配置的参数,@后面的参数为主机名,示例中为master[ {rabbit, [ {cluster_nodes, {['rabbit@master'], disc}}, {cluster_partition_handling, ignore}, {default_user, <<"guest">>}, {default_pass, <<"guest">>}, {tcp_listen_options, [binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]} ]}, {kernel, [ {inet_dist_listen_max, 44001}, {inet_dist_listen_min, 44001} ]}].
#配置文件2 所在路径 /etc/hosts (如果是集群,每台机器都需要修改这个绑定本机实体ip,而且hosts文件的映射不得重复,如果重复linux系统为以最下面一条记录为准)172.16.136.133 master172.16.136.134 venus172.16.136.135 venus2
#机器Aservice rabbitmq stopepmd -kill#机器Bservice rabbitmq stopepmd -kill#机器Cservice rabbitmq stopepmd -kill
#机器Aservice rabbitmq start#机器Bservice rabbitmqstart#机器Cservice rabbitmqstart
#位于 /var/lib/rabbitmq/mensiamv /var/lib/rabbitmq/mensia /var/lib/rabbitmq/mensia.bak
比如A、B、C三台机器,将B和C加入到A中去,需要执行以下命令
#机器Brabbitmqctl stop_app#机器Crabbitmqctl stop_app
注意此处master为唯一没有执行
rabbitmqctl stop_app
的机器
#机器Brabbitmqctl join_cluster rabbit@master#机器Crabbitmqctl join_cluster rabbit@master
#机器Brabbitmqctl start_app#机器Crabbitmqctl start_app
在任意一台机器上执行 rabbitmqctl cluster_status
命令即可检查,输出包含集群中的节点与运行中的节点,兼以主机名标志
例子中创建了两个用户 添加用户
add_user
,设置角色set_user_tags
,添加rabbitmq虚拟主机add_vhost
,设置访问权限set_permissions
,以下是详细用法
# 创建第一个用户 /usr/sbin/rabbitmqctl add_user 用户名 密码 /usr/sbin/rabbitmqctl set_user_tags 用户名 administrator /usr/sbin/rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*" # 创建第二个用户 /usr/sbin/rabbitmqctl add_user 用户名2 密码 /usr/sbin/rabbitmqctl set_user_tags 用户名2 management /usr/sbin/rabbitmqctl add_vhost sip_ext /usr/sbin/rabbitmqctl set_permissions -p sip_ext 用户名2 '.*' '.*' '.*'
备注:RabbitMQ 虚拟主机,RabbitMQ 通过虚拟主机(vhost)来分发消息。拥有自己独立的权限控制,不同的vhost之间是隔离的,单独的。权限控制的基本单位:vhost。用户只能访问与之绑定的vhost。vhost是AMQP中唯一无法通过协议来创建的基元。只能通过rabbitmqctl工具来创建。
/usr/sbin/rabbitmq-plugins enable rabbitmq_management
如果覆盖了用户需要使用以下命令修改mq用户密码 /usr/sbin/rabbitmqctl change_password用户名密码
更多技术文章,请点击底部阅读原文,或复制链接https://pzqu.github.io/到浏览器,和作者讨论更多技术问题~
悄悄讲个内幕
生活不易 多才多艺
(鞠躬)