zoukankan      html  css  js  c++  java
  • RabbitMQ——异宿主docker搭建RabbitMQ镜像集群

    网上扒的一张图。 我这里没有keepalived这一层。

    成功的命令 用--net host模式 与宿主共享网段  --hostname 分别用 rmq1 rmq2 rmq3

    在三台机器 192.168.1.20  192.168.1.21  192.168.1.22

    以rmq1为磁盘节点,rmq2、rmq3为内存节点,加入集群

    最后设置镜像策略。完成。

    docker run -d --name rmqnode 
                  --net host 
                  --hostname rmq3 
                  --add-host="rmq1":192.168.1.20 
                  --add-host="rmq2":192.168.1.21 
                  --add-host="rmq3":192.168.1.22 
                  -e RABBITMQ_DEFAULT_USER=admin 
                  -e RABBITMQ_DEFAULT_PASS=Fire001  
                  -e RABBITMQ_ERLANG_COOKIE='blaze_rmq_cookie' 
                  -e RABBITMQ_VM_MEMORY_HIGH_WATERMARK=0.8 
                  -m 500M --memory-swap 500M 
                  rabbitmq:3.8.16-management

    以下为相关辅助命令

     docker exec -it rmqnode rabbitmqctl stop_app
     docker exec -it rmqnode rabbitmqctl reset
     docker exec -it rmqnode rabbitmqctl start_app
    
    rmq2 rmq3 以--ram形式加入集群 在stop_app reset之后执行 docker exec
    -it rmqnode rabbitmqctl join_cluster --ram rabbit@rmq1
    查看、设置镜像策略 docker exec
    -it rmqnode rabbitmqctl list_policies docker exec -it rmqnode rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' docker exec -it rmqnode cat /etc/hosts docker exec -it rmqnode cat ~/.erlang.cookie docker logs rmqnode docker stop rmqnode docker rm rmqnode docker ps -a

    效果

    查看 --net host 模式启动时, rabbit的端口占用情况

    netstat -tpln | grep bean

    netstat -tpln | grep beam
    tcp        0      0 0.0.0.0:25672       0.0.0.0:*        LISTEN      28092/beam.smp      
    tcp        0      0 0.0.0.0:15692       0.0.0.0:*        LISTEN      28092/beam.smp      
    tcp        0      0 0.0.0.0:15672       0.0.0.0:*        LISTEN      28092/beam.smp      
    tcp6       0      0 :::5672             :::*             LISTEN      28092/beam.smp

     netstat -tpln | grep 4369

    netstat -tpln | grep 4369
    tcp        0      0 0.0.0.0:4369        0.0.0.0:*        LISTEN      70749/epmd          
    tcp6       0      0 :::4369             :::*             LISTEN      70749/epmd   

    镜像集群已成,下面部署HAProxy

    yum list | grep haproxy

    yum install -y haproxy.x86_64

    haproxy -f  /etc/haproxy/haproxy.cfg

    service haproxy start

    service haproxy status

    检查配置文件

    haproxy -f /etc/haproxy/haproxy.cfg -p /root/data/soft/haproxy/haproxy.pid -c

    haproxy -f /etc/haproxy/haproxy.cfg -p /root/data/soft/haproxy/haproxy.pid -c
    Configuration file is valid

    在/etc/haproxy/haproxy.cfg中加入以下配置,HAProxy监控、rabbitmq服务负载均衡、rabbitmq控制台负载均衡。

    #haproxy monitor
    listen monitor
            bind 0.0.0.0:7100
            mode http
            option httplog
            stats enable
            maxconn 10
            stats uri /stats
            stats refresh 5s
            stats   realm haproxy  #认证时的realm,作为提示用的
            stats   auth admin:Fire001  #认证用户名和密码
            stats   hide-version  #隐藏HAProxy版本号
            stats   admin if TRUE  #管理界面只有认证通过后才能在ui上进行管理
    
    
    
    #rabbitmq cluster
    listen rabbitmq_cluster
            bind 0.0.0.0:7107
            #配置TCP模式
            mode tcp
            #简单的轮询
            balance roundrobin
            #RabbitMQ集群节点配置
            server rabbitmq_node1 192.168.1.20:5672 check inter 5000 rise 2 fall 3 weight 1
            server rabbitmq_node2 192.168.1.21:5672 check inter 5000 rise 2 fall 3 weight 1
            server rabbitmq_node3 192.168.1.22:5672 check inter 5000 rise 2 fall 3 weight 1
    
    #rabbitmq console
    listen rabbitm1_console
       bind 0.0.0.0:17107
       mode http
       balance roundrobin
       server rabbitmq_console1 192.168.1.20:15672
       server rabbitmq_console2 192.168.1.21:15672
       server rabbitmq_console3 192.168.1.22:15672

    service haproxy start && service haproxy status

    总是启不来的问题,解决办法,

    删除

    /run/haproxy.pid后,再执行  service haproxy start 

    运行时内存修改,0.8 * 500M = 400M

    docker exec -it rmqnode rabbitmqctl set_vm_memory_high_watermark 0.8

    运行时修改最低磁盘警戒线

    docker exec -it rmqnode rabbitmqctl set_disk_free_limit 1G

    docker exec -it rmqnode rabbitmqctl set_disk_free_limit 1G
    Setting disk free limit on rabbit@rmq1 to 1G bytes ...

     

     

    端口映射方式部署

    docker run -d --name rmqnode 
                  -p 7107:5672 
                  -p 17107:15672 
                  -e RABBITMQ_DEFAULT_USER=admin 
                  -e RABBITMQ_DEFAULT_PASS=admin  
                  -e RABBITMQ_ERLANG_COOKIE='blaze_rmq_cookie' 
                  -e RABBITMQ_VM_MEMORY_HIGH_WATERMARK=0.8 
                  -m 500M --memory-swap 500M 
                  rabbitmq:3.8.16-management

    设置参数

    tcp_listeners 设置rabbitmq的监听端口,默认为 5672

    disk_free_limit 磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative, 1.0}, 即与内存相关联1:1,也可定制为多少byte.

    vm_memeory_high_watemark, 设置内存低水位线,若低于该水位线,则开启流控机制,默认值为0.4,即内存总量的40%

    hipe_compile将部分rabbitmq代码用High Performance Erlang compiler编译,可提升性能,该参数是实验性,若出现erlang vm segfaults,应关掉

    force_fine_statistics,该参数属于rabbitmq_mamagement,若为true这进行精细化统计,但会影响性能

    集群节点模式:Disk为磁盘模式存储/Ram为内存模式存储

    //修改端口
    RABBITMQ_NODE_PORT=5672

  • 相关阅读:
    093孤荷凌寒自学第179天区块链093天Dapp048
    092孤荷凌寒自学第178天区块链092Dapp047
    091孤荷凌寒自学第177天区块链091天Dapp046
    090孤荷凌寒自学第180天区块链090天Dapp045
    089孤荷凌寒自学第175天区块链089天Dapp044
    088孤荷凌寒自学第174天区块链088天Dapp043
    087孤荷凌寒自学第173天区块链087天Dapp042
    孤荷凌寒自学第172天区块链086天Dapp041
    孤荷凌寒自学第171天区块链085天Dapp040
    iOS开发——高级篇——内存分析,Instruments
  • 原文地址:https://www.cnblogs.com/xingchong/p/14805450.html
Copyright © 2011-2022 走看看