• 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

  • 相关阅读:
    Eclipse背景颜色修改
    Android动画效果translate、scale、alpha、rotate详解
    代理上网的方法
    ubuntu系统使用SSH免密码登陆
    Git的思想和基本工作原理
    GitHub详细教程
    Ubuntu和Redhat(Debian)的差别
    T2: 一种能累积计算积分的EC2实例类型
    win server 2008 r2 iis+php 500错误内部服务器错误。
    从OTF字体文件里查找字体名称
  • 原文地址:https://www.cnblogs.com/hsjy/p/8532188.html
Copyright © 2020-2023  润新知