安装
yum install -y haproxy
测试主机
前端
172.25.41.1:80----------haproxy
后端
172.25.41.1:8080------错误展示页面
172.25.41.2:80----------server1
172.25.41.3:80----------server2
轮询访问
编辑配置文件内容如下
frontend main
#acl url_static path_beg -i /static /images /javascript /stylesheets
#acl url_static path_end -i .jpg .gif .png .css .js
bind *:80
#use_backend static if url_static
default_backend webserver
backend webserver
balance roundrobin#轮询
server web1 172.25.41.2:80 check
server web2 172.25.41.3:80 check
重新启动服务
systemctl restart haproxy.service
查看结果
日志记录
打开UDP端口
$ModLoad imudp
$UDPServerRun 514
拷贝/etc/haproxy/haproxy.cfg中的日志格式,写入/etc/rsyslog.conf文件中
local2.* /var/log/haproxy.log
重新启动日志服务,访问haproxy主机,查看结果
状态查询
# 监控页面
stats uri /admin/stats
# 监控页面查看用户:密码
stats auth admin:octopus
# 监控页面刷新时间
stats refresh 2s
#状态码
monitor-uri /monitoruri
重启服务,查看页面
监控页面
|
状态码返回值
访问控制列表
设置acl列表
acl blacklist src 172.25.41.254
设置黑名单
http-request deny if blacklist
重启服务,访问测试
本机安装apche,设置主页面内容,设定端口为8080,作为错误展示页面
设置访问失败重定向页面
errorloc 403 http://172.25.41.1:8080/index.html
测试访问结果
动静分离
在后端服务器上均安装php,同时编辑index.php文件,并重启apache
<?php
phpinfo();
?>
修改配置文件/etc/haproxy/haproxy.cfg,添加动静分离配置
frontend main
bind *:80
# php结尾的页面交给动态
use_backend dynamic if { path_end .php }
# 默认静态
default_backend static
backend dynamic
balance roundrobin
server web1 172.25.41.2:80 check
backend static
server web2 172.25.41.3:80 check
重新启动haproxy,查看结果
读写分离
编辑配置文件/etc/haproxy/haproxy.cfg
frontend main
bind *:80
# 读写方式
acl read method HEAD
acl read method GET
acl write method PUT
acl write method POST
# 访问控制
use_backend dynamic if write
use_backend static if read
default_backend static
backend dynamic
balance roundrobin
server web1 172.25.41.2:80 check
backend static
server web2 172.25.41.3:80 check
下载相应的php测试文件,测试结果(注意区分server2和server3,同时赋予上传目录权限(777),否则可能图片无法上传)
server3展示
server2接受上传文件