zoukankan      html  css  js  c++  java
  • rabibtMQ安装及集群配置linux

    安装RabbitMQ

    RabbitMQ是流行的开源消息队列系统,用erlang语言开发,故首先需要安装erlang依赖及erlang。

    1. 安装erlang依赖的基本环境,通过yum方式进行安装:

      yum -y install gcc glibc-devel make ncurses-devel openssl-devel autoconf
    2. 下载并安装erlang,这里使用的是erlang-R15B-02.1.el6.x86_64.rpm,将其拷贝至虚机中并通过yum方式进行安装:

      yum -y install erlang-R15B-02.1.el6.x86_64.rpm
    3. 测试erlang环境,输入erl


    4. 下载rabbitmq官方server版并安装
      地址:http://www.rabbitmq.com/install-rpm.html
      这里使用的是rabbitmq-server-3.3.5-1.noarch.rpm版本,通过xftp软件或者其他方式上传到虚拟机中,使用yum方式进行安装:

      yum -y install rabbitmq-server-3.3.5-1.noarch.rpm

    启动RabbitMQ

    1. 通过系统服务启动rabbitmq-server

      如果无法正常启动,则可以通过日志进行故障排查

      另外通过chkconfig命令可以查看rabbitmq服务是否已经启动:

      chkconfig --list rabbitmq-server
    2. 开启RabbitMQ Web管理插件
      首先查看插件list的相关信息:

      rabbitmq-plugins list

      启动web管理插件:

      rabbitmq-plugins enable rabbitmq_management

      如果成功启动插件,使用service rabbitmq-server restart命令重启rabbitmq服务,使其生效。

    3. 访问web管理插件界面
      通过浏览器打开web界面,地址为http://ip:15672/mgmt/,默认的用户名和密码均为guest。
      如果无法访问,查看rabbitmq日志信息,可能原因主要有两方面:端口15672被占用、防火墙开启。
      通过下面命令关闭防火墙,建议设置为开机自动关闭:

      service iptables stop
      chkconfig iptables off
    4. Guest账户无法登陆web管理界面
      出于安全性的考虑,rabbitmq从3.3版本以后,guest用户默认只能通过localhost才能登陆使用。
      这里可以通过创建rabbitmq.config文件,解除上述访问限制。

      vi /etc/rabbitmq/rabbitmq.config
      # 内容如下
      [{rabbit, 
          [
              %%%% Network Connectivity
              %% ====================
              %%
              %% By default, RabbitMQ will listen on all interfaces, using
              %% the standard (reserved) AMQP port.
              %%
              {tcp_listeners, [5672]},
              {loopback_users, ["admin"]}
          ]
      }].

    搭建RabbitMQ集群

    Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。

    Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在.erlang.cookie 中,

    故必须保证各节点cookie保持一致,否则节点之间就无法通信。建议在做下列操作前,关闭rabbitmq-server服务。

    1. 设置节点cookie
      cookie文件位于/var/lib/rabbitmq下

      将该节点的.erlang.cookie文件内容(如下面的"XXXXXXXXXXXXX"字符串)复制到其他所有节点的同文件中,记得要先赋予文件写权限,写完后再取消写权限:

      chmod 700 .erlang.cookie
      echo -n "XXXXXXXXXXXXX" > .erlang.cookie 
      chmod 400 .erlang.cookie

      注意:复制字符串时,千万不要带上空格等无用信息

       

    2. 确保节点间主机名称可以相互解析
      将集群中全部机器的(ip地址 主机名)分别添加到每台机器的hosts文件中:


    3. 节点组成集群
      首先启动rabbitmq-server的服务,运行各个机器的节点,并查看状态:

      service rabbitmq-server start
      rabbitmqctl stop
      rabbitmq-server -detached
      rabbitmqctl status

      假设有三台机器,分别为node1、node2、node3,那么下面将node2和node3与node1组成集群(即在node2和node3两台机器中做如下操作):

      rabbitmqctl stop_app
      rabbitmqctl join_cluster rabbit@node1
      rabbitmqctl start_app

      配置完成后,可以在任意节点机器上执行 rabbitmqctl cluster_status 来查看是否集群配置成功:

    4. 设置镜像队列策略

      在任意节点上执行下列策略,将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一致。当有新节点加入集群时,队列将被镜像到那个节点。

      rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
    5. 节点退出集群

      以node1节点为例,如果需要将其退出集群

      rabbitmqctl stop_app
      rabbitmqctl rest

    创建集群用户

    由于后面部署BuildPlatform时,所用到的rabbitmq账户为admin,密码为123456。

    因此这里需要首先创建用户,方法主要有两个:

    1. Web管理页面创建
      使用guest账户登陆web管理界面后,点击Admin标签,原本只有一个guest账户,
      这里新建admin账户,设置密码,并选中名为[Admin]的Tags:

      点击页面右侧的Virtual Host标签后,进入下图中方框的链接:

      找到Set permission部分,将admin用户添加到当前Permissions中:


    2. 命令行方式创建

      创建admin用户
      rabbitmqctl add_user admin 123456
      设置admin用户administrator角色
      rabbitmqctl set_user_tags admin administrator
      查看已创建用户
      rabbitmqctl list_users
      赋予admin用户权限
      rabbitmqctl  set_permissions -p /  admin '.*' '.*' '.*'

      上述命令确保用户admin具有/这个virtual host中所有资源配置、写、读权限,以便管理其中的资源

    建议

    强烈建议将RabbitMQ服务设置为开机自启动:

    chkconfig rabbitmq-server on
  • 相关阅读:
    C#编程概念系列内容索引
    Latin1_General_BIN
    C#编程概念系列(一):面向对象编程
    System.Web.HttpException: 为 ChartImg.axd 执行子请求时出错
    Excel导入数据到数据库
    C#编程概念系列(二):应用程序域
    ASP.NET 基础结构
    [博]留作证明是原创样式
    [整]网址搜集
    仅为调博客样式
  • 原文地址:https://www.cnblogs.com/lzzhang/p/4786468.html
Copyright © 2011-2022 走看看