HAproxy的安装配置及网页的动静分离

HAProxy简介

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

(2)HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

(3)HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。


1.安装haproxy软件包

[root@server1 ~]# yum install -y gcc
[root@server1 ~]# yum install -y rpm-build
[root@server1 ~]# yum install -y pcre-devel
[root@server1 ~]# rpmbuild -tb haproxy-1.6.11.tar.gz  #解压并编译为二进制
[root@server1 ~]# cd rpmbuild/RPMS/
[root@server1 RPMS]# cd x86_64/
[root@server1 x86_64]# rpm -qpl haproxy-1.6.11-1.x86_64.rpm 
[root@server1 x86_64]# rpm -ivh haproxy-1.6.11-1.x86_64.rpm   #忽略依赖性
[root@server1 x86_64]# cd
[root@server1 ~]# tar zxf haproxy-1.6.11.tar.gz   #解压
[root@server1 ~]# cd haproxy-1.6.11
[root@server1 haproxy-1.6.11]# cd examples/
[root@server1 examples]# cp content-sw-sample.cfg /etc/haproxy/haproxy.cfg
[root@server1 examples]# cd /etc/haproxy/
[root@server1 haproxy]# ls
[root@server1 haproxy]# vim /etc/init.d/haproxy   #查看脚本

2.配置haproxy

[root@server1 haproxy]# groupadd -g 200 haproxy   
[root@server1 haproxy]# useradd -u 200 -g 200 -M haproxy   #建立haproxy用户
[root@server1 haproxy]# id haproxy
uid=200(haproxy) gid=200(haproxy) groups=200(haproxy)
[root@server1 haproxy]# vim /etc/security/limits.conf    #限制文件

这里写图片描述

[root@server1 haproxy]# vim haproxy.cfg

这里写图片描述
这里写图片描述

3.测试

打开服务:
【server1】
[root@server1 haproxy]# /etc/init.d/haproxy  start
【server2】【server3】打开httpd服务

这里写图片描述
这里写图片描述
【健康检查】
这里写图片描述
【监控】
这里写图片描述

调度算法

1.roundrobin : 基于权重轮循。
2.static-rr : 基于权重轮循。静态算法,运行时改变无法生效
3.source : 基于请求源IP的算法。对请求的源IP进行hash运算,然后将结果与后端服务器的权重总数想除后转发至某台匹配服务器。使同一IP客户端请求始终被转发到某特定的后端服务器。
4.leastconn : 最小连接。(适合数据库负载均衡,不适合会话短的环境)
5.uri : 对部分或整体URI进行hash运算,再与服务器的总权重想除,最后转发到匹配后端。
6.uri_param : 根据URL路径中参数进行转发,保证在后端服务器数量不变的情况下,同一用户请求分发到同一机器。
7.hdr() : 根据http头转发,如果不存在http头。则使用简单轮循。

[root@server1 haproxy]# vim /etc/rsyslog.conf 

这里写图片描述
这里写图片描述

[root@server1 haproxy]# /etc/init.d/rsyslog restart
[root@server1 haproxy]# vim haproxy.cfg

这里写图片描述

测试:

这里写图片描述
不进行轮询,只能访问到server2,这是算法的作用


网页动静分离

[server3]主机

[root@server3 ~]# yum install -y php
[root@server3 ~]# cd /var/www/html
[root@server3 html]# vim index.php
[root@server3 html]# /etc/init.d/httpd restart

这里写图片描述
[server1]主机

[root@server1 ~]# cd /etc/haproxy
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy reload

这里写图片描述
这里写图片描述
在网页访问http://172.25.40.1/index.php
这里写图片描述
在网页访问http://172.25.40.1/index.html
这里写图片描述

网站访问都是server1主机IP
访问index.html就会转到server2主机的解析上,访问以.php结尾的网站自动转接到server3主机上的解析。


重定向:

[root@server1 haproxy]# yum install -y httpd
[root@server1 haproxy]# vim /etc/httpd/conf/httpd.conf #更改端口为8080

这里写图片描述

[root@server1 haproxy]# cd /var/www/html
[root@server1 html]# vim index.html
[root@server1 html]# /etc/init.d/httpd restart

这里写图片描述

[root@server1 ~]# cd /etc/haproxy
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy reload

这里写图片描述
访问http://172.25.40.1:8080/
这里写图片描述
测试:
这里写图片描述

网页重定向:

[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy reload

这里写图片描述
测试:
1.可以直接在网页上访问172.25.40.1就可以直接跳转到www.baidu.com
2.这里写图片描述


读写分离:

图片上传:

[root@server2 ~]# cd /var/www/html
[root@server2 html]# mkdir images
由主机传进一个图片
[root@foundation40 Desktop]# scp redhat.jpg [email protected]:/var/www/html/images

访问http://172.25.40.1/images/redhat.jpg
这里写图片描述
当访问server1时,可以看到server2主机的images下的图片

图片下载:

[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy reload

这里写图片描述

[root@foundation40 Desktop]# scp  -r upload [email protected]:/var/www/html
[root@foundation40 Desktop]# scp  -r upload [email protected]:/var/www/html

在【server2】和【server3】里做以下相同的配置

[root@server3 ~]# cd /var/www/html
[root@server3 html]# ls
[root@server3 html]# cd upload/
[root@server3 upload]# ls
[root@server3 upload]# mv * ..
[root@server3 upload]# cd ..
[root@server3 html]# ls
[root@server3 html]# chmod 777 upload
[root@server3 html]# ll

这里写图片描述
【server2】主机

[root@server2 html]# yum install -y php
[root@server2 html]# vim upload_file.php 
[root@server2 html]# /etc/init.d/httpd restart

这里写图片描述
访问http://172.25.40.2/
这里写图片描述
这里写图片描述
测试:
这里写图片描述
在server2主机上下载,存储在server3主机中

猜你喜欢

转载自blog.csdn.net/Argued_D/article/details/81410608