概述
文章目录
- 一、HAProxy(单核)是什么?
- 二、监控管理haproxy服务器的负载均衡
- 三、给haproxy服务器添加日志
- 四、动静态访问分离
- 五、页面重定向
- 5.1 403错误页面重定向
- 5.2 任何错误页面重定向
- 5.3 301永久重定向
- 六、Haproxy的读写分离
一、HAProxy(单核)是什么?
HAProxy是一款提供高可用性、负载均衡以及基于 TCP(第四层) 和 HTTP(第七层) 应用的代理软件, 支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy 特别适用于那些负载特大的 web 站点, 这些站点通常又需要会话保持或七层处理。HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的 web 服务器不被暴露到网络上。
- HAProxy详细介绍
二、监控管理haproxy服务器的负载均衡
实验环境
主机名 | IP | 服务 |
---|---|---|
虚拟机server1 | 172.25.7.1 | haproxy,httpd,代理服务器 |
虚拟机server2 | 172.25.7.2 | httpd,php,后端服务器 |
虚拟机server3 | 172.25.7.3 | httpd,php,后端服务器 |
物理机 | 172.25.7.250 | 测试端 |
搭建一个基本的haproxy服务器
1、在 server1 上面搭建HAProxy服务器,安装haproxy服务 yum install haproxy -y
查看该服务的版本
2、更改配置文件:vim /etc/haproxy/haproxy.cfg
listen admin *:8080
stats enable
stats uri /status # 监控页面地址
stats auth admin:westos # 管理帐号和密码
stats refresh 5s #刷新频率
listen ranran *:80 #监听的实例名称,地址和端口
balance roundrobin #负载均衡算法
server web1 172.25.7.2:80 check
server web2 172.25.7.3:80 check
3、在server1上开启haproxy服务
4、在 server2和server3 上,安装httpd服务且配置web资源。
1)yum install httpd -y
2)vim /var/www/html--》server2/server3
3)systemctl start httpd
5、在物理机测试:curl 172.25.7.1,实现了负载均衡
在物理机浏览器里面测试,进入监控页面:172.25.7.1:8080/status
宕掉server3
监控页面立马会显示
server3的服务重启
监控页面又显示正常
三、给haproxy服务器添加日志
1、更改日志监控的配置文件:vim /etc/rsyslog.conf
$ModLoad imudp #接受 haproxy 日志
$UDPServerRun 514
*.info;mail.none;authpriv.none;cron.none;local2.none /var/log/messages
local2.* /var/log/haproxy.log #日志文件位置
2、重启haproxy和rsyslog服务
3、查看日志
四、动静态访问分离
1、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。
frontend ranran *:80
acl url_static path_beg -i /images (以/images开头 默认根目录)
acl url_static path_end -i .jpg .gif .png (以.jpg .gif .png结尾)
use_backend static if url_static
default_backend app
backend static
server web2 172.25.7.3:80 check
backend app
server web1 172.25.7.2:80 check
server local 172.25.7.1:8000 backup
2、在server3的httpd服务的默认发布目录里,新建images目录,放置.jpg的图片。
3、在server1上安装httpd服务,且更改httpd服务的工作端口为8000,添加web服务的资源
5、当我访问静态资源的时候,服务器去找server3
五、页面重定向
5.1 403错误页面重定向
1、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。
frontend ranran *:80
acl url_static path_beg -i /images
acl url_static path_end -i .jpg .gif .png
acl badhost src 172.25.7.250 ##设定物理机不能访问server1
block if badhost
errorloc 403 http://172.25.7.1:8000 ##注意端口不要冲突,如果是403错误就重定向到 172.25.7.1:8000
use_backend static if url_static
default_backend app
backend static
server web2 172.25.7.3:80 check
backend app
server web1 172.25.7.2:80 check
2、更改server1的web页面
3、在物理机测试:172.25.7.1:8000
5.2 任何错误页面重定向
1、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。
frontend ranran *:80
acl url_static path_beg -i /images
acl url_static path_end -i .jpg .gif .png
acl badhost src 172.25.7.250
redirect location http://172.25.7.1:8000 if badhost #如果出现错误访问就重定向,无论什么错误
use_backend static if url_static
default_backend app
backend static
server web2 172.25.7.3:80 check
backend app
server web1 172.25.7.2:80 check
2、为了实验效果明显更改server1的web页面
3、在物理机测试:172.25.7.1:8000
5.3 301永久重定向
- 301 redirect: 301 代表永久性转移(Permanently Moved);302 redirect: 302 代表暂时性转移(Temporarily Moved ),ps:这里也顺带记住了两个比较相近的英语单词(permanently、temporarily)
- 详细来说,301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
此时我们在物理机测试,发现是302临时重定向
1、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。
frontend ranran *:80
acl westos.org hdr_beg(host) -i westos.org
acl 172.25.7.1 hdr_beg(host) -i 172.25.7.1
redirect code 301 location http://www.westos.org if westos.org
###以westos.org访问 自动重定向 www.westos.org)
redirect code 301 location http://www.westos.org if 172.25.7.1
###以172.25.7.1访问 自动重定向 www.westos.org)
use_backend static if url_static
default_backend app
server web1 172.25.7.2:80 check
2、在物理机浏览器测试:
以172.25.7.1访问 自动跳转到 www.westos.org
以westos.org访问 自动跳转 www.westos.org
六、Haproxy的读写分离
1、给server2和server3安装php : yum install php -y
2、给server2和server3的默认上传目录权限:chmod 777 upload
3、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。
acl read method GET
acl read method HEAD ##两个read write 只用一个就行
acl write method PUT
acl write method POST
use_backend app if write
default_backend static
backend static
server web2 172.25.7.3:80 check
backend app
server web1 172.25.7.2:80 check
server local 172.25.7.1:8000 backup
4、在物理机浏览器测试:172.25.7.1/index.php
客户端上传.jpg图片
就会发现上传到server2
最后
以上就是动听百褶裙为你收集整理的HAProxy——监控管理HAProxy服务器的负载均衡、 添加日志、动静分离、页面重定向、读写分离一、HAProxy(单核)是什么?二、监控管理haproxy服务器的负载均衡三、给haproxy服务器添加日志四、动静态访问分离五、页面重定向六、Haproxy的读写分离的全部内容,希望文章能够帮你解决HAProxy——监控管理HAProxy服务器的负载均衡、 添加日志、动静分离、页面重定向、读写分离一、HAProxy(单核)是什么?二、监控管理haproxy服务器的负载均衡三、给haproxy服务器添加日志四、动静态访问分离五、页面重定向六、Haproxy的读写分离所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复