• RabbitMQ集群 Docker一键部署


    以下内容来自网络转载

    步骤1. 安装docker

    以centos7为例,https://docs.docker.com/engine/installation/linux/centos/

    步骤2. 创建节点互联基础

    #创建Docker私有网络
    docker network create rabbitmqnet
    

    步骤3. 创建节点

    #使用Docker Networking,分别创建三个节点
    docker run -d 
    --name=rabbitmq1 
    -p 5672:5672 
    -p 15672:15672 
    -e RABBITMQ_NODENAME=rabbitmq1 
    -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ' 
    -h rabbitmq1 
    --net=rabbitmqnet 
    rabbitmq:3.5-management
    
    docker run -d  
    --name=rabbitmq2  
    -p 5673:5672  
    -p 15673:15672  
    -e RABBITMQ_NODENAME=rabbitmq2  
    -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ'  
    -h rabbitmq2  
    --net=rabbitmqnet  
    rabbitmq:3.5-management
    docker run -d  
    --name=rabbitmq3  
    -p 5674:5672  
    -p 15674:15672  
    -e RABBITMQ_NODENAME=rabbitmq3  
    -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ'  
    -h rabbitmq3  
    --net=rabbitmqnet  
    rabbitmq:3.5-management

    步骤4. 加入集群

    #磁盘节点
    docker exec rabbitmq2 bash -c 
    "rabbitmqctl stop_app && 
    rabbitmqctl reset && 
    rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && 
    rabbitmqctl start_app"
    
    #内存节点
    docker exec rabbitmq3 bash -c 
    "rabbitmqctl stop_app && 
    rabbitmqctl reset && 
    rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1 && 
    rabbitmqctl start_app"
    

    步骤5. 设置镜像队列

    设置所有队列为镜像队列,除了amq开头的交换器绑定队列。 生成环境不建议这种处理, 应该设置部分队列为镜像队列
    docker exec rabbitmq1 rabbitmqctl set_policy HA '^(?!amq.).*' '{"ha-mode": "all"}'
    

    步骤6. 退出集群

    docker exec rabbitmq3 bash -c 
    "rabbitmqctl stop_app && 
    rabbitmqctl reset && 
    rabbitmqctl start_app"
    

    集群重启

    集群节点的关闭顺序与节点的启动顺序相反,即最后关闭的最先启动,并且最后关闭的节点必须是磁盘节点。请务必遵守按此步骤处理,否则可能造成集群无法启动,造成元数据,消息丢失的情况。
    Docker容器不同于虚拟机或主机,容器内部署的应用无法启动,基本上这个容器就废了。Docker现在不允许做一些已创建容器的启动参数调整。

    集群部署、运行准则

    1. 保证集群中至少有一个在线,那怕这个节点是内存节点.
    2. 如果关闭整个集群节点,必须按照顺序逐个关闭,并且最后一个关闭节点务必为磁盘节点。在启动时倒着顺序启动。(如关闭顺序r1,r2,r3.那么启动顺序为r3,r2,r1).
    3. 集群中如果使用了虚拟技术(Docker,VM),虚拟节点不能全在同一台物理机中。(你不能保证物理机不会宕机,如果宕机基本上集群是启动不了的.你不知道关闭顺序,你就无法确定启动顺序,并且宕机关闭时间可能RabbitMQ节点都没有反应过来,无法做一些集群状态处理。) 

    参考资料

    1. RabbitMQ Doc - Clustering Guide
    2. RabbitMQ Doc - Highly Available Queues
    3. RabbitMQ 实战 - 第五章 集群并处理失败


    持续更新地址:http://www.thinkingnote.com/archives/18

  • 相关阅读:
    java进阶书籍推荐(不包括基础)
    js/jquery如何获取获取父窗口的元素
    jQuery检查某个元素在页面上是否存在
    H5利用pattern属性和oninvalid属性验证表单
    zTree的使用教程
    input属性disabled和readonly的区别
    CentOS 7 安装部署 cassandra作为kairosdb的数据存储
    Jenkins部署
    CentOS 7常用命令
    虚拟机 克隆:完整克隆 模式
  • 原文地址:https://www.cnblogs.com/luo-mao/p/5909889.html
Copyright © 2020-2023  润新知