zoukankan      html  css  js  c++  java
  • rabbitmq+haproxy+keepalived实现高可用集群搭建

      项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说)。

    搭建环境

      CentOS7 64位

      RabbitMQ 3.6.2

      Keepalived 1.2.21

      主机:192.168.0.1   192.168.0.2   192.168.0.3   三台节点上安装rabbitmq服务

      Haproxy 安装在 192.168.1.1 和 192.168.1.2 上,用于对外提供 RabbitMQ 均衡

      Keepalived实现haproxy的主备,高可用(避免单点问题),192.168.1.1(主)192.168.1.2(备)

      全局图如下:

    RabbitMQ集群搭建

    单机上安装

      分别在192.168.0.1   192.168.0.2   192.168.0.3 节点上安装rabbitmq server。

    • 1.Install Erlang

        # yum install erlang
        测试erlang是否安装成功,输入:
        # erl //进入erl窗口则表示安装成功

    • 2.Install RabbitMQ Server

        # wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2-1.noarch.rpm
        # yum install rabbitmq-server-3.6.2-1.noarch.rpm

    • 3.启动

        # /etc/init.d/rabbitmq-server start

    • 4.开机启动

        # chkconfig rabbitmq-server on
        测试是否安装成功:
        # rabbitmqctl status //查看rabbitmq的运行状态信息

    • 5.启用插件rabbitmq management

        # rabbitmq-plugins enable rabbitmq_management
        # /etc/init.d/rabbitmq-server restart

        输入http://ip:15672可以登录管理界面,默认账户guest/guest只能使用http://localhost:15672登录,要想远程登录,需要添加一个新的用户:
        # rabbitmqctl add_user admin 1234
        #用户设置为administrator才能远程访问
        $ sudo rabbitmqctl set_user_tags admin administrator
        $ sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" //该命令使用户admin具有‘/’这个virtual host中所有资源的配置、写、读权限以便管理其中的资源 
        查看所有用户#rabbitmqctl list_users

    镜像集群搭建

      将192.168.0.1上的/var/lib/rabbitmq/.erlang.cookie中的内容复制到158和159上的/var/lib/rabbitmq/.erlang.cookie文件中, 即三台服务器必须具有相同的cookie,如果不相同的话,无法搭建集群

      192.168.0.2和192.168.0.3节点上分别执行命令,加入到集群
        # rabbitmqctl stop_app
        # rabbitmqctl join_cluster --ram rabbit@h-ncdrdcs7
        # rabbitmqctl start_app
        其中--ram代表是内存节点,如果希望是磁盘节点则不用加--ram,在rabbitmq集群中,至少需要一个磁盘节点

        查看集群的状态
        # rabbitmqctl cluster_status

      设置成镜像队列
      # rabbitmqctl set_policy ha-all "^ha." '{"ha-mode":"all"}' //意思表示以ha.开头的queue都会复制到各个节点 ["^"匹配所有]

    Haproxy负载代理

      利用haproxy做负载均衡
      在192.168.1.1和192.168.1.2节点上
      安装haproxy
      # yum install haproxy

      vi /etc/haproxy/haproxy.cfg 之后添加:

    listen rabbitmq_local_cluster 0.0.0.0:5672 
      #配置TCP模式 
      mode tcp
      option tcplog 
      #简单的轮询 
      balance roundrobin 
      #rabbitmq集群节点配置 
      server rabbit1 192.168.0.1:5672 check inter 5000 rise 2 fall 2 
      server rabbit2 192.168.0.2:5672 check inter 5000 rise 2 fall 2 
      server rabbit3 192.168.0.3:5672 check inter 5000 rise 2 fall 2
    
    #配置haproxy web监控,查看统计信息 
    listen private_monitoring :8100 
      mode http 
      option httplog 
      stats enable 
      #设置haproxy监控地址为http://localhost:8100/stats 
      stats uri /stats 
      stats refresh 30s 
      #添加用户名密码认证
      stats auth admin:1234

      #启动
      # haproxy -f haproxy.cfg
      #重启动
      # service haproxy restart

    Keepalived安装

      利用keepalived做主备,避免单点问题,实现高可用

      在192.168.1.1和192.168.1.2节点上安装最新版keepalived

      192.168.1.1(主)修改keepalived.conf为:Primary配置:

    vrrp_script chk_haproxy {
        script "pidof haproxy"
        interval 2
    }
    vrrp_instance VI_1 {
        interface ens192
        state MASTER
        priority 200
        virtual_router_id 10
        unicast_src_ip 192.168.1.1
        unicast_peer {
            192.168.1.2
        }
        authentication {
            auth_type PASS
            auth_pass password
        }
        virtual_ipaddress {
            192.168.1.10 //虚拟ip,对外提供服务
        }
        track_script {
            chk_haproxy
        }
        notify_master /loadbtify_master.sh
    }

       192.168.1.2(备)修改keepalived.conf为:Secondary配置:

    vrrp_script chk_haproxy {
        script "pidof haproxy"
        interval 2
    }
    vrrp_instance VI_1 {
        interface ens192
        state BACKUP
        priority 100
        virtual_router_id 10
        unicast_src_ip 192.168.1.2
        unicast_peer {
            192.168.1.1
        }
        authentication {
            auth_type PASS
            auth_pass password
        }
        virtual_ipaddress {
            192.168.1.10
        }
        track_script {
            chk_haproxy
        }
        notify_master /loadbtify_master.sh
    }

       启动keepalived即可,192.168.1.10是对外提供的统一地址。

      通过192.168.1.10:5672就可以访问rabbitmq服务。

    参考资料

    https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04#userconsent#

    http://www.rabbitmq.com/install-rpm.html   

    http://www.keepalived.org/download.html   //keepalived下载地址

  • 相关阅读:
    random 模块
    re 模块
    正则表达式
    15. 3Sum
    253. Meeting Rooms II
    91. Decode Ways
    17. Letter Combinations of a Phone Number
    314. Binary Tree Vertical Order Traversal
    311. Sparse Matrix Multiplication
    311. Sparse Matrix Multiplication
  • 原文地址:https://www.cnblogs.com/lylife/p/5584019.html
Copyright © 2011-2022 走看看