centos6.9 搭建rabbitmq 3.6.8集群

发布时间:2020-03-25 10:22:55编辑:admin阅读(2664)

    一、概述

    RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。

     

    RabbiMQ模式

    RabbitMQ模式大概分为以下三种:
    (1)单一模式。
    (2)普通模式(默认的集群模式)。
    (3) 镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbiMQ的HA方案,在对业务可靠性要求较高的场合中比较适用)。
    要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。

     

    RabbiMQ特点

    RabbitMQ的集群节点包括内存节点、磁盘节点。RabbitMQ支持消息的持久化
    也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。

     

    二、正式搭建

    环境

    操作系统ip主机名配置
    centos 6.9192.168.31.7mq_011核2g
    centos 6.9192.168.31.216mq_021核2g
    centos 6.9192.168.31.214mq_031核2g

     

     

     

     

     

     

    注意,这里三台服务器都连接上互联网,另外RabbitMQ集群节点必须在同一网段里,如果是跨广域网,效果会变差。

     

    配置hosts文件

    修改主机名

    更改三台MQ节点的计算机名分别为mq_01、mq_02 和mq_03,然后修改hosts配置文件

    vim /etc/hostname

    内容如下:

    mq_01

    其他两台操作相同,内容不一样。

     

    增加hosts记录

    vi /etc/hosts

    内容如下:

    192.168.31.7 mq_01
    192.168.31.216 mq_02
    192.168.31.214 mq_03

    其他两台操作相同,内容也是一样。

    为了让主机名永久生效,重启3台服务器。

    reboot -f

     

    配置yum源

    3台服务器都安装一下

    yum install -y epel-release

     

    安装erlang

    3台服务器都安装一下

    wget https://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el6.x86_64.rpm
    yum install -y socat
    rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm

    安装rabbitmq-server

    3台服务器都安装一下

    wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server-3.6.8-1.el6.noarch.rpm
    rpm -ivh rabbitmq-server-3.6.8-1.el6.noarch.rpm

    创建目录

    3台服务器都执行一下

    mkdir -p /data/log/rabbitmq
    mkdir -p /data/rabbitmq/mnesia
    chown -R rabbitmq.rabbitmq -R /data/log/rabbitmq /data/rabbitmq/mnesia

    创建配置文件

    3台服务器都执行一下

    vi /etc/rabbitmq/rabbitmq-env.conf

    内容如下:

    RABBITMQ_LOG_BASE=/data/log/rabbitmq
    RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia

     

     启动rabbit

    3台服务器都执行一下

    /etc/init.d/rabbitmq-server start

     

    拷贝erlang.cookie

    Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群景象。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。所以必须保证各节点cookie一致,不然节点之间就无法通信。

     

    登录到mq_01节点,查看erlang.cookie

    # cat /var/lib/rabbitmq/.erlang.cookie 
    RUIRJRRZDNYEHCCWITRS

     

    用scp的方式将mq_01节点的.erlang.cookie的值复制到其他两个节点中。

    scp /var/lib/rabbitmq/.erlang.cookie root@192.168.31.216:/var/lib/rabbitmq/.erlang.cookie
    
    scp /var/lib/rabbitmq/.erlang.cookie root@192.168.31.214:/var/lib/rabbitmq/.erlang.cookie

    设置权限,另外2台都执行一下

    chown -R rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie
    chmod 400 /var/lib/rabbitmq/.erlang.cookie

    安装插件

    RabbitMQ提供了一个非常友好的图形化监控页面插件(rabbitmq_management),让我们可以一目了然看见Rabbit的状态或集群状态。

     

    3台服务器都执行一下

    rabbitmq-plugins enable rabbitmq_management

     

    查看端口

    netstat -napt|grep 5672

     

    加入mq01节点集群中

    将mq_02、mq_03作为内存节点加入mq01节点集群中

    在mq_02、mq_03执行如下命令:

     

    停掉rabbit应用

    rabbitmqctl stop_app

     

    加入到磁盘节点

    rabbitmqctl join_cluster --ram rabbit@mq_01

     

    启动rabbit应用

    rabbitmqctl start_app

    (1)默认rabbitmq启动后是磁盘节点,在这个cluster命令下,mq02和mq03是内存节点,mq01是磁盘节点。
    (2)如果要使mq02、mq03都是磁盘节点,去掉--ram参数即可。
    (3)如果想要更改节点类型,可以使用命令rabbitmqctl change_cluster_node_type disc(ram),前提是必须停掉rabbit应用

     

    查看集群状态

    3台节点,都执行一下

    rabbitmqctl cluster_status

     

    添加管理用户

    3台节点,都执行一下

    rabbitmqctl add_user admin 'admin123'
    rabbitmqctl set_permissions -p / admin . . .
    rabbitmqctl set_user_tags admin administrator
    解释:

    第一行命令表示,创建用户admin,密码为admin123

    第二行命令表示,admin用户对virtual host为'/'所有资源,具有配置,写,读权限。注意:后面3个点表示这3个权限。

    第三行命令表示,为admin用户分配管理员权限。

     

    登录rabbitmq web管理控制台

    打开浏览器输入http://192.168.31.7:15672,

    用户名:admin,密码:admin123

    登录后出现如图所示的界面。

    1.png

     

     

     

    本文参考链接:

    https://www.cnblogs.com/shihaiming/p/11014257.html


关键字