RabbitMQ集群部署

环境:

ip 主机名 操作系统
10.0.0.1 test1 Centos7.2
10.0.0.2 test2 Centos7.2
10.0.0.3 test3 Centos7.2

 一、安装依赖环境。

  yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget

二、防火墙、主机与ip间的映射。

  1. 关闭或设置防火墙

    systemctl stop firewalld.service

    systemctl disable firewalld.service

    firewall-cmd --state

  2. 建立主机和ip间的映射关系

    vi /etc/hosts

      10.0.0.1 test1

      10.0.0.2 test2

      10.0.0.3 test3

三、安装erlang,因为RabbitMQ基于erlang开发。

  1. 安装erlang

    cd /data/tmp

    tar -xvzf otp_src_18.3.tar.gz -C /usr/local/

    cd /usr/local/otp_src_18.3

    ./configure --prefix=/usr/local/erlang

    make &&make install

  2. 配置环境变量

    vim /etc/profile

      #set erlang environment
      ERL_HOME=/usr/local/erlang
      PATH=$ERL_HOME/bin:$PATH
      export ERL_HOME PATH

    source /etc/profile

  3. 测试,如果进入erlang的shell则表示成功

    erl

四、安装RabbitMQ(以下为test1部署,同理部署test2、test3)。

  1. 下载解压

    cd /data/tmp

    tar -xvzf rabbitmq-server-generic-unix-3.5.4.tar.gz -C /data/local/rabbitmq-server

    cd /data/local

    mv rabbitmq-server-3.5.4 rabbitmq-server

  2. 配置环境变量

    vim /etc/profile

      # rabbitmq evironment configration
      export PATH=$PATH:/data/local/rabbitmq-server/sbin

    source /etc/profile

  3. 启动RabbitMQ server (如提示找不到命令,请检查环境变量路径是否正确)

    rabbitmq-server -detached

    rabbitmqctl status/stop/list_users               ## 查看状态、停止服务、列出角色命令

    rabbitmqctl cluster_status 查看当前节点集群状态

      Cluster status of node rabbit@test1 ...
      [{nodes,[{disc,[rabbit@test1]}]},
      {running_nodes,[rabbit@test1]},
      {cluster_name,<<"rabbit@test1">>},
      {partitions,[]}]

  4. 配置web页面插件

    rabbitmq-plugins enable rabbitmq_management

  5. 访问管理页面测试 10.0.0.1:15672 (此时没有登录用户)

  6.  添加管理员账号

    rabbitmqctl add_user admin 123.abc                               ## 添加用户,后面两个参数是用户名和密码.
    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"          ## 添加权限
    rabbitmqctl set_user_tags admin administrator               ## 修改用户角色

  7. 登录测试,删除guest用户,安装完成。

 五、配置MQ集群。

  1. 设置节点间认证cookie(将test1上的拷贝到其他两台)

    scp /root/.erlang.cookie 10.0.0.2:/root/

    scp /root/.erlang.cookie 10.0.0.2:/root/

    重启test2、test3的mq服务。

  2. 加入到test1的集群(分别在test2、test3上操作)

    rabbitmqctl stop_app                                # 先停掉节点,否则join_cluster会清除该节点所有资源和数据

    rabbitmqctl join_cluster rabbit@test1       # 加入集群

    rabbitmqctl start_app                                # 启动节点

    rabbitmqctl cluster_status                         # 查看集群状态,test2、test3都执行完集群应该有三个节点

  3. 测试(停掉其中一台,看集群状态的变化)

六、退出集群(当某台机器不需要再存在于集群中时,test3为例)。

  1. rabbitmqctl stop_app                  ## 停掉需要提出的节点

  2. rabbitmqctl reset                         ## 踢出集群

  3. rabbitmqctl start_app                  ## 启动集群

  4. rabbitmqctl cluster_status           ## 查看该机器当前集群状态

七、重要提示。

  (1)、应为rabbitmq管理后台部署nginx代理,以防其中一个节点down掉的时候代理到其他节点。

  (2)、当整个集群down掉时,最后一个down机的节点必须第一个启动到在线状态,如果不是这样,节点会等待30s等最后的磁盘节点恢复状态,然后失败。如果最后下线的节点不能上线,可以通过forget_cluster_node 指令来踢出集群。

  (3)、如果所有的节点不受控制的同时宕机,比如掉电,会进入所有的节点都会认为其他节点比自己宕机的要晚,即自己先宕机,这种情况下可以使用force_boot指令来启动一个节点。

八、其他

  1. 关于用户

    新增用户:rabbitmqctl add_user username password

    删除用户:rabbitmqctl delete_user username

    修改密码:rabbitmqctl  change_password  Username  Newpassword

    查看当前用户列表:rabbitmqctl  list_users

  2. 关于角色(五类系统角色)

    a. 角色分类

      administrator 超级管理员:可查看所有的信息,可以对用户,策略进行操作。
      monitoring 监控者:可登陆管理控制台查看rabbitmq节点的相关信息(进程数、内存、磁盘使用情况等)。
      policymaker 策略制定者:可登陆管理控制台对policy进行管理。但无法查看节点的相关信息。
      management 普通管理者:仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
      其他用户:无法登陆管理控制台,通常就是普通的生产者和消费者。

    b. 相关命令

      修改用户角色:rabbitmqctl set_user_tags username administrator
      也可以赋予多个角色:rabbitmqctl set_user_tags username administrator monitoring

   3. 关于权限(用户权限指的是用户对exchange,queue的操作权限)

    a. 权限分类

      配置权限:配置权限会影响到exchange,queue的声明和删除。
      读写权限:读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。

    b. 相关命令

      设置用户权限:使用户admin具有在vhost1这个/virtual host中所有资源的配置、写、读权限
        rabbitmqctl set_permissions -p /vhost1 user_admin '.*' '.*' '.*'
      查看(指定hostpath)所有用户的权限信息
        rabbitmqctl list_permissions -p /vhost1
      查看指定用户的权限信息
        rabbitmqctl list_user_permissions User
      清除用户的权限信息
        rabbitmqctl clear_permissions -p /vhost1 User

 

posted @ 2018-03-14 18:29  lao顽童  阅读(223)  评论(0编辑  收藏  举报