Haproxy配置http模式负载均衡

环境准备:

主机名 角色 IP地址
mylinux1.contoso.com haproxy服务器
eth0:192.168.100.121

eth1:172.16.100.121

mylinux3.contoso.com web服务器1 eth0:192.168.100.181
mylinux4.contoso.com web服务器2 eth0:192.168.100.182

一、准备工作

在mylinux3和mylinux4上安装http服务,并启动。

yum -y install httpd
/etc/init.d/httpd start

使用浏览器访问,保证服务正常。

二、修改haproxy配置文件

[[email protected] conf]# cp haproxy.cfg haproxy.cfg.bak
[[email protected] conf]# vi haproxy.cfg
[[email protected] conf]# cat haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
        #log 127.0.0.1  local0
        log 127.0.0.1:514  local0  warning
        pidfile /usr/local/haproxy/var/run/haproxy.pid
        daemon
        maxconn 4096
        chroot /usr/local/haproxy/var/chroot
        user haproxy
        group haproxy
        nbproc 1
        
defaults
        log     global
        mode    http    #默认的模式{tcp|http|health},tcp是4层,http是7层,health只会返回OK  
        retries 3
        option  httplog   #日志类别,采用httplog
        option  httpclose     #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现  
        option  dontlognull   #不记录健康检查日志信息
        option  forwardfor    #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip  
        option  redispatch    #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
        maxconn 2000
        balance roundrobin    #设置默认负载均衡方式,轮询方式
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        
listen  haproxy_stats
        bind   *:8000    #绑定到本地所有IP地址的8000端口上
        mode   http      #http的7层模式
        option httplog   #采用http日志格式
        maxconn 20       #默认的最大连接数
        stats enable     #启用状态监控
        stats refresh 30s            #监控页面自动刷新时间
        stats uri /haproxy_status    #监控页面url
        stats auth admin:123456      #设置监控页面的用户名和密码,可以设置多个用户名
        stats hide-version           #隐藏监控页面上的Haproxy版本信息
        
listen  websites
        bind  192.168.100.121:80     #绑定到192.168.100.121上的80端口
        timeout  server  15s
        timeout  connect 30s
        server  mylinux3  192.168.100.181:80 check port 80 inter 2000 fall 3 #检测健康端口80,检测心跳频率是2000ms,失败3次则认为服务器不可用
        server  mylinux4  192.168.100.182:80 check port 80 inter 2000 fall 3

三、启动haproxy并测试

1、启动haproxy

[[email protected] conf]# /usr/local/haproxy/sbin/haproxy -f haproxy.cfg -c
Configuration file is valid
[[email protected] conf]# /usr/local/haproxy/sbin/haproxy -f haproxy.cfg -D
[[email protected] conf]# ps -ef|grep haproxy
haproxy    2575      1  0 23:24 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
root       2584   1015  0 23:45 pts/1    00:00:00 grep haproxy

2、测试haproxy监控页面

3、web访问测试

4、后端节点负载测试

首先使用curl测试一下获取网页内容:

[[email protected] conf]# curl -s http://192.168.100.121

<html>

<head>

<title>Web1</title>

</head>

<body>

<p align="center">

<span style="color:blue;font-size:24px">Web Site 1</span>

</p>

<hr />

<h1 align="center">mylinux3.contoso.com</h1>

</body>

</html>

[[email protected] conf]# curl -s http://192.168.100.121

<html>

<head>

<title>Web2</title>

</head>

<body>

<p align="center">

<span style="color:blue;font-size:24px">Web Site 2</span>

</p>

<hr />

<h1 align="center">mylinux4.contoso.com</h1>

</body>

</html>

然后使用for循环测试100次,并将100次的结果全部追加到一个文件中去,最后检查每个节点出现的次数:

[[email protected] conf]# for i in {1..100};do curl http://192.168.100.121/ >>/tmp/webtest.txt;done
[[email protected] conf]# grep mylinux3.contoso.com /tmp/webtest.txt |wc -l
50
[[email protected] conf]# grep mylinux4.contoso.com /tmp/webtest.txt |wc -l
50

结果是mylinux3和mylinux4都访问了50次,证明轮询方式下负载是一样的。

四、haproxy启动停止脚本

#!/bin/bash
#
BASE=/usr/local/haproxy
PROG=$BASE/sbin/haproxy
PIDFILE=$BASE/var/run/haproxy.pid
CONFFILE=$BASE/conf/haproxy.cfg
RUNNING_STATUS=`ps -ef|grep "haproxy -f"|egrep -v grep|wc -l`
start(){ 
    RUNNING_STATUS=`ps -ef|grep "haproxy -f"|egrep -v grep|wc -l`
    if [ $RUNNING_STATUS -ge 1 ];then
        echo "Haproxy is already running! Exit now."
        exit 1
    else
        $PROG -f $CONFFILE
           [ $? -eq 0 ] && echo "Start haproxy successful." || echo "Start haproxy failed."
    fi
}
stop(){
    if [ $RUNNING_STATUS -lt 1 ];then
        echo "Haproxy is not running. Stop haproxy failed!"
    else
        kill -9 $(cat $PIDFILE)
           [ $? -eq 0 ] && echo "Stop haproxy successful." || echo "Stop haproxy failed."
        rm -rf $PIDFILE
    fi
}
reload(){
     if [ ! -f $PIDFILE ];then
        echo "No pid file found. Maybe you need to check haproxy status first."
        exit 1
     else
        $PROG -f $CONFFILE -sf $(cat $PIDFILE)
     fi
     
}
status(){
     if [ $RUNNING_STATUS -ge 1 ];then
        PID_NUM=`cat $PIDFILE`
        echo "Haproxy (pid  $PID_NUM) is running..."
     else
        echo "Haproxy is stopped."
     fi
}
check(){
     $PROG -f $CONFFILE -c
}
case $1 in        
     start)
         start
     ;;
     stop)
         stop
     ;;
     restart)
         stop
         start
     ;;
     reload)
         reload
     ;;
     status)
         status
     ;;
     check)
         check
     ;;
     *)
         echo "USAGE: $0 start|stop|restart|reload|check ."
         exit 1
     ;;
