RabbitMQ集群搭建

   集群主机名称(hostname)为:rabbitmqmaster,rabbitmqsalve1,rabbitsalver2,一共三个节点,分布在三个docker容器中。先来看看rabbitmqctl这个命令的用法,rabbitmq的管理功能最全的就是rabbitmqctl命令了,当然还有HTTP API和UI两种管理手段。
   rabbitmqctl的使用方法:
Usage:
rabbitmqctl [-n <node>] [-t <timeout>] [-q] <command> [<command options>] 

Options:
    -n node  默认node名称是"rabbit@server",如果你的主机明是'server.example.com',那么node名称是'rabbit@server'。
    -q      安静输出模式,信息会被禁止输出
    -t timeout

Default node is "rabbit@server", where server is the local host. On a host 
named "server.example.com", the node name of the RabbitMQ Erlang node will 
usually be rabbit@server (unless RABBITMQ_NODENAME has been set to some 
non-default value at broker startup time). The output of hostname -s is usually 
the correct suffix to use after the "@" sign. See rabbitmq-server(1) for 
details of configuring the RabbitMQ broker.

Quiet output mode is selected with the "-q" flag. Informational messages are 
suppressed when quiet mode is in effect.

Operation timeout in seconds. Only applicable to "list" commands. Default is 
"infinity".
   Commands(基本的管理功能):
    stop [<pid_file>]   #停止在erlang node上运行的rabbitmq,会使rabbitmq停止
    stop_app  #停止erlang node上的rabbitmq的应用,但是erlang node还是会继续运行的
    start_app  #启动erlan node上的rabbitmq的应用
    wait <pid_file>  #等待rabbitmq服务启动
    reset   #初始化node状态,会从集群中删除该节点,从管理数据库中删除所有数据,例如vhosts等等。在初始化之前rabbitmq的应用必须先停止
    force_reset  #无条件的初始化node状态
    rotate_logs <suffix>   #轮转日志文件
    hipe_compile <directory>
   cluster管理:
    join_cluster <clusternode> [--ram]   #clusternode表示node名称,--ram表示node以ram node加入集群中。默认node以disc node加入集群,在一个node加入cluster之前,必须先停止该node的rabbitmq应用,即先执行stop_app。
    cluster_status  #显示cluster中的所有node
    change_cluster_node_type disc | ram  改变一个cluster中node的模式,该节点在转换前必须先停止,不能把一个集群中唯一的disk node转化为ram node
    forget_cluster_node [--offline]  #远程移除cluster中的一个node,前提是该node必须处于offline状态,如果是online状态,则需要加--offline参数。
    rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2 ...]
    update_cluster_nodes clusternode
    force_boot
    sync_queue [-p <vhost>] queue   #同步镜像队列
    cancel_sync_queue [-p <vhost>] queue
    purge_queue [-p <vhost>] queue
    set_cluster_name name
   用户管理:
    add_user <username> <password>  #在rabbitmq的内部数据库添加用户
    delete_user <username>   #删除一个用户
    change_password <username> <newpassword>  #改变用户密码  \\改变web管理登陆密码
    clear_password <username>  #清除用户密码,禁止用户登录

    authenticate_user <username> <password>

    set_user_tags <username> <tag> ...      #设置用户tags
    list_users                              #列出用户

    add_vhost <vhost>         #创建一个vhosts
    delete_vhost <vhost>      #删除一个vhosts    
    list_vhosts [<vhostinfoitem> ...]  #列出vhosts
    set_permissions [-p <vhost>] <user> <conf> <write> <read> #针对一个vhosts 给用户赋予相关权限
    clear_permissions [-p <vhost>] <username>  #清除一个用户对vhosts的权限
    list_permissions [-p <vhost>]    #列出哪些用户可以访问该vhosts
    list_user_permissions <username>  #列出该用户的访问权限

    set_parameter [-p <vhost>] <component_name> <name> <value>
    clear_parameter [-p <vhost>] <component_name> <key>
    list_parameters [-p <vhost>]
   policy管理,策略用来控制和修改queues和exchange在集群中的行为,策略可以应用到vhost
    set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] #name 策略名称,pattern  正则表达式,用来匹配资源,符合的就会应用设置的策略,apply-to 表示策略应用到什么类型的地方,一般有queues、exchange和all,默认是all。priority 是个整数优先级,definition 是json格式设置的策略。
