
haproxy是一款提供负载均衡的代理服务器,它可基于modetcp 实现伪四层调度,还可以基于modehttp实现七层调度,类似于nginx,因为他没有web服务所以不像nginx那样进行控制。
通过ACL访问控制列表,匹配客户端的请求,和服务器的转发进行控制
官方网站:https://cbonte.github.io/haproxy-dconv/
实验
HAproxy服务器ip:192.168.1.102(这里若隐藏后端服务器的ip,这需要设定两个ip,一个公网,一个私网)(haproxy是一个纯粹的反代,他没有web服务),后端服务器:192.168.1.104 192.168.1.105
1 同步时间 #systemctl start chronyd.service
2 后端服务器安装http服务或使用nginx
yum install http -y
给一个测试网页:
# vim /var/www/html/index.html
<h1>server 1 </h1>
#systemctl start httpd.service 启动服务
3安装haproxy
配置文件:/etc/haproxy/haproxy.cfg
配置文件中配置分为几段:
1 全局配置段 global (设置自己的进程特性)通用的默认配置
进程及安全配置
性能参数配置
debug参数
用户列表
2 代理配置段 proxy 用于将用户请求代理后端的
代理配置段分四类字段:
default: 是为backend和listen 这两段 提供默认配置
fronted: 对前端服务器的配置
backend: 对后端服务器的配置
listen:设定frented与backend两者是一 一对应的,这段同时拥有前端和后端的配置,是一对一的,这样其他人就不能调度该后端里
日志:haproxy它本身没有日志功能,日志需要rsyslog或syslog 日志服务来配合
vim /etc/haproxy/haproxy.cfg
日志设定: log 127.0.0.1 local2 指定本地日志服务器local2
log 127.0.0.1 local2
这需要在rsyslog配置文件中做配置 可能日志服务器中的local2 没有启动
vim /etc/rsyslog.conf
$ModLoad imudp 取消注释 基于udp 记录日志
$UDPServerRun 514 基于udp 描述端口
local2.* /var/log/haproxy.log
重启日志服务器:systemctl restart rsyslog.service (514端口处于监听)
反代配置
srv1 只是内部使用的id (这里不是主机名)
启动服务:systemctl start haproxy.service
curl http://192.168.1.102 访问测试
负载均衡:
backend websrvs
balance roundrobin 轮询
server srv1 192.168.1.104:80 check
server srv2 192.168.1.105:80 check
重启服务: # systemctl restart haproxy.service
访问:curl http://192.168.1.102
for i in {1.. 10} ; do curl http://192.168.1.102/ ; done
参数:
在global 设置参数 这些参数多数不需要改
1 chroot: 与安全相关(假的根环境)以chroot运行
2 ca-base 若基于ssh回话的ca认证相关
3 cpu-map cpu绑定类似于nginx的worker进程与cpu的绑定
4 log 指定日志
5 maxconn 最大单进程并发连接数
6 maxconnrate 速率
7 noepoll 不使用epoll机制