zoukankan      html  css  js  c++  java
  • rabbitmq 集群

    搭建rabbitmq+HA 高可用集群
     
    一.环境
    centos6.5     192.168.9.27     rabbitmq1
    centos6.5 192.168.9.28        rabbitmq2
    centos6.5 192.168.9.29        rabbitmq3
     
    二.每台服务器搭建单点rabbitmq 服务,见本博客地址:http://www.cnblogs.com/lzcys8868/p/7506251.html
    端口说明:15672是管理界面用的;25672是集群之间使用的端口;4369是erlang进程用来做node连接的。
     
    http://192.168.9.27:15672    usename=admin  passwd=admin
     
    http://192.168.9.28:15672    username=admin  passwd=admin
     
     
     
    三. 保证上面的三个节点可用,将三个节点连接起来形成高可用cluser。这样我们就可以让我们的exchange,queue在这两个节点之间复制,形成高可用的queue。
    1》.erlang.cookie 这个文件是erlang用来发现 和互相连接的基础。将三个节点中的.erlang.cookie设置成一样,这是erlang的约定,一样的 .cookie hash key 他认为是合法和正确的
     
    [root@rabbitmq1 sbin]# find / -name .erlang.cookie -type f
    /root/.erlang.cookie
     
    [root@rabbitmq2 ~]# scp 192.168.9.27:/root/.erlang.cookie /root
    root@192.168.9.27's password:
    .erlang.cookie
     
    [root@rabbitmq3 ~]# scp 192.168.9.27:/root/.erlang.cookie /root
    root@192.168.9.27's password:
    .erlang.cookie
     
    [root@rabbitmq1 ~]# chmod u+w .erlang.cookie   //三台服务器上都加上权限
    [root@rabbitmq1 ~]# ls -ld .erlang.cookie
    -rw-------. 1 root root 20 3月   8 00:00 .erlang.cookie
     
    2》保证三台服务器hosts 相同,erlang会通过hosts文件发现节点
    [root@rabbitmq1 ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
     
    192.168.9.27  rabbitmq1
    192.168.9.28  rabbitmq2
    192.168.9.29  rabbitmq3
     
     
    3》将rabbitmq2,rabbitmq3与rabbitmq1组成集群 。rabbitmq2和rabbitmq3会默认连接在一起
    [root@rabbitmq2 sbin]# ./rabbitmqctl stop_app
    Stopping node rabbit@rabbitmq2 ...
    注:[rabbitmq-discuss] Error: unable to connect to node 'rabbit@localhost': nodedown.。如果执行 ./rabbitmqctl stop_app命令时报此错误,是“.erlang.cookie”的问题,从新复制同一台上的cookie。杀掉 5672    15672   4369 端口的进程,然后再执行 ./rabbitmq-server --detached &  从新启动rabbitmq,再次执行  ./rabbitmqctl stop_app 命令
    [root@rabbitmq2 sbin]# ./rabbitmqctl join_cluster rabbit@rabbitmq1    //rabbitmq2与rabbitmq1 组成集群
    Clustering node rabbit@rabbitmq2 with rabbit@rabbitmq1 ...
     
    [root@rabbitmq2 sbin]# ./rabbitmqctl start_app
    Starting node rabbit@rabbitmq2 ...
     
                  RabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.
      ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
      ##  ##
      ##########  Logs: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@rabbitmq2.log
      ######  ##        /usr/local/rabbitmq/var/log/rabbitmq/rabbit@rabbitmq2-sasl.log
      ##########
                  Starting broker...
    completed with 6 plugins.
     
     
     
    [root@rabbitmq3 sbin]# ./rabbitmqctl stop_app
    Stopping node rabbit@rabbitmq3 ...
    [root@rabbitmq3 sbin]# ./rabbitmqctl join_cluster rabbit@rabbitmq1    //rabbitmq3与rabbitmq1组成集群
    Clustering node rabbit@rabbitmq3 with rabbit@rabbitmq1 ...
    [root@rabbitmq3 sbin]# ./rabbitmqctl start_app
    Starting node rabbit@rabbitmq3 ...
     
                  RabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.
      ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
      ##  ##
      ##########  Logs: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@rabbitmq3.log
      ######  ##        /usr/local/rabbitmq/var/log/rabbitmq/rabbit@rabbitmq3-sasl.log
      ##########
                  Starting broker...
    completed with 6 plugins.
     
     
     
    4》集群验证:三个节点都是可用的
     
     
    四.默认情况下节点占用的memory 是总内存的40%,可以根据自己的用途研究rabbitmq的配置项。为了提高性能,不需要三个节点都是disc 的节点,所以我们需要启动一个节点为RAM模式。
    [root@rabbitmq3 sbin]# ./rabbitmqctl  change_cluster_node_type ram   //改变rabbitmq3的节点模式为ram
    Turning rabbit@rabbitmq3 into a ram node ...
    Error:  Mnesia is still running on node rabbit@rabbitmq3.
            Please stop the node with rabbitmqctl stop_app first.
     
    根据提示操作:
    [root@rabbitmq3 sbin]# ./rabbitmqctl stop_app
    Stopping node rabbit@rabbitmq3 ...
    [root@rabbitmq3 sbin]# ./rabbitmqctl change_cluster_node_type ram
    Turning rabbit@rabbitmq3 into a ram node ...
     
    [root@rabbitmq3 sbin]# ./rabbitmqctl start_app
    Starting node rabbit@rabbitmq3 ...
     
                  RabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.
      ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
      ##  ##
      ##########  Logs: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@rabbitmq3.log
      ######  ##        /usr/local/rabbitmq/var/log/rabbitmq/rabbit@rabbitmq3-sasl.log
      ##########
                  Starting broker...
    completed with 6 plugins.
     
     
    注:节点rabbitmq3的类型 已经是RAM了。可以把节点rabbitmq2节点类型也做修改
     
     
    五.设置镜像队列策略
    我们需要设置exchange,queue 高可用策略,这样才能真的做到高可用。现在是物理上的机器或者说是虚拟节点是高可用的,但是里面的对象需要我们进行配置策略。
     
    三台服务器上都执行:
    [root@rabbitmq1 sbin]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
    注:exchange 里有 ha-all
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    ES6
    django创建超级用户
    小程序-网络请求api
    小程序-数据双向绑定
    POJ2406 Power Strings
    POJ2758 Checking the Text
    LightOJ1197
    51Nod
    CF55D
    Kattis
  • 原文地址:https://www.cnblogs.com/lzcys8868/p/7522258.html
Copyright © 2011-2022 走看看