使用HAproxy为阿里中间件做负载均衡。

背景:

   最近为一传统行业客户部署阿里中间件的过程中,需要使用负载均衡技术,最初计划使用LVS的DR模式,但考虑到使用LVS DR+keepalived模式 配置较为复杂,服务器数量较多,需要在后端服务器上做VIP绑定和ARP抑制操作,后期维护困难,还有windows系统,而且用户对Linux系统不熟悉。后来准备使用LVS的NAT模式,因为NAT模式不需要对后端服务器做修改,可是NAT模式对网络结构有要求,我们不能改变用户的网络结构。于是使用了HAproxy的反向代理功能。与keepalived做高可用使用了负载的功能。

1 安装HAproxy

yum install haproxy –y 

rpm -ql haproxy

/etc/haproxy

/etc/haproxy/haproxy.cfg

/etc/logrotate.d/haproxy

/etc/rc.d/init.d/haproxy

/usr/bin/halog

/usr/sbin/haproxy

2  HAproxy主要配置

#---------------------------------------------------------------------

# main frontend which proxys to the backends

#---------------------------------------------------------------------

frontend address

    bind 10.6.68.200:8080

    mode tcp

    default_backend   address-rs

frontend diamond 

    bind 10.6.68.201:8080

    mode tcp

    default_backend   diamond-rs

frontend dauth-80

    bind 10.6.68.202:80

    mode tcp

    default_backend   dauth-80-rs

frontend dauth-443

    bind 10.6.68.202:443

    mode tcp

    default_backend   dauth-443-rs

    ………………

    ………………

#---------------------------------------------------------------------

# static backend for serving up images, stylesheets and such

#---------------------------------------------------------------------

backend address-rs

    balance     roundrobin

    server      server 10.6.68.101:8080 check

    server      server 10.6.68.102:8080 check

backend diamond-rs

    balance     roundrobin

    server      server 10.6.68.126:8080 check

    server      server 10.6.68.127:8080 check

    server      server 10.6.68.128:8080 check

backend dauth-80-rs

    balance     roundrobin

    server      server 10.6.68.124:80 check

    server      server 10.6.68.125:80 check

backend dauth-443-rs

    balance     roundrobin

    server      server 10.6.68.124:443 check

    server      server 10.6.68.125:443 check

    ……………………

    ……………………

3 keepalived 配置

[root@haproxy01 keepalived]# cat keepalived.conf 

! Configuration File for keepalived

global_defs {

   notification_email {

   }

   router_id HAproxy01

}

vrrp_script chk_http_port {

                script "/etc/keepalived/check_haproxy.sh"

                interval 2

                weight 2

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass ……

    }

track_script { 

        chk_http_port 

        }

    virtual_ipaddress {

        10.6.68.200

        10.6.68.201

        10.6.68.202

        …………

        …………

    }

}

[root@haproxy 02 keepalived]# cat keepalived.conf 

! Configuration File for keepalived

global_defs {

   }

   router_id HAproxy02

}

vrrp_script chk_http_port {

                script "/etc/keepalived/check_haproxy.sh"

                interval 2

                weight 2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass ……

    }

 track_script { 

        chk_http_port 

    }

    virtual_ipaddress {

        10.6.68.200/24

        10.6.68.201/24

        10.6.68.202/24

        ………

        ………

   

    }

}

4 haproxy的检测脚本--判断haproxy是否是存活的。

vim  check_haproxy.sh 

#!/bin/bash

if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then

     /etc/init.d/haproxy  restart &>/dev/null

fi

sleep 2

时间: 2024-10-21 14:20:47

使用HAproxy为阿里中间件做负载均衡。的相关文章

昨夜难忘?今晚20点,容器、中间件、负载均衡等实战交流继续!

良辰美景与您只差一个点击==>大流量高并发互联网应用实践在线峰会 昨晚(20日)20点整,大流量高并发互联网应用实践在线峰会如约召开,阿里林伟.朱震杰.顾风胜.罗龙九.陈哲等数位专家不仅分享了各自领域的大流量与高并发实践经验,更就用户疑问与来宾完成了深入的探讨,真正的做到了分享交流具精彩! 觉得小编夸大其词?现场都还没撤呢!不妨看向阿里云数据库资深专家林伟与一位来宾小可爱的交流: 来宾:专家你好,正在听您的演讲.特别想了解下,现在有Hadoop.Spark.Storm等热门的大数据框架,你们为什

