• 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"}'
    
  • 相关阅读:
    Oracle误删除数据和表的恢复办法包括truncate
    SQL中简单函数介绍
    SQL中的null
    oracle数据库实例后台进程
    常用查询视图
    AIX 常用命令积累(未完待续)
    查询当前用户下的表/查询某一个用户的表
    查询统计运行和采控库里所有用户下的记录数大于5000万条的表
    使用orace数据库自带的sqldeveloper
    PL/SQL Developer
  • 原文地址:https://www.cnblogs.com/fsckzy/p/12754893.html
Copyright © 2020-2023  润新知