haproxy

Haproxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。Haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会保持或七层处理。Haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
haproxy配置
lftp下载haproxy-1.6.11-1.x86_64.tar.gz
[root@server1 ~]#rpmbuild -tb haproxy-1.6.11-1.x86_64.tar.gz
[root@server1 ~]#cd rpmbuild/RPMS/x86_64
[root@server1 ~]#rpm -ivh haproxy-1.6.11-1.x86_64.rpm
[root@server1 ~]#tar -zxf haproxy-1.6.11-1.x86_64.tar.gz
[root@server1 ~]# cd haproxy-1.6.11/examples
[root@server1 examples]# cp content-sw-sample.cfg /etc/haproxy/haproxy.cfg
[root@server1 ~]# groupadd -g 200 haproxy
[root@server1 ~]# useradd -M -d /etc/haproxy -s /sbin/nologin -g 200 -u 200 haproxy
[root@server1 ~]# mkdir /var/lib/haproxy
[root@server1 ~]# usermod -d /var/lib/haproxy/ haproxy
[root@server1 ~]# chown haproxy.haproxy /var/lib/haproxy/
[root@server1 ~]# vim /etc/haproxy/haproxy.log

13 $ModLoad imudp           #接受 haproxy 日志
14 $UDPServerRun 514        #日志文件位置
62 local0.*            /var/log/haproxy.log

[root@server1 ~]# vim /etc/haproxy/haproxy.cfg

18 defaults
 19         mode           http           #默认使用 http 的 7 层模式 tcp: 4 层
 20         log            global         
 21         option         httplog        #http 日志格式
 22         option         dontlognull    #禁用空链接日志
 23         monitor-uri    /monitoruri
 24         maxconn        8000
 25         option redispatch             #当 client 连接到挂掉的机器时,重新分配到健康的主机
 26         timeout connect  5s               #连接超时
 27         timeout server   5s              #服务器端超时
 28         timeout client   30s             #客户端超时
 29         retries          2               #重试 2 次失败认为服务器不可用
 30         stats uri        /admin/stats    # 监控页面地址
 31         stats auth admin:westos          # 管理帐号和密码
 32         stats refresh 5s                 #刷新频率
 34 frontend public
 35         bind           *:80
 36         use_backend    dynamic  if { path_beg /images } #访问以images开头的文件
 37         
 38         #http-request deny if badhost
            #errorloc 403 http://172.25.22.4                 #访问出现403报错是会跳转显示vm4上的内 容
            #redirect location http://172.25.22.4 if badhost #访问重定向
            #use_backend dynamic if { pathh_end .php } #访问.php结尾的文件会自动跳转
            #use_backend dynamic if write          #上传文件
            default_backend dynamic
 40 backend static
 41         balance        roundrobin
 42         server         web1 172.25.22.2:80 check inter 1000
 43 
 44 backend dynamic
 45         balance        roundrobin
 46         server         web2 172.25.22.3:80 check inter 1000

在vm3,vm4上安装php,打开httpd服务
在vm3上 cd /var/www/html/
mkdir images
在里面放一张.jpg类型的图片
mkdir -m 777 upload
vim index.php

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
form>

body>
html>

vim upload_file.php


if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "
"
; } else { echo "Upload: " . $_FILES["file"]["name"] . "
"
; echo "Type: " . $_FILES["file"]["type"] . "
"
; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
"
; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
"
; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>

scp -r upload server3:/var/www/html

vm1上的haproxy配置文件更改后,都需要进行reload生效

进行访问测试
haproxy_第1张图片
haproxy_第2张图片

你可能感兴趣的:(企业部分)