zoukankan      html  css  js  c++  java
  • Linux 部署 rabbitMQ集群

    1. 部署Erlang

    1.1 RabbitMQ依赖于Erlang,版本对应请查看
    https://www.rabbitmq.com/which-erlang.html
    1.2 下载安装Erlang

    # 添加epel扩展源
    yum install epel-release
     
    # 先删除可能存在的erlang(非必须)
    yum list erlang
    yum remove erl*
     
    # 清空和更新安装源(非必须)
    yum clean
    yum update
     
    # 参考 https://github.com/rabbitmq/erlang-rpm -> Erlang 21.x -> o use Erlang 21.x on CentOS 6
    # 配置安装源
    vim /etc/yum.repos.d/rabbitmq-erlang.repo
     
    [rabbitmq-erlang]
    name=rabbitmq-erlang
    baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/6
    gpgcheck=1
    gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
    repo_gpgcheck=0
    enabled=0
     
    # 安装
    yum install erlang
    # 如果出现https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/6/repodata/repomd.xml: [Errno 14] problem making ssl connection 悲伤,仓库过期了
    # 到https://github.com/rabbitmq/erlang-rpm/releases下载(电脑龟速,夸克下载飞速)
    

    1.3 测试Erlang

    # 查看版本
    erl -v
    
    # 退出Erlang 注意尾部的 .
    halt().
    

    2. 安装RabbitMQ

    2.1 下载 npm 安装包:
    rabbitmq-server-3.8.0-1.el6.noarch.rpm
    2.3 创建rabbitmq目录并上传npm安装包

    cd /usr/local
    mkdir rabbitmq
    chmod 777 -R rabbitmq
    

    2.4 上传安装包至rabbitmq文件夹内
    2.5 进入rabbitmq文件夹 下载签名并安装

    cd rabbitmq
    # 已有安装包时下载签名
    rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
    # 安装
    yum install rabbitmq-server-3.8.0-1.el6.noarch.rpm
    

    2.5 启动mq

    # 添加开机启动RabbitMQ服务
    chkconfig rabbitmq-server on
    # 手动启动服务
    service rabbitmq-server start
    

    2.6 配置MQ

    # 查看当前所有用户
    rabbitmqctl list_users
     
    # 查看默认guest用户的权限
    rabbitmqctl list_user_permissions guest
     
    # 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
    rabbitmqctl delete_user guest
     
    # 添加新用户
    rabbitmqctl add_user username password
     
    # 设置用户tag
    rabbitmqctl set_user_tags username administrator
     
    # 赋予用户默认vhost的全部操作权限
     rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
     
    # 查看用户的权限
    rabbitmqctl list_user_permissions username
    

    2.7 添加插件

    # 添加web管理插件
    rabbitmq-plugins enable rabbitmq_management
    
    # 添加移除异常消息的插件
    rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management
    
    # 下载延迟队列插件rabbitmq_delayed_message_exchange,得到ez文件
    # mq插件位置/usr/lib/rabbitmq/lib/rabbitmq_server/plugins
    # 下载网站 https://www.rabbitmq.com/community-plugins.html
    rabbitmq-plugins enable rabbitmq_delayed_message_exchange
    
    # 添加成功后访问 http://ip地址:15672
    

    2.8 编辑远程连接权限

    vim /etc/rabbitmq/rabbitmq.config
    

    2.9 追加以下内容,lucky为允许远程连接的用户

    [
    {rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["username"]}]}
    ].

    2.10 重启rabbitMQ

    rabbitmqctl stop
    rabbitmq-server restart
    # 排查错误指令
    systemctl status rabbitmq-server.service
    

    2.11 访问http://IP地址:15672 进行管理

    3.集群配置

    3.1 Erlang通过erlang.cookie进行集群配置,配置RabbitMQ集群模式时需要各节点erlang.cookie内容一致

    # 修改服务器配置 (.erlang.cookie只读)
    vim /var/lib/rabbitmq/.erlang.cookie
     
    # 复制到其他节点
    scp /var/lib/rabbitmq/.erlang.cookie root@10.104.132.37:/var/lib/rabbitmq/.erlang.cookie
    scp /var/lib/rabbitmq/.erlang.cookie root@10.104.132.209:/var/lib/rabbitmq/.erlang.cookie
    
    # 未获取root密码情况下 需要更改权限,记得改回来
    chmod 777 /var/lib/rabbitmq/.erlang.cookie
    vim /var/lib/rabbitmq/.erlang.cookie
    # 将两文件修改成一致后,改回原权限
    chmod 400 /var/lib/rabbitmq/.erlang.cookie
    

    3.2 使用 -detached 参数运行各节点

    rabbitmqctl stop
    rabbitmq-server -detached
    

    3.3 修改主机的hostname和hosts

    # 将HOSTNAME=ttt6-node35 确保两个服务器不一致
    vim /etc/sysconfig/network
    # 修改hosts 
    vim /etc/hosts
    

    hosts内容需要和hostname保持一致 :举例

    10.104.132.35     ttt6-node35
    10.104.114.116    ttt6-node116
    

    3.4 重启时配置生效,大约需要两分钟

    reboot
    

    3.5 在从服务器上执行下列语句加入集群

    # 停止程序
    rabbitmqctl stop_app
    # 加入到集群,默认为磁盘节点
    # 加入为内存节点 加-ram参数 如:rabbitmqctl join_cluster --ram rabbit@ttt6-node35
    rabbitmqctl join_cluster rabbit@ttt6-node35
    rabbitmqctl start_app
    

    若出现 rabbitmqctl 指令执行不成功
    检查Erlang cookie hash值是否一致,不一致重复3.1,注意空行
    若一致,则可能是插件或者rabbitmq本身未启动

    service rabbitmq-server start
    rabbitmqctl start_app
    

    3.6 查看集群搭建结果

     rabbitmqctl cluster_status
    

    3.7 配置镜像队列模式,即队列会被复制到各个节点,各个节点状态保持一致,高可用

    rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
    
  • 相关阅读:
    【BZOJ3506】[CQOI2014] 排序机械臂(Splay)
    2019年1月训练记录(1.01~1.31)
    再学点分治——动态点分治
    【洛谷5113】Sabbat of the witch(毒瘤分块)
    【洛谷1501】[国家集训队] Tree II(LCT维护懒惰标记)
    初学后缀自动机
    【洛谷3950】部落冲突(LCT维护连通性)
    【BZOJ2049】[SDOI2008] Cave 洞穴勘测(LCT维护连通性)
    LCT入门
    【BZOJ4650】[NOI2016] 优秀的拆分(后缀数组)
  • 原文地址:https://www.cnblogs.com/hyry/p/11927566.html
Copyright © 2011-2022 走看看