zoukankan      html  css  js  c++  java
  • RabbitMQ 3.8.3 搭建镜像集群简明笔记

    背景

    项目需要用到 RabbitMQ ,同时要求做镜像集群。

    实战

    以下实验基于 Centos6RabbitMQ 3.8.3

    系统版本 ip 主机名
    Centos 6 192.168.201.170 mq1
    Centos 6 192.168.201.171 mq2
    Centos 6 192.168.201.172 mq3

    三台服务器记得配置好 hosts

    cat <<EOF>> /etc/hosts
    192.168.201.170 mq1
    192.168.201.171 mq2
    192.168.201.172 mq3
    EOF
    

    安装

    # 三台都要操作
    wget https://mirrors.huaweicloud.com/rabbitmq-server/v3.8.3/rabbitmq-server-3.8.3-1.el6.noarch.rpm
    wget https://github.com/rabbitmq/erlang-rpm/releases/download/v22.3.2/erlang-22.3.2-1.el6.x86_64.rpm
    yum localinstall erlang-22.3.2-1.el6.x86_64.rpm rabbitmq-server-3.8.3-1.el6.noarch.rpm -y
    

    配置

    # 三台都要操作
    # 安装简单,配置比较麻烦
    # 我这里需要修改 RabbitMQ 的默认数据目录
    mkdir -p /data/rabbitmq/{mnesia,log}
    chown -R rabbitmq.rabbitmq /data/rabbitmq/
    cat <<EOF> /etc/rabbitmq/rabbitmq-env.conf 
    RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
    RABBITMQ_LOG_BASE=/data/rabbitmq/log
    EOF
    #不知道为什么,只要修改过 /etc/rabbitmq 的文件,就要重新授权
    chown -R rabbitmq.rabbitmq /etc/rabbitmq/
    # 启动
    /etc/init.d/rabbitmq-server start
    # 启用 web 界面,此处必须,不然搭建集群会提示 “Node statistics not available”
    rabbitmq-plugins enable rabbitmq_management
    # 查看状态
    /etc/init.d/rabbitmq-server status
    

    搭建普通集群

    前面我们在安装 RabbitMQ的时候也装了 erlang,装完以后本机会出现一个隐藏文件叫 .erlang.cookie,路径在 $HOME/var/lib/rabbitmq/.erlang.cookie ,但是很多博客都只写其中一个路径。

    On UNIX systems, the cookie will be typically located in /var/lib/rabbitmq/.erlang.cookie (used by the server) and $HOME/.erlang.cookie (used by CLI tools). Note that since the value of $HOME varies from user to user, it's necessary to place a copy of the cookie file for each user that will be using the CLI tools. This applies to both non-privileged users and root.

    这玩意干嘛用的呢?RabbitMQ的集群是依赖erlang集群,而 erlang集群是通过这个cookie进行通信认证的,所以要保证所有机器的 .erlang.cookie 内容一致,且为只读权限。

    所以可以把 mq1.erlang.cookie 复制到 mq2mq3 机器,然后修改权限

    # mq1 操作
    scp /var/lib/rabbitmq/.erlang.cookie 192.168.201.171:/var/lib/rabbitmq
    scp /var/lib/rabbitmq/.erlang.cookie 192.168.201.172:/var/lib/rabbitmq
    # mq2、mq3 操作
    chmod 400 /var/lib/rabbitmq/.erlang.cookie
    

    mq2mq3 加入集群

    rabbitmqctl stop_app
    # => Stopping node rabbit@mq2 ...done.
    
    rabbitmqctl reset
    # => Resetting node rabbit@mq2 ...
    
    # 如果要设置为内存节点,则改为 rabbitmqctl join_cluster --ram rabbit@mq1
    rabbitmqctl join_cluster rabbit@mq1
    # => Clustering node rabbit@mq2 with [rabbit@mq1] ...done.
    
    rabbitmqctl start_app
    # => Starting node rabbit@mq2 ...done.
    

    查看集群状态

    rabbitmqctl cluster_status
    ...
    Basics
    
    Cluster name: rabbit@mq1
    
    Disk Nodes
    
    rabbit@mq1
    rabbit@mq2
    rabbit@mq3
    
    Running Nodes
    
    rabbit@mq1
    rabbit@mq2
    rabbit@mq3
    ...
    

    镜像集群

    J简单的说,镜像队列机制就是将队列在 N 个节点之间设置主从关系,消息会在 N 个节点之间进行自动同步,且如果其中一个节点不可用,并不会导致消息丢失或服务不可用的情况,提升 MQ 集群的整体高可用性。

    配置

    rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
    
  • 相关阅读:
    两数相加(B站看视频总结)
    正则表达式基础1
    C语言程序的错误和警告
    C语言运算符优先级和结合性一览表
    逻辑运算符及其优先级,C语言逻辑运算符及其优先级详解
    C 语言实例
    电脑不显示桌面怎么办?
    135编辑器安卓客户端
    C语言实例-大小写字母间的转换
    C 语言实例
  • 原文地址:https://www.cnblogs.com/fsckzy/p/12754893.html
Copyright © 2011-2022 走看看