• RabbitMq+Haproxy负载均衡


      HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
      HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。HAProxy实现了一种事件驱动, 单一进程模型并且提供高可用性、负载均衡以及基于TCP和HTTP应用的代理。根据官方数据,其最高极限支持10G的并发。HAProxy支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载。
    HAProxy的特点是:
      1、HAProxy是支持虚拟主机的,,并能支持上万级别的连接;
      2、能够补充Nginx的一些缺点比如Session的保持,cookie的引导等工作;
      3、支持url检测后端的服务器出问题的检测会有很好的帮助;
      4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
      5、HAProxy可以对mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS
      6、能够提供4层,7层代理。HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量,7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则;
      7、HAProxy负载均衡算法具体有如下几种:
         ①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
         ②static-rr,表示根据权重;
         ③leastconn,表示最少连接者先处理;
         ④source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法;
         ⑤ri,表示根据请求的URI;
         ⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;
         ⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
         ⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
    实现Rabbitmq+haproxy负载均衡 需如下几步:
    一、安装Rabbitmq服务
    二、搭建Rabbitmq集群服务
    三、安装软件负载均衡器
      windows下将haproxy文件复制在指定目录下
      
    安装haproxy;
    haproxy.exe -f haproxy.cfg -d  其中, -d会在窗口运行, -D则是后台程序,只能在任务管理器中看到
    pidfile haproxy.pid   #相对路径必须有此文件,否则启动失败 
    重装haproxy:
    haproxy -f  D:RabbitMQhaproxy-1.7.8haproxy.cfg
    重启haproxy
    haproxy restart

    四、配置负载均衡文件 目录haproxy.cfg

    global
    log D://RabbitMQ//haproxy-1.7.8//log local0 info
    log D://RabbitMQ//haproxy-1.7.8//log local1 notice
    #chroot /var/lib/haproxy 改变当前工作目录
    #stats socket /run/haproxy/admin.sock mode 660 level admin # 创建监控所用的套接字
    目录
    #pidfile /var/run/haproxy.pid # haproxy的pid存放路径,启动进程的用户必须有权限访问
    此文件
    maxconn 4000 # 最大连接数,默认4000
    #user haproxy 默认用户
    #group haproxy 默认用户组
    daemon # 创建1个进程进入deamon模式运行。此参数要求将运行模
    式设置为daemon
    defaults
    log global
    mode tcp # 默认的模式mode { tcp|http|health },tcp是4层,http是7层
    ,health只会返回OK
    option tcplog # 采用Tcp日志格式
    option dontlognull # 启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均
    衡器
    # 或者监控系统为了探测该 服务是否存活可用时,需要定期的连接或者
    获取某
    # 一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称
    为空连接;
    # 官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不
    要使用
    # 该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来
    retries 3 # 3次连接失败就认为服务不可用,也可以通过后面设置
    option abortonclose # 每次请求完毕后主动关闭通道
    maxconn 4000
    timeout connect 5000 # 连接超时时间(毫秒)
    timeout client 3000 # 客户端连接超时时间(毫秒)
    timeout server 3000 # 服务器端连接超时时间(毫秒)
    balance roundrobin #负载均衡算法(#banlance roundrobin 轮询,balance source 保存
    session值,支持static-rr,leastconn,first,uri等参数)
    listen monitor:8000 #haproxy监控页面配置
    bind 192.168.1.62:8000
    mode http
    option httplog
    stats refresh 5s #统计页面自动刷新时间
    stats uri /stats #统计页面url
    stats realm Haproxy #统计页面密码框上提示文本
    stats auth admin:admin #统计页面用户名和密码设置
    listen rabbitmq_admin
    bind 192.168.1.62:15672
    server node1 192.168.1.62:15672
    server node2 192.168.1.79:15672
    listen rabbitmq_cluster
    bind 192.168.1.62:5672
    mode tcp
    option tcplog
    balance roundrobin  负载均衡算法
    timeout client 3h
    timeout server 3h
    server node1 192.168.1.62:5672 check inter 2000 rise 2 fall 3 #check inter
    2000 是检测心跳频率,rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用
    server node2 192.168.1.79:5672 check inter 2000 rise 2 fall 3

    实现配置如下:

    五、重启raproxy服务
    haproxy restart

  • 相关阅读:
    centos系统/dev/mapper/centosroot目录被占满的解决方式
    SpringBoot上如何实现文件上传 FILE
    java list 和数组直接相互转换
    vue axios.defaults.withCredentials = true
    java中局部变量需要初始化吗
    用Java实现MD5加盐
    java map 合并两个map map集合的putall_Java Map.putAll()方法:追加另一个Map对象到当前Map集合
    JSON字符串转HashMap Gson
    OO_Lab2总结博客
    采购签核 RFC bapi_po_release 淡淡
  • 原文地址:https://www.cnblogs.com/tx720/p/9943753.html
Copyright © 2020-2023  润新知