Haproxy实现负载均衡,网页重定向,访问请求动静分离,上传下载分离

安装:

共有三种方式安装haproxy:
方式一:yum install -y haproxy.x86_64
方式二:

get haproxy-1.6.11.tar.gz 
tar zxf haproxy-1.6.11.tar.gz
less README     #查看文档来安装
make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy    #编译
make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy install  #安装
#找到配置文件模板
cp /root/haproxy-1.6.11/examples/content-sw-sample.cfg /etc/haproxy/
cd /etc/haproxy
mv content-sw-sample.cfg haproxy.cfg

方式三:

cp /root/haproxy-1.6.11.tar.gz /root/rpmbuild/SOURCES
cd /root/haproxy-1.6.11/examples/
rpmbuild -bb haproxy.spec
cd rpmbuild/RPMS/x86_64/
[root@server1 x86_64]# ls
haproxy-1.6.11-1.x86_64.rpm
rpm -ivh haproxy-1.6.11-1.x86_64.rpm
#和上面一样获取配置文件

cat /etc/sysconfig/network #查看network是否为yes
修改配置文件如下:

global       #全参数的设置
        maxconn         65535    #设置最大连接数 
        stats socket    /var/run/haproxy.stat mode 600 level admin
        log             127.0.0.1 local0  #全局的日志配置
        uid             200  
        gid             200
        chroot          /var/empty           #改变当前的工作目录
        daemon                            #以守护进程的方式运行haproxy

defaults
        mode            http     #默认的模式(tcp/http/health),tcp是四层,http是7层,health只会返回ok
        log             global   #应用全局的日志配置
        option          httplog   #应用日志记录http请求,默认haproxy不会记录http请求日志
        option          dontlognull#启用该项,日志将不会记录空连接
        monitor-uri     /monitoruri
        maxconn         8000
        timeout client  30s  
        #bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem 
         bind            172.25.92.100:80 name clear   #监听主机和端口
        acl bad src 172.25.92.250
        acl read method GET
        acl read method HEAD
        acl write method PUT
        acl write method POST
        #http-request deny if bad
        #errorloc 403 http://172.25.92.9:80     
        #redirect location http://172.25.92.9:80

        #use_backend     static if { hdr_beg(host) -i img }
        #use_backend     static if { path_beg /img /css   }
        #use_backend dynamic if { path_end .php }       
        #use_backend dynamic if { path_beg /images }
        use_backend static if write
        default_backend dynamic

# The static backend backend for 'Host: img', /img and /css.
backend dynamic
        balance         roundrobin
        server          web1 172.25.92.2:80 check inter 1000
        server          web2 172.25.92.3:80 check inter 1000

根据配置文件需要设置haproxy的最大并发链接数:

和nginx相同,从三个层面设置:
内核层面:
[root@server1 haproxy]# sysctl -a | grep file
fs.file-nr = 544    0   188465
fs.file-max = 188465                      #此处内核所支持的最大连接数已满足
如果不满足需要修改配置文件:
vim /etc/sysctl.conf  
  7 net.ipv4.ip_forward = 1             #开启内核路由功能
系统层面:
vim /etc/security/limits.conf        #最后一行添加
    haproxy          -      nofile          65535
应用层面:
vim /etc/haproxy/haproxy.cfg 
     最大连接设置为65535

配置负载均衡:

        default_backend dynamic

# The static backend backend for 'Host: img', /img and /css.
backend dynamic
        balance         roundrobin
        server          web1 172.25.92.2:80 check inter 1000
        server          web2 172.25.92.3:80 check inter 1000

测试:
server2和server3上均开启apache服务:
这里写图片描述
这里写图片描述
可以看见以轮询的方式访问server2和server3!

在浏览器查看后端主机的情况并添加访问控制:
vim /etc/haproxy/haproxy.cfg
添加内容如下:
这里写图片描述
/etc/init.d/haproxy restart
在浏览器访问:
这里写图片描述
这里写图片描述
可以通过图形街界面查看后端主机的健康状况。

日志配置:

vim /etc/rsyslog.conf 
 13 $ModLoad imudp
 14 $UDPServerRun 514

42*.info;mail.none;authpriv.none;cron.none;local0.none;                /var/log/mes    sages
62 local0.*                               /var/log/haproxy.log
/etc/init.d/rsyslog restart

日志查看:
这里写图片描述

添加访问控制

这里写图片描述
172.25.254.92主机在浏览器端就不能访问:172.25.92.1了

所以对限制访问的主机添加提示页面:错误访问时重定向:

如果遇见403的错误代码就重定向

[root@server1 haproxy]# vim haproxy.cfg
这里写图片描述


[root@server1 haproxy]# vim /var/www/html/index.html
error
[root@server1 haproxy]# /etc/init.d/httpd start
测试:访问时会跳转到172.25.92.1:8080/index.html

直接重定向:

vim /etc/haproxy/haproxy.cfg
这里写图片描述

动静分离

[root@server1 haproxy]# vim haproxy.cfg
这里写图片描述

server2上:
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# ls
index.html
[root@server2 html]# cat index.html 
sesrver2
server3上:
[root@server3 html]# ls
index.php
[root@server3 html]# cat index.php 
<?php
phpinfo()
?>

测试:
这里写图片描述
这里写图片描述
即实现了动静分离访问。

上传下载分离:

vim /etc/haproxy/haproxy.conf
配置文件修改如下:
这里写图片描述
这里写图片描述

在server2和server3上:
[root@server2 html]# ls #两者相同
index.php upload upload_file.php
测试:
这里写图片描述

这里写图片描述
这里写图片描述
即使用server3上传图片(访问动态页面),却上传到server2上了(静态请求)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值