zoukankan      html  css  js  c++  java
  • rabbitmq集群搭建

    rabbimtq简介

    rabbitmq是用erlang语言开发的,erlang语言最初用于交换机领域,这样就使得rabbitmq和broker(server)之间进行数据交互的性能是非常优秀的,erlang有着和原生socket一样的延迟,集群非常方便,因为erlang天生就是分布式语言,但其本身不支持负载均衡。

    rabbitmq模式

    rabbitmq模式大概分为以下三种:

    1. 单一模式
    2. 普通模式(默认的集群模式)
    3. 镜像模式(把需要的队列做成镜像队列,存在于多个节点。属于rabbitmq的HA方案,在对业务的可靠性要求较高的场合中比较适用)

    rabbitmq特点

    rabbitmq的集群节点包括内存节点和磁盘节点。rabbitmq支持消息的持久化也就是数据卸载磁盘上,最合适的方案就是既有磁盘节点,又有内存节点。

    rabbitmq集群安装

    环境规划

    • 10.200.200.10 rabbitmq01 --disk
    • 10.200.200.20 rabbitmq02 --ram
    • 10.200.200.30 rabibtmq03 --ram

    1、安装依赖包

    yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz socat
    

    2、下载erlang

    wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
    

    3、下载rabbitmq

    wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
    

    4、安装erlang和rabbitmq

    rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
    rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
    

    5、修改hosts,保证三台服务器直接都可以相互ping通

    vim /etc/hosts
      10.200.200.10 rabbitmq01
      10.200.200.20 rabbitmq02
      10.200.200.30 rabibtmq03
    

    6、启动rabbitmq服务

    systemcetl start rabbitmq-server
    

    7、选择其中一台erlang.cookie为准,拷贝到其他节点,这里假设为第一台

    cd /var/lib/rabbitmq/
    scp .erlang.cookie root@rabbit02:/var/lib/rabbitmq/
    scp .erlang.cookie root@rabbit03:/var/lib/rabbitmq/
    

    8、拷贝完如果直接重启的话会导致服务起不来,因为文件的权限不对

    cd /var/lib/rabbitmq/
    chown -R rabbitmq. .erlang.cookie
    chmod 400 .erlang.cookie
    

    9、检查插件

    /usr/lib/rabbitmq/bin/rabbitmq-plugins list //查看插件安装情况
    /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management //启用rabbitmq_management服务
    systemctl restrart rabbitmq-server
    

    10、将rabbitmq02/rabbitmq03加入到集群节点

    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbitmq01
    rabbitmqctl start_app
    

    11、查看集群状态

    rabbitmqctl cluster_status
    

    12、添加全局镜像策略

    admin->Policies->Add/update a policy
    
    Name:ha_all
    Pattern:^
    Defiinition: ha-mode=all
    
    Add policy
    
    或者使用命令行工具
    ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' 
    

    在创建队列时,Arguments中设置ha-mode = all,创建完成之后,在Policy中要看到刚刚创建的queue,会显示+2(表示3个节点)。

    当有节点故障时,服务恢复,显示粉色的+,需要在该节点手动执行 rabbitctl sync_quere队列名称同步,就会恢复。

  • 相关阅读:
    Mybatis学习总结(五)——动态sql
    1006 换个格式输出整数(15分)
    1005 继续(3n+1)猜想(25分) *
    1004 成绩排名(20分)
    1003 我要通过!(20分)*
    1002 写出这个数(20分) *
    1001 害死人不偿命的(3n+1)猜想(15分)
    CCSP 201312-2 ISBN号码
    CCSP201312-1出现次数最多的数
    c++动态定义数组
  • 原文地址:https://www.cnblogs.com/hzxyf/p/13857432.html
Copyright © 2011-2022 走看看