HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。
一、准备三台主机(配置好网关及ip地址)
第一台主机
外网地址 172.16.24.100
内网地址 192.168.24.1
第二台主机
192.168.24.11
第三台主机
192.168.24.22
第二台,第三台的主机的网关指向第一台主机的内网地址。
route add default gw 192.168.24.1
二、配置过程
1)配置第二台主机
1、安装上php、php-mysql、并给web提供一个页面。
#vim /var/www/html/text.html
<h1>node1.edu.com</h1>
第三台主机的配置和第二台一样
2)安装配置haproxy
[root@contron ~]# yum install haproxy
[root@contron ~]# cd /etc/haproxy
[root@contron haproxy]# cp haproxy.cfg haproxy.cfg.back
[root@contron haproxy]# vim haproxy.cfg
global #全局配置段
log 127.0.0.1 local2
chroot /var/lib/haproxy #修改haproxy的工作目录至指定的目录。可以提升haproxy的安全级别。
pidfile /var/run/haproxy.pid #定义pid言文件所放位置。
maxconn 4000 #性能调整参数,设定每个haproxy进程所接受的最大并发连接数
user haproxy #以指定的用户运行haproxy
group haproxy #以指定的组过行haproxy
daemon #让haproxy以守护进程的方式工作于后台。
stats socket /var/lib/haproxy/stats
defaults #代理相关的配置段,为所有其它的配置段提供默认参数。
mode http #设定运行模式或协议(通常有{tcp|http|health})
log global #启动事件和流量日志(定义为global表示没有额外的参数)
option httplog #启用记录HTTP请求、会话状态和计时器的功能。
option dontlognull #不记录健康检查的日志信息。
option http-server-close #让服务器端想启用保持连接时的必须选项
option forwardfor except 127.0.0.0/8 #
option redispatch #severID对应的服务器挂掉后,强制定向到其它的健康的服务器
retries 3 #尝试3次连接失败就认为服务器不可用,主要通过后面的check检查。
timeout http-request 10s #客户端如果10钟没有发请求就段开连接
timeout queue 1m #在对列钟等待的超时时长
timeout connect 10s #haproxy将客户端请求发往后端服务器后所等待的超时时长。
timeout client 1m #客户端一次的最大一次非活动连接时长
timeout server 1m #服务器端非活动状态的超时时长
timeout http-keep-alive 10s #保持连接的超时时长
timeout check 10s #实现健康检测时的超时时长
maxconn 30000 #每个sever默认的最大并发连接数
listen starts
mode http # http的七层模式
bind 0.0.0.0:1080 #监听端口
stats enable #启用基于程序编译时默认设置的统计报告。
log global
option httpclose
option logasap
option dontlognull
capture request header Host len 20 #指定捕获的请求主机报文首部
capture request header Referer len 60 # header的Referer属性里面获取上次提交的URL信息
default_backend servers #指定认使用的默认后端服务器组。
frontend websrv *:80
default_backend webserver
backend webserver
balance roundrobin
server node1 192.168.24.11:80 check
server node2 192.168.24.22:80 check
[root@contron haproxy]# service haproxy start
Starting haproxy: [ OK ]
[root@contron haproxy]# ss -tnl #查看80端口是否启动
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::111 :::* LISTEN 0 128 *:111 *:* LISTEN 0 128 *:80 *:* LISTEN 0 128 *:42578 *:* LISTEN 0 128 :::22 :::*
验证
三、使用haproxy配置上游服务器动静分离
1)为每台服务器提供一个php测试页面(192.168.24.11、192.168.24.12)
#vim /var/www/html/index.php
<?php
phpinfo();
?>
2)修改haproxy的配置文件
[root@contron ~]# vim /etc/haproxy/haproxy.cfg
frontend http-in
bind *:80
mode http
log global
option httpclose
option logasap
option dontlognull
capture request header Host len 20
capture request header Referer len 60
acl url_static path_beg -i /static /p_w_picpaths /javascript /stylesheets
acl url_static path_end -i .jpg .jpeg .gif .png .css .js .html
use_backend static_servers if url_static
use_backend dynamic_servers if url_php
default_backend dynamic_servers
backend static_servers
balance roundrobin
server node1 192.168.24.11:80 check maxconn 6000
backend dynamic_servers
balance roundrobin
server node2 192.168.24.22:80 check maxconn 1000
3)重启haproxy服务,并验证结果
[root@contron ~]# service haproxy reload
实验结果
四、配置shaproxy统计页面的输出机制;
1)编辑haproxy配置文件添加如下内容:
[root@contron ~]# vim /etc/haproxy/haproxy.conf
listen stats
mode http
bind 0.0.0.0:1080
stats enable
stats hide-version
stats uri /haproxyadmin?stats
stats realm Haproxy\ Statistics
stats auth admin:admin
stats admin if TRUE
2)实验结果
转载于:https://blog.51cto.com/8519539/1405173