<name> <pattern>  <definition>
    clear_policy [-p <vhost>] <name>#清除一个策略  
    list_policies [-p <vhost>]#列出已有的策略
   queues && exchange状态信息
    list_queues [-p <vhost>] [<queueinfoitem> ...]#返回queue的信息,如果省略了-p参数,则默认显示的是"/"vhosts的信息。
    list_exchanges [-p <vhost>] [<exchangeinfoitem> ...]#返回exchange的信息。
    list_bindings [-p <vhost>] [<bindinginfoitem> ...] #返回绑定信息。
    list_connections [<connectioninfoitem> ...]#返回链接信息。
    list_channels [<channelinfoitem> ...]#返回目前所有的channels。
    list_consumers [-p <vhost>]#返回consumers,
    status#显示broker的状态
    node_health_check #节点健康检查
    environment #显示环境参数的信息
    report#返回一个服务状态report
    eval <expr>

    close_connection <connectionpid> <explanation>
    trace_on [-p <vhost>]
    trace_off [-p <vhost>]
    set_vm_memory_high_watermark <fraction>
    set_vm_memory_high_watermark absolute <memory_limit>
    set_disk_free_limit <disk_limit>
    set_disk_free_limit mem_relative <fraction>
   集群节点的名称为rabbit@hostname,那么对应的集群节点名称为rabbit@rabbitmqmaster,rabbit@rabbitmqsalve1,rabbit@rabbitsalver2,把rabbitmqsalve1加入到集群
[root@rabbitmqsalve1 rabbitmq]# sbin/rabbitmqctl stop_app
Stopping node rabbit@rabbitmqsalve1 ...
[root@rabbitmqsalve1 rabbitmq]# sbin/rabbitmqctl join_cluster rabbit@rabbitmqmaster  #以disc的方式加入集群,可以使用参数--ram 以ram的方式加入到集群。
Clustering node rabbit@rabbitmqsalve1 with rabbit@rabbitmqmaster ...
[root@rabbitmqsalve1 rabbitmq]# sbin/rabbitmqctl start_app
Starting node rabbit@rabbitmqsalve1 ...
[root@rabbitmqsalve1 rabbitmq]# sbin/rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmqsalve1 ...
[{nodes,[{disc,[rabbit@rabbitmqmaster,rabbit@rabbitmqsalve1]}]},
 {running_nodes,[rabbit@rabbitmqmaster,rabbit@rabbitmqsalve1]},
 {cluster_name,<<"rabbit@rabbitmqmaster">>},
 {partitions,[]},
 {alarms,[{rabbit@rabbitmqmaster,[]},{rabbit@rabbitmqsalve1,[]}]}]


[root@rabbitmqsalve1 rabbitmq]# sbin/rabbitmqctl stop_app
Stopping node rabbit@rabbitmqsalve1 ...
[root@rabbitmqsalve1 rabbitmq]# sbin/rabbitmqctl change_cluster_node_type ram #修改节点为ram
Turning rabbit@rabbitmqsalve1 into a ram node ...
[root@rabbitmqsalve1 rabbitmq]# sbin/rabbitmqctl start_app
Starting node rabbit@rabbitmqsalve1 ...
[root@rabbitmqsalve1 rabbitmq]# sbin/rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmqsalve1 ...
[{nodes,[{disc,[rabbit@rabbitmqmaster]},
         {ram,[rabbit@rabbitmqsalve1]}]},
 {running_nodes,[rabbit@rabbitmqmaster
                 rabbit@rabbitmqsalve1]},
 {cluster_name,<<"rabbit@rabbitmqmaster">>},
 {partitions,[]},
 {alarms,[{rabbit@rabbitmqmaster,[]},
          {rabbit@rabbitmqsalve1,[]}]}]
    设置镜像队列策略
    在任意一个节点上执行:
[root@rabbitmqsalver1 /]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
Setting policy "ha-all" for pattern "^" to "{\"ha-mode\":\"all\"}" with priority "0" ...
    将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。

参考:http://blog.csdn.net/engourdi/article/details/19334961
http://www.bbtang.info/linux/fuwu/610.html
http://hily.me/blog/2010/05/rabbitmq-multi-node-cluster/
http://88250.b3log.org/rabbitmq-clustering-ha

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值