赞
踩
(1)HAproxy的简单介绍:
1.HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件;适用于负载大的web站点,这些站点通常又需要会话保持或七层处理。它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上
2.HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接;事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。
3.HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害,这也是其他负载均衡没有的优点
4.HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器.
(2)HAproxy配置文件详解
配置文件主要分为5部分:
global:全局变量的参数,属于进程配置,通常与操作有关
defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件
frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器
Listen :frontend和backend的组合体
实验环境:
Haproxy服务器 172.25.33.1(server1)
后端服务器:172.25.33.2(server2)
172.25.33.3(server3)
(1)下载软件
yum install haproxy -y
#查看安装包 rpm -qa haproxy
#查看安装目录 rpm -ql haproxy
#会生成haproxy用户
(2)修改配置文件
vim /etc/haproxy/haproxy.cfg
systemctl start haproxy
(3)后端服务器的操作:
server2和server3下载httpd
并添加默认发布页面
yum install httpd
vim /var/www/html/index.html
systemctl restart httpd
(4)测试:curl 172.25.33.1,观察能否实现负载均衡
curl 172.25.33.1
(1)修改/rsyslog日志文件
vim /etc/rsyslog.conf
15 $ModLoad imudp
16 $UDPServerRun 514
75 local2.* /var/log/haproxy.log
systemctl restart rsyslog.service
(2)测试,观察日志存储位置:
使用其他主机访问 curl 172.25.33.1
此时,可以在172.25.33.1的主机上查看:
vim /var/log/haproxy.log
(1)修改haproxy配置文件,并重启
vim /etc/haproxy/haproxy.cfg
stats uri /admin/stats #打开监控页面
monitor-uri /monitoruri #显示返回的状态码
systemctl restart haproxy.service
(2)测试:
浏览器查看 172.25.33.1/admin/stats 后端服务器监控页面。当一个服务器挂掉以后,该行会变红
172.25.33.1/monitoruri 查看访问页面的状态码
(3)给该访问页面添加管理用户,并设置刷新页面时间5秒:修改配置文件并重启
vim /etc/haproxy/haproxy.cfg
61 stats auth admin:westos
62 stats refresh 5s
systemctl restart haproxy.service
(4)测试用户管理:浏览器访问172.25.33.1/admin/stats 会出现管理用户登陆页面,并且5秒刷新一次
(1)修改配置文件,并重启:
vim /etc/haproxy/haproxy.cfg
frontend main
bind *:80
acl blcaklist src 172.25.33.250
http-request deny if blacklist
#errorloc 403
default_backend webserver
systemctl restart haproxy.service
(2)直接浏览器刷新以后 为403forbidden
(3)现在设置,当访问拒绝以后,转到其他地方
vim /etc/haproxy/haproxy.cfg
frontend main
bind *:80
acl blacklist src 172.25.33.250
http-request deny if blacklist
errorloc 403 http://172.25.33.1:8080/index.html 会转到本机的8080端口
default_backend webserver
本机下载httpd
yum install httpd
vim /var/www/html/index.html
waiting
vim /etc/httpd/conf/httpd.conf
修改端口号 因为haproxy使用了80,所以改httpd为8080
Listen 8080
重启并测试:
systemctl restart httpd
浏览器访问172.25.33.1 会看到waiting
(1)修改配置文件,并重启
在server1上: frontend main bind *:80 use_backend dynamic if { path_end .php } default_backend static backend dynamic balance roundrobin server web1 172.25.33.2:80 check backend static balance roundrobin server web2 172.25.33.3:80 check systemctl restart haproxy.service
(2)server2和server3的操作:
下载php 并写入默认发布页面
server2:
<?php
phpinfo()
?>
server3:
server3
因为新加了php插件,需要重新加载httpd
systemctl restart httpd
(3)测试:
浏览器访问分别访问:
172.25.33.1/index.php
172.25.33.1
(1)server1中修改配置文件,并注释掉动静分离:
acl read method HEAD
acl read method GET
acl write method POST
acl write method PUT
use_backend dynamic if write
use_backend static if read
重启haproxy httpd
(2)现在有两个用来测试动静分离的页面,放到server2和server3的/var/www/html目录下
[root@server2 html]# ls
index.html index.php upload_file.php upload
[root@server3 html]# ls
index.html index.php upload_file.php upload
[root@server3 html]#
修改上传文件大小
[root@server2 html]# vim upload_file.php
修改第五行为2000000
scp -r index.php upload upload_file.php server3:/var/www/html
修改服务器名称:
[root@server2 html]#vim index.php
修改第五行为server2
同样在server3中修改vim index.php
修改第五行为server3
(3)测试:访问http://172.25.33.1/index.php 读操作一直为server3,点击上传图片 ,在server2 /var/www/html/upload中会有图片存在
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。