esac

测试一下:

[[email protected] ~]# cp haproxy /etc/init.d/
[[email protected] ~]# ll /etc/init.d/haproxy 
-rwxr-xr-x 1 root root 1567 Oct  1 00:06 /etc/init.d/haproxy
[[email protected] ~]# service haproxy status
Haproxy (pid  2575) is running...
[[email protected] ~]# service haproxy stop
Stop haproxy successful.
[[email protected] ~]# service haproxy start
Start haproxy successful.
[[email protected] ~]# service haproxy restart
Stop haproxy successful.
Start haproxy successful.
[[email protected] ~]# service haproxy status
Haproxy (pid  2796) is running...
[[email protected] ~]# service haproxy reload
[[email protected] ~]# service haproxy status
Haproxy (pid  2822) is running...
[[email protected] ~]# service haproxy check
Configuration file is valid
时间: 2024-10-16 09:30:50

Haproxy配置http模式负载均衡的相关文章

apache+inotify-tools+keepalived+lvs-DR模式配置高可用负载均衡集群

环境:虚拟机VMware workstation 9 操作系统:Redhat 5.6 i386 一.keepalived+LVS-DR模式配置高可用负载均衡 拓扑如下: 二.服务器IP配置信息 四台服务器均有VMware虚拟机实现,两台HA主机.两台web服务器.网络方式都设置为NAT模式 1.master:192.168.80.145 2.slaver:192.168.80.137 3.web1:192.168.80.144 4.web2:192.168.80.134 5.VIP:192.16

基于HAProxy+Keepalived高可用负载均衡web服务的搭建

一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进当前的架构中, 同时可以保护web服务器不被暴露到网络上.2.KeepalivedKeepalived 是一个基于VRRP协议来实现的LVS服务高

Haproxy+keepalied实现web负载均衡

一.实验拓扑图: keepalived: keepalived的主要目的是为ipvs提供高可用性,因此keepalived除了能够实现资源转移之外,自身能够调用ipvsadm命令来生成规则,而且还能够检测后端Rserver服务的健康状态检测.keepalived自身就是一个服务 ,启动之后工作在两个节点上(可以是多个节点),一个为当前活动节点,一个为备用节点简称为一主(master)一备(backup).master会不时的向backup传递通告信息(这种通告信息机制是基于vrrp协议),备用节

案例一(haproxy+keepalived高可用负载均衡系统)【转】

1.搭建环境描述: 操作系统: [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角色 虚拟IP haproxy-server 10.0.0.35 主HAProxyServer 10.0.0.40 haproxy-backup 10.0.0.36 备用HAProxyServer webapp1 10.0.0.150 Backend Server 无 webapp2

HAProxy+Keepalived高可用负载均衡

一 基础准备 1.1 部署环境及说明 系统OS:CentOS 6.8 64位 HAProxy软件:HA-Proxy version 1.5.18 Keepalived软件:keepalived-1.3.6.tar.gz 官方链接:http://www.haproxy.org/ (国内可能无法打开) 下载连接:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/ 部署说明:当用户访问对应的域名时,HAProxy能将请求发送到对应的后端主机上,同时当主HA

linux 下Haproxy实现简单四层负载均衡

HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. Haproxy的四层负载均衡搭建 主机规划: server 192.168.1.148  提供haproxy服务 后台  web1  192.168.1.150 web2  192.168.1.136 使用源码包安装 解压: tar -zxvf haproxy-1.4.24.tar.gz 进入到解压目录: cd  haproxy-1.4.24 编译: make TARGE

LVS DR模式 负载均衡服务搭建

LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层,且由内核实现负载转发,效率要比nginx高.     LVS负载均衡包含三种模式: 1. NAT模式(类似路由器,实现外网内网地址映射,负载均衡服务器修改请求包的源以及目的MAC地址和IP地址,发送给实际服务器:负载均衡服务器,修改响应包的源以及目的MAC地址和IP地址,发送给客户端.请求和响应报

Keepalived+HAproxy实现高可用负载均衡

总概:       Keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器       HAProxy提供高可用性

配置MST实现负载均衡

配置MST实现负载均衡 三台交换机SW1.SW2.SW3,共有四个VLAN,此处的链路均为100M链路,现在使用MST 技术,实现SW1 成为VLAN 1.VLAN 2 的根网桥,SW2 成为VLAN 3.VLAN 4 的根网桥,数据包从SW3 流出时要分成两个方向,VLAN 1-2 的数据包转发到SW1 方向,而VLAN 3-4 的数据包转发到SW2方向.并且尽量产生较少的生成树实例,一方面减少CPU 及内存的负担.一方面要实现VLAN 的负载均衡. [实验步骤]   第一部分:配置Ether