haproxy+keepalived实现高可用负载均衡(理论篇)_Linux

HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,并且能通过允许.拒绝.交换.增加.修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则. 我现在用HAProxy主要在于它有以下优点,这里我

用nginx+passenger来做负载均衡

由于3.x系列已不再支持mongrel,所以就采用nginx+passenger来做负载均衡:之前有发过nginx+mongrel,puppet version是2.7系列的,所以还是可以用的: 环境说明: 操作系统:centos 5.8 64位 puppet版本:3.1系列 1,升级ruby至1.8.7,安装rubygems # rpm -Uvh http://rbel.frameos.org/rbel5 # yum install -y ruby rubygems ruby-devel.x8

同一台服务器安装两个tomcat做负载均衡请求响应不一致

问题描述 同一台服务器安装两个tomcat做负载均衡请求响应不一致 同一台服务器安装两个tomcat,做tomcat的负载均衡请求和响应的端口不一样,导致登陆时报404错误. 比如,两个tomcat 8081.8082端口,登陆时请求的是8081端口,验证用户信息,但是响应的是8082端口号,导致404错误. 解决方案 这需要做一些负载均衡的规则,保证同一个session是在一个服务器上处理. 解决方案二: 需要做session共享,tomcat最常见的就是使用memcache存储session

Apache做负载均衡配置教程(windows/linux)

windows下Apache做负载均衡 第一次看到这个标题时我也很惊讶,Apache居然还能做负载均衡?真是太强大了.经过一番调查后发现的确可以,而且功能一点都不差.这都归功于 mod_proxy 这个模块.不愧是强大的Apache啊. 废话少说,下面就来解释一下负载均衡的设置方法. 一般来说,负载均衡就是将客户端的请求分流给后端的各个真实服务器,达到负载均衡的目的.还有一种方式是用两台服务器,一台作为主服务器(Master),另一台作为热备份(Hot Standby),请求全部分给主服务器,在

ipvs nat-用ipvs做负载均衡(nat)方法,测试失败

问题描述 用ipvs做负载均衡(nat)方法,测试失败 在windows下安装了3台虚拟机,防火墙全部关闭 windows的网络配置 ip-192.183.3.228 gateway-192.183.3.1 server 1 eth0 ip-192.168.179.137 gateway-192.168.179.2 1.安装ipvs 2.配置转发 echo 1 > /proc/sys/net/ipv4/ip_forward 3.配置ipvs ipvsadm -C ipvsadm -A -t 19

多台Web服务器做负载均衡解决方案

环境说明: 开发平台是DO.NET B/S .NET Framework 1.1 正式WEB服务器和测试机,均为win2003 原有一个主网站,在六台WEB服务器做负载均衡.运行比较稳定. 现新开发一个子站,将布署在另三台WEB服务器上做负载均衡.这个负载均衡设置类似主网站的设置. 解决步骤: 1)子站在测试机测试通过,运行正常.准备布署到正式环境下(三台WEB服务器) 2)将子站程序拷贝到那三台WEB服务器上,配置好子站相关配置,开放站点与负载均衡开始测试. 3)测试时,页面显示正常,但在触发

寻找做负载均衡和集群的高人

问题描述 需要在J2EE环境下配置3台服务器ApacheTomcat做负载均衡和集群.需要熟悉负载均衡的老手,操作系统可以是windows或linux.需要到现场机房进行实施.可以兼职. 解决方案 解决方案二:发帖都不会发.就配个环境,你还找专职?既然兼职,也不说酬劳问题,至少写个面议吧既然要去现场也不说在什么地方解决方案三:另外,你们的应用.硬件环境是什么?不同的应用,方案可能会不太一样解决方案四:有点冲啊-

Keepalived+HAProxy实现MySQL高可用负载均衡的配置_Mysql

 Keepalived 由于在生产环境使用了mysqlcluster,需要实现高可用负载均衡,这里提供了keepalived+haproxy来实现.       keepalived主要功能是实现真实机器的故障隔离及负载均衡器间的失败切换.可在第3,4,5层交换.它通过VRRPv2(Virtual Router Redundancy Protocol) stack实现的.       Layer3:Keepalived会定期向服务器群中的服务器.发送一个ICMP的数据包(既我们平时用的Ping程