zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/luo-mao/p/5909889.html
Copyright © 2011-2022 走看看