zoukankan      html  css  js  c++  java
  • Linux下RabbitMQ的集群

    一、RabbitMQ安装

    1.1、下载Erlang的rpm包

      RabbitMQ是Erlang语言编写,所以Erang环境必须要有,注:Erlang环境一定要与RabbitMQ版本匹配:https://www.rabbitmq.com/which-erlang.html

      Erlang下载地址:https://www.rabbitmq.com/releases/erlang/(根据自身需求及匹配关系,下载对应rpm包)

    请一定要注意 erlang的版本要跟 rabbitmq的版本要对应一致,不然会出现各种异常的错误。

    1.2、下载RabbitMQ的rpm包

      RabbitMQ下载地址:https://www.rabbitmq.com/releases/rabbitmq-server/(根据自身需求及匹配关系,下载对应rpm包)

    1.3、下载socat的rpm包

      rabbitmq安装依赖于socat,所以需要下载socat。

      socat下载地址:http://repo.iotti.biz/CentOS/6/x86_64/socat-1.7.3.2-1.el6.lux.x86_64.rpm

    1.4、需要安装logrotate 

    yum -y install logrotate
    

    1.5、分别安装Erlang、Socat、RabbitMQ(一定按照顺序!)

    一定按照以下顺序安装

    [root@A ~]#rpm -ivh erlang-18.3-1.el6.x86_64.rpm
    
    [root@A ~]#rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm
    
    [root@A ~]#rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
    

    二、配置Rabbitmq

    2.1、配置rabbitmq

    如果仅仅是允许guest账号访问的话,则需要做以下操作:

    vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
    

     

    2.2、启用web管理插件

    [root@A ~]# rabbitmq-plugins enable rabbitmq_management
    The following plugins have been enabled:
      amqp_client
      cowlib
      cowboy
      rabbitmq_web_dispatch
      rabbitmq_management_agent
      rabbitmq_management
    
    Applying plugin configuration to rabbit@bigdata-arch-client11... started 6 plugins.
    

    2.3、启动RabbitMQ

    [root@A ~]cd /var/lib/rabbitmq/
    
    [root@A ~]chown -R rabbitmq:rabbitmq .erlang.cookie
    
    [root@A ~]cd /usr/lib/rabbitmq/bin
    
    [root@A ~]./rabbitmq-server start  #centos 7.0=>/bin/systemctl start rabbitmq-server.service
    

    访问浏览器:http://ip地址:15672/,出现以下界面说明安装完成!默认用户名和密码都是:guest

    三、配置RabbitMQ的账号

    1、创建账号

    rabbitmqctl add_user 用户名   密码

    [root@A ~]# rabbitmqctl add_user admin admin
    Creating user "admin"
    

    如想修改密码:

    rabbitmqctl change_password 用户名 密码

    [root@A ~]# rabbitmqctl change_password  admin test.1234
    Creating user "admin"
    

    2、将admin账号赋予管理员权限

    rabbitmqctl set_user_tags 用户名  administrator

    [root@A ~]# rabbitmqctl set_user_tags admin administrator
    Setting tags for user "admin" to [administrator]
    

    3、设置权限

    rabbitmqctl  set_permissions  -p  '/'  用户名'.' '.' '.'

    [root@A ~]# rabbitmqctl  set_permissions  -p  '/'  admin '.' '.' '.'
    Setting permissions for user "admin" in vhost "/"
    

    四、配置RabbitMQ集群

     前提:我们这里会展示如何配置一个RabbitMQ集群,要保证三台服务器的IP能通。而且特别强调的是三台机器的服务都要配置上hosts:

    [root@A ~]vim  /etc/hosts
    10.55.202.181 rabbitmqserver01  #第1台机器的 ip地址  主机名
    10.55.202.182 rabbitmqserver02  #第2台机器的 ip地址  主机名
    10.55.202.183 rabbitmqserver03  #第3台机器的 ip地址  主机名
    

     1、安装好RabbitMQ

    安装方法请按照上文描述

    2、保证相同的Erlang Cookie

    我这里是把rabbitmqserver01上的.erlang.cookie以scp的方式拷贝到另外两台机器。(如果mq没有启动过是没有erlang.cookie的)

    [root@rabbitmqserver01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmqserver02:/var/lib/rabbitmq
    [root@rabbitmqserver01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmqserver03:/var/lib/rabbitmq
    

    3、 运行各个RabbitMQ节点

    #systemctl restart rabbitmq-server.service
    #rabbitmqctl stop
    #rabbitmq-server -detached 
    

    4、运行成功后可以查看一下节点当前的集群状态,当然这个时候还没有组成集群。

    [root@rabbitmqserver01 ~]# rabbitmqctl cluster_status
    [root@rabbitmqserver02 ~]# rabbitmqctl cluster_status
    [root@rabbitmqserver03 ~]# rabbitmqctl cluster_status
    

    5、将节点连接成群

    rabbitmqserver02:加入到集群rabbit@rabbitmqserver01

    [root@rabbitmqserver02 ~]#rabbitmqctl stop_app 
    [root@rabbitmqserver02 ~]#rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01
    [root@rabbitmqserver02 ~]#rabbitmqctl start_app
    

    rabbitmqserver03: 加入到集群rabbit@rabbitmqserver02

    [root@rabbitmqserver03 ~]#rabbitmqctl stop_app 
    [root@rabbitmqserver03 ~]#rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01
    [root@rabbitmqserver03 ~]#rabbitmqctl start_app
    

     A:不用加入自己

    查看集群状态,我们可以在任意一台机器上查看,我们选择在client09上看

    [root@A ~]# rabbitmqctl cluster_status
    
    Cluster status of node rabbit@A
    [{nodes,[{disc,[rabbit@rabbitmqserver01,rabbit@rabbitmqserver02,rabbit@rabbitmqserver03]}]},
    {running_nodes,[rabbit@rabbitmqserver03,rabbit@rabbitmqserver02,rabbit@rabbitmqserver01]},
    {cluster_name,<<"rabbit@rabbitmqserver01">>},
    {partitions,[]},
    {alarms,[{rabbit@rabbitmqserver03,[]},{rabbit@rabbitmqserver02,[]},{rabbit@rabbitmqserver01,[]}]}]
    

     这边需要强调的是,三台机器中必须有一台是磁盘模式,可以允许三台都是磁盘模式。

    rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01  => --ram 表示是内存模式
    rabbitmqctl join_cluster rabbit@rabbitmqserver01   => 表示是磁盘模式
    

    如果要切换模式的话:

    rabbitmqctl change_cluster_node_type {disc|ram}
    

     

    可以看到,3个实例已经组成了集群:

     如果想删除节点的话:

    rabbitmqctl  -n rabbit@shtw-rabbitmqserver01 forget_cluster_node rabbit@shtw-rabbitmqserver03
    
  • 相关阅读:
    golang学习笔记---flag包
    golang学习笔记 --- 结构体(struct)
    golang学习笔记---映射(map)
    golang学习笔记----slice(22)
    golang学习笔记---数组(22)
    golang学习笔记 ---数据类型转换(strconv包)
    golang学习笔记 ---slice(2)
    golang学习笔记 ---slice
    golang学习笔记--中英文字符串截取
    golang学习笔记 ---如何将interface转为int, string, slice, struct等类型
  • 原文地址:https://www.cnblogs.com/zhangqigao/p/11858878.html
Copyright © 2011-2022 走看看